我正在对蛇克隆进行编程,直到插入一个while()函数,一切都进行得很好,现在游戏无法以应有的5 fps运行。我已经尝试了一切,但似乎无法解决问题,有人知道发生了什么吗?

int playerX = 400;
int playerY = 400;
void setup(){
  size(1350,655);
  frameRate(5);
    noStroke();

};

int[] posX = {playerX,playerX-17};


int[] posY = {playerY,playerY};

void draw(){
  background(0,0,0);

  if (keyCode == UP) {  playerY -= 17;};
  if (keyCode == DOWN) {  playerY += 17;};
  if (keyCode == LEFT) {  playerX -= 17;};
  if (keyCode == RIGHT) {  playerX += 17;};

  int i = posX.length;
  while(i>0){
  posX[1] = posX[0];
  posY[1] = posY[0];
  i++;};


  posX[0] =playerX;
  posY[0] =playerY;

snakeBlock(posX[0],posY[0]);

snakeBlock(posX[1],posY[1]);
};

void  snakeBlock(int snakeX,int snakeY){
  fill(255,2550);
  rect(snakeX,snakeY,15,15);
};

最佳答案

看一下这个循环:

while(i > 0){
  posX[1] = posX[0];
  posY[1] = posY[0];
  i++;
}


只要i大于0,此循环就会继续进行。但是在循环内部,i仅增加。什么时候变得小于0?不会的!因此,此循环将永远不会退出。

更准确地说,它只会在数字变得太大而溢出并以最小值重新开始时退出。

还要注意,由于在该循环中甚至没有使用i变量,因此您根本不需要循环。

10-08 19:38