2015-02-23 71 views
0

我寫了一個程序,模擬3名參與者之間的決鬥。三名參與者在拍攝時都有不同的準確度。每位參加決鬥的人都會輪流射擊,並遵循相同的策略:每位參與者都會向最有機會擊中他的人發射射擊。該程序完全按照我的要求運行,一直運行到三人中的兩個不參加決鬥,然後打印出決鬥的勝者。在java中運行1000次程序

我的這個程序的下一個任務是打印出1000多次的程序,然後統計每個參與者獲勝的次數。我在設置打印每個決鬥的循環時遇到了一些麻煩。我認爲我應該爲外部循環使用for循環,但是到目前爲止我遇到的問題包括無限循環,或者每次決鬥時結果都非常不一致。

這裏是我的代碼:

public class Duel { 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    Dueler Aaron = new Dueler(); 
    Dueler Bob = new Dueler(); 
    Dueler Charlie = new Dueler(); 

    Aaron.setName("Aaron"); 
    Aaron.setAccuracy(33); 

    Bob.setName("Bob"); 
    Bob.setAccuracy(50); 

    Charlie.setName("Charlie"); 
    Charlie.setAccuracy(100); 

    //Aaron 

     int deathCount = 0; 



    while(deathCount < 2){ 

    if(Aaron.isLiving() == true && Charlie.isLiving() == true){ 
     System.out.println("Aaron shoots first"); 
     System.out.println("Aaron shoots at Charlie"); 
     Aaron.shootAtTarget(Charlie); 
     if(Charlie.isLiving()==false){ 
      System.out.println("Charlie is hit"); 
      System.out.println("Charlie is out"); 
       deathCount++; 
     } 


     if(Charlie.isLiving() == true){ 
      System.out.println("miss"); 
    } 

    }  

    else if(Aaron.isLiving() == true && Charlie.isLiving() == false){ 
     System.out.println("Aaron shoots at Bob"); 
     Aaron.shootAtTarget(Bob); 
     if(Bob.isLiving() == false){ 
      System.out.println("Bob is hit"); 
      System.out.println("Bob is out"); 
      deathCount++; 
     } 

     if(Bob.isLiving() == true){ 
      System.out.println("miss"); 
     } 
    } 


     System.out.println(" "); 

     //Bob 
     System.out.println("Bob shoots next"); 
     if(Bob.isLiving() == false){ 
      System.out.println("Bob has already been hit"); 
     } 

     if(Bob.isLiving() == true && Charlie.isLiving() == true){ 
      System.out.println("Bob shoots at Charlie"); 
      Bob.shootAtTarget(Charlie); 

      if(Charlie.isLiving() == false){ 
       System.out.println("Charlie is hit"); 
       System.out.println("Charlie is out"); 
       deathCount++; 
      } 
      if(Charlie.isLiving() == true){ 
       System.out.println("miss"); 
      } 
     } 

     else if(Bob.isLiving() == true && Charlie.isLiving() == false){ 
      System.out.println("Bob shoots at Aaron"); 
      Bob.shootAtTarget(Aaron); 
      if(Aaron.isLiving() == false){ 
       System.out.println("Aaron is hit"); 
       System.out.println("Aaron is out"); 
       deathCount++; 
     } 
      if(Aaron.isLiving() == true){ 
       System.out.println("miss"); 
      } 

    } 

    //Charlie 
      System.out.println(" "); 
      System.out.println("Charlie shoots last"); 

      if(Charlie.isLiving() == false){ 
       System.out.println("Charlie has already been hit"); 
      } 

      else if(Charlie.isLiving() == true && Bob.isLiving() == true){ 
       System.out.println("Charlie shoots at Bob"); 
       Charlie.shootAtTarget(Bob); 
       if(Bob.isLiving() == false){ 
        System.out.println("Bob is hit"); 
        System.out.println("Bob is out"); 
        deathCount++; 
       } 
      } 
       if(Aaron.isLiving() == false && Bob.isLiving() == false){ 
        System.out.println("Charlie is the winner"); 
        System.out.println(" "); 


        } 
        else if(Aaron.isLiving() == false && Charlie.isLiving() == false){ 
         System.out.println("Bob is the winner"); 
         System.out.println(" "); 


        } 
        else if(Bob.isLiving() == false && Charlie.isLiving()  == false){ 
         System.out.println("Aaron is the winner"); 
         System.out.println(" "); 



         } 



        } 



        } 

謝謝大家的幫助!

回答

4

最簡單的方法是使用for循環。

public static void main(String[] args){ 
    for(int i = 0; i < 1000; i++){ 
    //Insert your code 
    } 
} 

之後,你想擁有每個人贏得多少次全局變量。

int aaronWins = 0; 
int charlieWins = 0; 
int bobWins = 0; 

當您檢查獲勝者時,您將根據贏得的勝利增加一個贏家。 (僞代碼)

if Aaron won: 
    aaronWins++ 

而且在您的for循環之外,您可以打印誰贏了最多。 (Pseudocode)

if aaronWins > charlieWins && aaronWins > bobWins: 
    print "Aaron won the most!"