我正在制作一个项目,正在构建一个棋盘游戏的数字化版本,而我遇到的问题是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;
}
}
答案 0 :(得分:1)
而不是使用多重嵌套循环。您可能只需要更新手中的宝石和坑中的宝石,让主循环继续正常,因为主循环只是主要的游戏逻辑循环:抓住石头,放入凹坑,抓住更多的石头并重复?,?? ?,盈利!
例如:
而不是:
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%遵守你要求的规则,只是试图按照你所说的去做)