Snake mit Java erstellen

Ich habe mich entschlossen, Snake mit Java neu zu erstellen, aber ich stecke irgendwie fest. Im Moment habe ich ein Quadrat, das der Benutzer mit den Pfeiltasten über den Bildschirm bewegen kann. Wenn Sie einmal LINKS drücken, bewegt sich das Quadrat mithilfe eines Timers nach links. Sie müssen die Taste nicht gedrückt halten oder gedrückt halten. Es ändert die Richtung, wenn Sie eine der anderen festgelegten Tasten (Rechts, Auf, Ab) drücken. Mein Ziel ist es, eine ArrayList zu verwenden, um die Quadrate zu halten, aus denen die Schlange besteht. Im Moment habe ich eine ArrayList mit nur einem Snake-Objekt erstellt. Wenn ich der Liste ein zweites Snake-Objekt hinzufüge und es dem Frame hinzufüge (mit dem ersten), ist nur ein Snake-Objekt sichtbar und die Tasten müssen bewegt werden es funktioniert nicht. Ich bin auf der Suche nach Ideen, wie ich mit diesem Projekt vorankommen kann. Bitte geben Sie mir nicht die vollständige Antwort, da ich das meiste selbst herausfinden möchte. Ich brauche nur eine Richtung. Vielen Dank im Voraus - Code ist unten.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Snake extends JPanel implements KeyListener, ActionListener
{
int x = 0, y = 0, velx = 0, vely = 0;
Timer t = new Timer(250, this);


public Snake(int num1, int num2)
{
    t.start();
    addKeyListener(this);
    setFocusable(true);
    setFocusTraversalKeysEnabled(true);
    x = num1;
    y = num2;
}
public void paintComponent(Graphics g)
{   
    super.paintComponent(g);

    g.setColor(Color.blue);
    g.fillRect(x, y, 20, 20);
}
public void actionPerformed(ActionEvent e)
{
    repaint();
    x += velx;
    y += vely;
}
public void up()
{
    vely = -20;
    velx = 0;
}
public void down()
{
    vely = 20;
    velx = 0;
}
public void left()
{
    vely = 0;
    velx = -20;
}
public void right()
{
    vely = 0;
    velx = 20;
}
public void keyPressed(KeyEvent e)
{
    int code = e.getKeyCode();

    if(code == KeyEvent.VK_UP)
        up();
    else if(code == KeyEvent.VK_DOWN)
        down();
    else if(code == KeyEvent.VK_RIGHT)
        right();
    else if(code == KeyEvent.VK_LEFT)
        left();

}
public void keyReleased(KeyEvent e)
{

}
public void keyTyped(KeyEvent e)
{

}
}
//Driver Class
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;

public class UserClass
{
private static JFrame frame = new JFrame("Snake");
private static ArrayList<Snake> mySnake = new ArrayList<Snake>();

public static void main(String[] args)
{
    frame.setSize(500,500);
    frame.setBackground(Color.black);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    mySnake.add(new Snake(20,20));
    frame.add(mySnake.get(0));
}
}

PS: Wenn ich denselben genauen Code in Eclipse auf meinem Mac einfüge, ist der Hintergrund meines Rahmens schwarz, aber unter Windows hellgrau ... Weiß jemand, warum? Vielen Dank.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage