繁体   English   中英

while循环的问题

[英]Problems with while loops

我正在制作一个项目,正在构建一个棋盘游戏的数字化版本,我遇到了一个问题,一个while循环没有像我预期的那样。

基本上, 如果玩家手中剩下一块石头 ,并且下一个坑不是空的,他们会拿起下一个坑石并继续这样做,直到下一个坑为空

现在,我的代码继续, 下一个坑是空的, 一块石头仍在他们的手中,但是,如果它不是空的话,它不会拾取下一个坑石头,它只是添加一个,直到下一个坑空。

所以我的代码几乎就在那里,只是不完全。 所以我正在寻找一些帮助来改进当前的代码(在需要工作的代码之上的一个重要评论)。

如果解释很差,请告诉我,我会尽力重写它。

干杯

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%遵守你要求的规则,只是试着按照你所说的去做)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM