if (isStar){//游戏开始时才开始动,后一节身体走到前一节身体上 for (int i=length-1;i>0;i--){ snakeX[i]=snakeX[i-1]; snakeY[i]=snakeY[i-1]; } //蛇头的运动 if("R".equals(direction)){ snakeX[0]+=25; } if("L".equals(direction)){ snakeX[0]-=25; } if("U".equals(direction)){ snakeY[0]-=25; } if("D".equals(direction)){ snakeY[0]+=25; } //蛇的越界处理 if (snakeX[0]>750) { snakeX[0]=25; } if (snakeX[0]<100){ snakeX[0]=750; } if (snakeY[0]<100){ snakeY[0]=720; } if (snakeY[0]>725){ snakeY[0]=100; }优化这段代码
时间: 2024-02-10 19:20:06 浏览: 18
可以将判断方向的 if 语句改成 switch 语句,这样可以提高代码的可读性和运行效率。同时,可以将越界处理的 if 语句合并成一个 if-else 语句,这样可以减少判断次数,优化代码。修改后的代码如下所示:
```
if (isStar) {
// 游戏开始时才开始动,后一节身体走到前一节身体上
for (int i = length - 1; i > 0; i--) {
snakeX[i] = snakeX[i - 1];
snakeY[i] = snakeY[i - 1];
}
// 蛇头的运动
switch (direction) {
case "R":
snakeX[0] += 25;
break;
case "L":
snakeX[0] -= 25;
break;
case "U":
snakeY[0] -= 25;
break;
case "D":
snakeY[0] += 25;
break;
default:
break;
}
// 蛇的越界处理
if (snakeX[0] > 750 || snakeX[0] < 100 || snakeY[0] < 100 || snakeY[0] > 725) {
snakeX[0] = (snakeX[0] + 650) % 750 + 25;
snakeY[0] = (snakeY[0] + 525) % 625 + 100;
}
}
```
另外,可以考虑将魔法数字(如 750、25、100、725 等)提取成常量或变量,增强代码的可维护性。