代码由于处理中的while()而运行速度极慢

时间:2017-07-24 04:54:00

标签: java processing 2d-games

我正在编写一个蛇克隆进行处理,一切进展顺利,直到我插入一个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);
};

1 个答案:

答案 0 :(得分:4)

看看这个循环:

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

只要i大于0,此循环就会继续。但是在循环内部,i只会增加。什么时候会变得低于0?它赢了!所以这个循环永远不会退出。

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

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