如何正确输出游戏

时间:2014-01-21 00:26:11

标签: java if-statement

我一直试图修复我的蛇和梯子代码。例如,如果Player1在游戏板上的位置是98并且他滚动5 Player1的位置应该是97.所以,(100-98 = 2,(5-2)= 3,100-3 = 97)。我一直试图将这个实现到我的代码中,可能是player1或者player2的滚动次数超过100。

我的代码:

System.out.println (player1+" Rolled a " + P1Roll ); 
   System.out.println (player2+" Rolled a " + P2Roll); 
   //If player1 position is greater than 100
      if(P1Position+P1Roll>100){
        P1=100-P1Position;
        difference=P1Position-P1Roll;
        P1Position=100-difference;
    }    
    //If palyer2 position is greater than 100
    else if(P2Position+P2Roll>100){
        P2 = 100-P2Position;
        difference=P2Position-P2Roll;
        P2Position=100-difference;
    }    

   System.out.println ("------------------------------------------------------------------------");

   //calculate player positions 
   P1Position = P1Position + P1Roll;      
   P2Position = P2Position + P2Roll;
   //call position methods
   P1Position = Player1(P1Position, P1Roll, snakes, ladder, arrow);           
   P2Position = Player2(P2Position, P2Roll, snakes, ladder, arrow);
  //Print out players current positions
   System.out.println("==========================================================================");                       
   System.out.println (player1+" is currently on square " + P1Position);
   System.out.println (player2+" is currently on square " + P2Position); 
   System.out.println("==========================================================================");     

2 个答案:

答案 0 :(得分:0)

尝试删除播放器1之后的else,除非在1个播放器滚动后调用方法。

(另一种说法:两个玩家都滚动,然后移动它们?如果是,请移除else。如果玩家1滚动,然后更新,则保留else。我没有看到任何其他错误。)

else语句将条件视为:“玩家1的位置加上滚动大于100?如果是,请执行此阻止,就是这样。如果玩家1的位置加上滚动 NOT 大于100,尝试下一个块“。因此,如果玩家1必须使用if块进行“操纵”,则玩家2可能永远不会发生移动。

我希望我的回答不会太混乱。

答案 1 :(得分:0)

根据你的计算,它应该是

difference=P1Roll-P1;

对于玩家2:

difference=P2Roll-P2;

并针对所有情况尝试这种更简单的方法:

P1Position = 100 - Math.abs(P1Position + P1Roll - 100);