我正在编写游戏。我的大多数代码工作正常,但我有一些问题。游戏的要点是有一个初始组合,然后每个玩家每回合都会给出“下注”。我必须从组合中减去这些赌注,并在组合为“000”时宣布获胜的玩家。我遇到的问题是第二次下注(玩家二),我无法让减法工作。
以下是我应该得到的一个例子:
initial combination:
333
player one bet:122
211(after substracting digit individually)
player two bet:
211
=000
winner:player one
事情是,当涉及到玩家二时,我得到的值是“122”而不是“000”。我想知道我的代码是否有问题,以及我是否正确调用了方法(appliquerCoup),这是减法的方法。
谢谢!
do{
if(num%2==0){
System.out.println(MessagesTp2.COUP_DU_JOUEUR1);
}else{
System.out.println(MessagesTp2.COUP_DU_JOUEUR2);
}
coup=Clavier.lireString();
rep=coupEstValide(combinaison,coup);
while(rep!=true){
System.out.println(MessagesTp2.COUP_INVALIDE);
coup=Clavier.lireString();
}
nouvelleValeur=appliquerCoup(combinaison,coup);
System.out.println("=>"+nouvelleValeur);
num++;
}while(!nouvelleValeur.equals("000"));
if(nouvelleValeur.equals("000")){
if(num%2==0){
System.out.println(MessagesTp2.GAGNANT_JOUEUR1);
}else{
System.out.println(MessagesTp2.GAGNANT_JOUEUR2);
}
}
}
public static String appliquerCoup(String combinaison,String coup) {
String nouveauCoup = "";
if(combinaison!=null&&coup!=null){
for(int i = 0; i < combinaison.length(); i++) {
int a = Integer.parseInt(combinaison.substring(i, i + 1));
int b = Integer.parseInt(coup.substring(i, i + 1));
int c = a - b;
if(c < 0){
c=0;
}else{
c=c;
}
nouveauCoup+=String.valueOf(c);
}
}
return nouveauCoup;
}
答案 0 :(得分:0)
问题似乎是,当您致电appliquerCoup(combinaison,coup)
时,您总是从coup
中减去combinaison
,这是初始值。您将appliquerCoup
的返回值分配给nouvelleValeur
,但永远不会重新分配combinaison
。因此,新赌注将始终从起始值中减去。
您可能想要更改行
do {
[...]
nouvelleValeur=appliquerCoup(combinaison,coup);
System.out.println("=>"+nouvelleValeur);
num++;
} while(!nouvelleValeur.equals("000"));
if(nouvelleValeur.equals("000")){ [...] }
到
do {
[...]
combinaison=appliquerCoup(combinaison,coup);
System.out.println("=>"+combinaison);
num++;
} while(!combinaison.equals("000"));
if(combinaison.equals("000")){ [...] }
您的代码还有其他一些风格问题(例如,您可以删除对combinaison.equals("000")
的检查),但这可能是另一个问题的主题,因为这些问题似乎都不是gamebreaking。