public void move(){ //蛇身的移动 List<BodyObj>bodyObjList=this.frame.bodyObjList; for(int i=bodyObjList.size()-1 ;i>=1;i--){ bodyObjList.get(i).x=bodyObjList.get(i-1).x; bodyObjList.get(i).y=bodyObjList.get(i-1).y; //蛇头与身体的碰撞判断 if (this.x==bodyObjList.get(i).x && this.y==bodyObjList.get(i).y){ //失败 GameWin.state=3; }优化这段代码
时间: 2024-02-25 22:56:58 浏览: 65
可以将蛇的身体节点移动和碰撞判断拆分成两个方法,提高代码的可读性和易于维护性。具体实现方法可以参考以下代码:
```
public void move() {
List<BodyObj> bodyObjList = this.frame.bodyObjList;
moveBody(bodyObjList);
checkCollision(bodyObjList);
}
private void moveBody(List<BodyObj> bodyObjList) {
for (int i = bodyObjList.size() - 1; i >= 1; i--) {
bodyObjList.get(i).x = bodyObjList.get(i - 1).x;
bodyObjList.get(i).y = bodyObjList.get(i - 1).y;
}
bodyObjList.get(0).x = this.x;
bodyObjList.get(0).y = this.y;
}
private void checkCollision(List<BodyObj> bodyObjList) {
for (int i = 1; i < bodyObjList.size(); i++) {
if (this.x == bodyObjList.get(i).x && this.y == bodyObjList.get(i).y) {
GameWin.state = 3; // 失败
}
}
}
```
这样可以提高代码的可读性和易于维护性,同时还能保证代码的效率和性能。
阅读全文