求改一个双向链表
public class Snake {
Node head;
Node tail;
Dir d = Dir.D;
Snake() {
head = tail = new Node(10,10);
}
public void addHead() {
Node n = null;
switch(d) {
case U :
n = new Node(head.x, head.y-1);
break;
case D :
n = new Node(head.x, head.y+1);
break;
case L :
n = new Node(head.x-1, head.y);
break;
case R :
n = new Node(head.x+1, head.y);
break;
}
n.next = head;
head.prev = n;
head = n;
}
public void addTail() {
}
public void draw(Graphics g) {
for(Node n=head;n!=null;n=head.next) {
n.draw(g);
}
move();//调用这里就程序就死
}
private void move() {
addHead();
}
public void keyPressed(KeyEvent arg0) {
switch(arg0.getKeyCode()) {
case KeyEvent.VK_UP :
d = d.U;
break;
case KeyEvent.VK_DOWN :
d = d.D;
break;
case KeyEvent.VK_LEFT :
d = d.L;
break;
case KeyEvent.VK_RIGHT :
d = d.R;
break;
}
}
private class Node {
int x,y;
int h = Yard.BLOCK_SIZE;
int w = Yard.BLOCK_SIZE;
Node next ;
Node prev ;
Node(int x, int y) {
this.x = x;
this.y = y;
}
public void draw(Graphics g){
Color c = g.getColor();
g.setColor(Color.black);
g.fillRect(x * Yard.BLOCK_SIZE, y * Yard.BLOCK_SIZE, w, h);
g.setColor(c);
}
}
}