帕奇斯(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
相关产品推荐
相关产品推荐

