我在编一个游戏。我的大部分代码运行良好,但我有一些问题。游戏的主旨是有一个初始的组合,然后每个玩家给每个回合“下注”。我必须从组合中减去这些赌注,并在组合为“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;
} 发布于 2014-11-19 15:51:04
问题似乎是,当您调用appliquerCoup(combinaison,coup)时,您总是从combinaison中减去coup,这是初始值。您将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")的检查),但这可能是另一个问题的主题,因为这些问题似乎都没有破坏游戏的功能。
https://stackoverflow.com/questions/27020963
复制相似问题