我正在做一个项目,这个项目正在建立一个数字化的棋盘游戏版本,而我的with循环有一个问题,而这个循环并不像我想象的那样。
基本上,如果--如果玩家手里还剩下1石头,而下一个坑是而不是空的,他们就会捡起下一个坑中的石头,然后继续这样做,直到下一个坑是空的。
现在,我的代码继续,而--下一个坑是空的,而--当 one stone仍然在他们手中时,如果它不是空的,它就不会捡起下一个坑中的石头,它只是添加一个,直到下一个坑是空的。
所以我的代码就快到了,只是不太好。因此,我正在寻找一些帮助来改进当前的代码(在需要工作的代码之上有一个很大的注释)。
如果解释不好,请告诉我,我会尽力重写的。
干杯
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;
}
}
发布于 2018-04-10 13:38:13
而不是有多个嵌套循环。你可能应该更新手中的石头和坑中的石头,让主回路继续正常运行,因为主循环只是游戏的主要逻辑循环:抓取石头,掉进坑里,抓更多的石头,然后重复?,利润!
例:
而不是:
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
}
(注意:我不是百分之百地遵守你要遵守的规则,我只是试着按照你说的去做)
https://stackoverflow.com/questions/49754126
复制相似问题