我正在编写一个蛇克隆进行处理,一切进展顺利,直到我插入一个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);
};
答案 0 :(得分:4)
看看这个循环:
while(i > 0){
posX[1] = posX[0];
posY[1] = posY[0];
i++;
}
只要i
大于0
,此循环就会继续。但是在循环内部,i
只会增加。什么时候会变得低于0
?它赢了!所以这个循环永远不会退出。
为了更准确,它只会在数字变得太大以至于溢出并以最小值重新开始时退出。
另请注意,由于您在此循环中甚至不使用i
变量,因此您根本不需要循环。