首页
学习
活动
专区
圈层
工具
发布

底弦
EN

Stack Overflow用户
提问于 2014-11-19 15:44:13
回答 1查看 63关注 0票数 0

我在编一个游戏。我的大部分代码运行良好,但我有一些问题。游戏的主旨是有一个初始的组合,然后每个玩家给每个回合“下注”。我必须从组合中减去这些赌注,并在组合为“000”时宣布获胜的球员。我的问题是,第二个赌注(第二个玩家),我无法使减法工作。

下面是我应该得到的一个例子:

代码语言:javascript
复制
initial combination:
333
player one bet:122
211(after substracting digit individually)
player two bet:
211
=000
winner:player one

事情是当说到第二名时,我得到的值是"122“而不是"000”。我只想知道我的代码是否有问题,以及我是否正确地调用了方法(AppliquerCoup),该方法是做子运算的方法。

谢谢!

代码语言:javascript
复制
           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;
  }     
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-19 15:51:04

问题似乎是,当您调用appliquerCoup(combinaison,coup)时,您总是从combinaison中减去coup,这是初始值。您将appliquerCoup的返回值赋值给nouvelleValeur,但从不重新分配combinaison。因此,新的投注将始终从起始值中减去。

你可能会想要换行

代码语言:javascript
复制
do {
    [...]
    nouvelleValeur=appliquerCoup(combinaison,coup);
    System.out.println("=>"+nouvelleValeur);
    num++;  
} while(!nouvelleValeur.equals("000"));
if(nouvelleValeur.equals("000")){ [...] }

代码语言:javascript
复制
do {
    [...]
    combinaison=appliquerCoup(combinaison,coup);
    System.out.println("=>"+combinaison);
    num++;  
} while(!combinaison.equals("000"));
if(combinaison.equals("000")){ [...] }

在您的代码中还有一些其他的风格问题(例如,您可以删除combinaison.equals("000")的检查),但这可能是另一个问题的主题,因为这些问题似乎都没有破坏游戏的功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27020963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档