我正在对蛇克隆进行编程,直到插入一个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
变量,因此您根本不需要循环。