Java while循环的问题
我现在正在做一个项目,它正在构建一个棋盘游戏的数字化版本,我遇到了一个while循环的问题,这个循环没有按照我的预期进行 基本上,如果玩家手上还有1块石头,而下一个坑不是空的,他们会捡起下一个坑的石头并继续这样做,直到下一个坑是空的 现在,我的代码继续,而下一个坑是空的,而他们手中还有一块石头,但是,如果不是空的,它不会拾取下一个坑的石头,它只会添加一块,直到下一个坑是空的 所以我的代码就快到了,只是不太清楚。因此,我正在寻找一些帮助来改进当前代码(在需要工作的代码之上有一个大注释) 如果解释不好,请告诉我,我会尽力重新写 干杯Java while循环的问题,java,Java,我现在正在做一个项目,它正在构建一个棋盘游戏的数字化版本,我遇到了一个while循环的问题,这个循环没有按照我的预期进行 基本上,如果玩家手上还有1块石头,而下一个坑不是空的,他们会捡起下一个坑的石头并继续这样做,直到下一个坑是空的 现在,我的代码继续,而下一个坑是空的,而他们手中还有一块石头,但是,如果不是空的,它不会拾取下一个坑的石头,它只会添加一块,直到下一个坑是空的 所以我的代码就快到了,只是不太清楚。因此,我正在寻找一些帮助来改进当前代码(在需要工作的代码之上有一个大注释) 如果解释不
while(hand == 1 && pit.next.stones != 0 && pit.next.pit == false) {
int stones = pit.next.stones;
for(int i = stones; i >= 1; i--) {
hand++;
}
while(Hand >= 1 && pit.next.stones != 0) {
hand--;
addPieces(pit.next);
pit = pit.next;
}
}
而不是有多个嵌套循环。你可能只需要更新手中的石头和坑里的石头,让主循环继续正常运行,因为主循环只是游戏的主逻辑循环:抓取石头,放入坑中,抓取更多的石头,然后重复?,?,获利 例如: 而不是:
while(hand >= 1 && pit.next != null) {
// ...
while (hand == 1 && pit.next.stones != 0 && pit.next.pit == false) {
int stones = pit.next.stones;
for (int i = stones; i >= 1; i--) {
hand++;
}
while (hand >= 1 && pit.next.stones != 0) {
hand--;
addPieces(pit.next);
pit = pit.next;
}
}
做一些类似于:
while(hand >= 1 && pit.next != null) {
// ...
if(hand == 1 && pit.next.stones > 0 && pit.next.pit == false) {
// update stones in hand
hand += pit.next;
// update stones in pit
pit.next.stones = 0;
}
// let main loop continue
}
(注意:我不是100%同意你的规则,只是试着按照你说的去做)这部分
pit.next.pit==false
很奇怪。首先,这个对象不是布尔值,所以将它与布尔值进行比较很奇怪。如果它是一个布尔值,只需执行!pit.next.pit
而不是pit.next.pit==false
@vincrichaud它是一个布尔值,是MancalaPit的成员。但是命名可能会更好。我想你可能误解了曼卡拉的规则,我不认为当你手上还剩下一块石头的时候你应该这么做。如果你的最后一块石头落在你这边的一个空坑里,你就从相邻的坑里偷取石头,并将它们(连同你的一块)加入计分坑。@Tobb是的,我理解。然而,这是一些课程作业,我们的讲师已经“强化”了规则,因此我们不会公然复制其他曼卡拉游戏。因此,如果最后一块石头落在非空的坑上,你可以用这个坑的石头“重新开始”(将一块石头添加到下一块,以此类推),重复这整个过程直到最后一块石头落在一个空坑里?那不行。当我输入一个玩家想要使用的坑时,游戏流程停止。。。谢谢你的帮助。对不起,它确实有效,我的代码顺序错了。谢谢你,伙计。@JimmyNeedles太棒了!很高兴我能帮忙。