You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

帕奇斯(Parchis)游戏棋子数量超限问题技术求助

帕奇斯(Parchis)游戏棋子数量异常问题排查与解决方案需求

我们正在完成学校项目——开发帕奇斯(Parchis)游戏,目前遇到规则实现问题:按照游戏规则,每种颜色最多只能有4个棋子(Pion),但实际测试中玩家有时会拥有6或7个棋子。

经排查发现问题根源:当同色的两个棋子落在同一方格(Vakje)时,代码将其计为1个棋子,但根据项目要求,多个棋子(包括不同颜色)是允许落在同一方格的。我们需要实现既允许多棋子同格,又保证每种颜色在棋盘上的棋子数量最多为4个的逻辑。

相关代码

Pion类代码

public class Pion {
    private Kleur kleur;

    public Pion(Kleur kleur) {
        this.kleur = kleur;
    }


    public Kleur getKleur() {
        return this.kleur;
    }

    @Override
    public String toString() {
        return "Pion{" +
                "kleur=" + kleur +
                '}';
    }
}

Parchis类核心方法代码

int beurt = 0;
int vakjesInDoel = 0;
public void speel() {
    label33:
    while (!this.einde()) {
        beurt++;
        vakjesInDoel = 0;
        java.util.Iterator var2 = this.spelers.iterator();

        while (true) {
            while (true) {
                Speler speler;

                if (!var2.hasNext()) {
                    continue label33;
                }

                speler = (Speler) var2.next();
                if (speler.type == Type.NORMAAL) {
                    this.basics.drukEenKnop();
                }
                this.currentSpeler = speler;
                this.basics.spelerBeurt(this.currentSpeler);
                ArrayList<Vakje> lijstSpelerPion = currentSpeler.getVakjesMetPion();
                for (int i = 0; i < lijstSpelerPion.size(); i++) {
                    if (currentSpeler.getVakjesMetPion().get(i).getTypeVakje() == TypeVakje.DOEL) {
                        vakjesInDoel++;
                        //TODO kijken of de juiste methode is aangeroepen
                        if(currentSpeler.iterator.hasNext()){
                            int kies = this.currentSpeler.kies(currentSpeler.kleur, currentSpeler.getPionOpBord());
                            this.bord.movePion((Pion) ((Vakje) lijstSpelerPion.get(kies - 1)).getPionList().get(0), (Vakje) lijstSpelerPion.get(kies - 1), 10);
                        }

                    }
                }
                System.out.println("BeurtNR #" + this.beurt + "  Pionnen in spel " + currentSpeler.getPionOpBord() + "  pionnen in doel: " + this.bord.getLandingsbaan().get(7).getPionList().size());
                new Scanner(System.in);
                this.resultaatDobbel = this.dobbelsteen.gooiDobbelsteen();

                for (int aantal_zes = 0; aantal_zes < 2; aantal_zes++) {
                    if (this.resultaatDobbel == 6) {
                        ArrayList<Vakje> lijstVakjesMetPion = this.iterator.verplaats(this.currentSpeler.getKleur());
                        if (currentSpeler.getPionOpBord() < 4) {
                            if (lijstVakjesMetPion.size() > 0) {
                                this.currentSpeler.locatieSpelerPion();
                                int kies = this.currentSpeler.kies(currentSpeler.kleur, currentSpeler.getPionOpBord());
                                this.bord.movePion((Pion) ((Vakje) lijstVakjesMetPion.get(kies - 1)).getPionList().get(0), (Vakje) lijstVakjesMetPion.get(kies - 1), this.resultaatDobbel);
                                if (speler.type.equals(Type.NORMAAL)) {
                                    this.basics.drukEenKnop();
                                    this.resultaatDobbel = this.dobbelsteen.gooiDobbelsteen();
                                   // this.checkResult();
                                } else {
                                    this.resultaatDobbel = this.dobbelsteen.gooiDobbelsteen();
                                    //this.checkResult();
                                }
                            } else {
                                if (speler.type.equals(Type.NORMAAL)) {
                                    this.basics.drukEenKnop();
                                    this.resultaatDobbel = this.dobbelsteen.gooiDobbelsteen();
                                  //  this.checkResult();
                                } else {
                                    this.resultaatDobbel = this.dobbelsteen.gooiDobbelsteen();
                                   // this.checkResult();
                                }
                            }
                        } else {
                            this.currentSpeler.locatieSpelerPion();
                            int kies = this.currentSpeler.kies(currentSpeler.kleur, currentSpeler.getPionOpBord());
                            this.bord.movePion((Pion) ((Vakje) lijstVakjesMetPion.get(kies - 1)).getPionList().get(0), (Vakje) lijstVakjesMetPion.get(kies - 1), this.resultaatDobbel + 1);
                        }
                    }

                }

                if (this.resultaatDobbel == 5 && (currentSpeler.getPionOpBord() < 4)) {
                  /*  if (currentSpeler.getPionOpBord() >= 4) {
                        System.out.println("DIT IS NIET OK ALS JE DIT PRINT");
                    }*/
                    this.bord.addPion(this.currentSpeler.getKleur());
                    System.out.println("Nieuwe Pion toegevoegd op bord");
                } else {
                    ArrayList<Vakje> lijstVakjesMetPion = this.iterator.verplaats(this.currentSpeler.getKleur());
                    if (lijstVakjesMetPion.size() > 0) {
                        this.currentSpeler.locatieSpelerPion();
                        int kies = this.currentSpeler.kies(currentSpeler.kleur, currentSpeler.getPionOpBord());
                        this.bord.movePion((Pion) ((Vakje) lijstVakjesMetPion.get(kies - 1)).getPionList().get(0), (Vakje) lijstVakjesMetPion.get(kies - 1), this.resultaatDobbel);
                    }
                }

我们已经尝试过用if结构限制棋子数量为4,也在Pion类中设置数量上限,但都没有效果。如有疑问可随时沟通。

内容的提问来源于stack exchange,提问作者Quinten Willekens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 00:50:23