我正在尝试创建一个蛇克隆作为练习。我画了蛇并添加了运动模式,但是当我按任意键移动时蛇会自己吃掉它。但它不动。该阵列收回起点上的反应堆并且什么也不做。
这是我的蛇类我已经删除了我的评论,因为它们不仅仅是代码而且发布系统不允许我发布
编辑
如果您需要其他班级的任何东西,请告诉我。但我认为我的错误就在这里
编辑 2
添加了整个代码,您只需在新项目中复制粘贴即可重现我的错误。
public class Snake {
List<Point> sPoints;
int xDir,yDir;
boolean isMoving,addTail;
final int sSize = 20, startX = 150 , startY = 150;
public Snake(){
sPoints = new ArrayList<Point>();
xDir = 0;
yDir = 0;
isMoving = false;
addTail = false;
sPoints.add(new Point(startX,startY));
for(int i=1; i<sSize; i++) {
sPoints.add(new Point(startX - i * 4,startY));
}
}
public void draw(Graphics g){
g.setColor(Color.white);
for(Point p : sPoints) {
g.fillRect(p.getX(),p.getY(),4,4);
}
}
public void move(){
if (isMoving) {
Point temp = sPoints.get(0);
Point last = sPoints.get(sPoints.size() - 1);
Point newstart = new Point(temp.getX() + xDir * 4, temp.getY() + yDir * 4);
for (int i = sPoints.size() - 1; i >= 1; i--) {
sPoints.set(i, sPoints.get(i - 1));
}
sPoints.set(0, newstart);
}
}
public int getxDir() {
return xDir;
}
public void setxDir(int x) {
this.xDir = xDir;
}
public int getyDir() {
return yDir;
}
public void setyDir(int y) {
this.yDir = yDir;
}
public int getX(){
return sPoints.get(0).getX();
}
public int getY(){
return sPoints.get(0).getY();
}
public boolean isMoving() {
return isMoving;
}
public void setIsMoving(boolean b) {
isMoving = b;
}
}
下面是点类。只是一些点的 getter setter,对于那些我使用 IntelliJ 自动生成它们的点..(我再次删除了评论)
繁星点点滴滴
慕码人8056858
相关分类