Java实现Code Bullet AI教程:圆点未随机移动反而单向移动求助
问题分析与修复方案
嘿,我一眼就揪出你这个问题的根源了——你的switch移动逻辑里,每个case都漏掉了break关键字!
为什么所有圆点都只朝左下走?
Java里的switch语句有个“贯穿”特性:如果某个case后面不写break,程序不会跳出switch块,会继续执行后面所有case的代码。看你这段移动代码:
switch (direction){ //Slightly simplified here. case 0: this.y--; case 1: this.y--; this.x++; case 2: this.x++; case 3: this.x++; this.y++; case 4: this.y++; case 5: this.y++; this.x--; case 6: this.x--; case 7: this.x--; this.y--; }
不管随机生成的direction是0到7里的哪一个,代码都会一路执行到最后一个case(case7)的逻辑:x--且y--,也就是向左下方移动。这就导致你的随机方向完全没起作用,所有圆点都被迫走同一条路!
怎么修复?
给每个case都加上break,确保匹配到对应方向后,只执行该case的移动逻辑就跳出switch:
switch (direction){ case 0: this.y--; break; case 1: this.y--; this.x++; break; case 2: this.x++; break; case 3: this.x++; this.y++; break; case 4: this.y++; break; case 5: this.y++; this.x--; break; case 6: this.x--; break; case 7: this.x--; this.y--; break; }
加上break之后,每个随机方向就会触发对应的独立移动,你的圆点群体就能按照预期开始随机游走啦。
小建议
- 可以把0-7这些方向数字换成枚举类型,比如
enum Direction { UP, UP_RIGHT, RIGHT, DOWN_RIGHT, DOWN, DOWN_LEFT, LEFT, UP_LEFT },这样代码可读性会高很多,也不容易出错。 - 修复后可以加个打印日志,输出每个圆点的当前方向和移动后的坐标,方便验证逻辑是否正常工作。
内容的提问来源于stack exchange,提问作者V. Red
相关产品推荐
相关产品推荐

