2014-03-13 31 views
0

我正在寫一個Rock,Paper,Scissor遊戲,這個遊戲是針對電腦的。它有效,除了兩次贏得三次勝利之後,我想要打破這場比賽。但它保持循環... 我真的很新編程,所以如果代碼是混亂的原因... :(搖滾,紙,剪刀遊戲 - 如何結束遊戲,當一個贏得三次?

而且對雙重職位的一大抱歉,但我的第一篇文章被推回到遠得到一些幫助後,我把它改成英文...

這是主要的:

static void Main(string[] args) 
{ 

    Game ssp = new Game(); 

    Interaction.MsgBox("Welcome!"); 

    string Choice = Interaction.InputBox("Chose Rock, Scissor eller Paper:"); 
    ssp.Start(); 
    ssp.Seewicharethevinner(Choice); 
} 

這與HANDELS遊戲方法的類:

串CompusterChoice;

//Starts the game 
    public void Start() 
    { 
     //Computers hand 
     Random rnd = new Random(); 
     int x = rnd.Next(0, 3); 
     if (x == 0) 
     { DatornsVal = "Rock"; } 
     else if (x == 1) 
     { DatornsVal = "Paper"; } 
     else if (x == 2) 
     { DatornsVal = "Scissor"; } 

    } 

    //Look who will win 
    public void Seewicharethewinner(string _Choice) 
    { 
     string PlayerChoice = _Choice; 
     string _PlayerChoice = _Choice.ToUpper(); 
     string _ComputerChoice = ComputerChoice.ToUpper(); 

     if (_PlayerChoice == _ComputerChoice) 
     { 
      Interaction.MsgBox("Tie!\nYour choice was: " + _Choice + "\n" + "Computer choice was: " + _ComputerChoice); 
     string Choice = Interaction.InputBox("Chose Rock, Scissor eller Paper:"); 
     ssp.Start(); 
     ssp.Seewicharethevinner(Choice); 
     } 

     else if (_ComputerChoice == "ROCK" && _PlayerChoice == "SCISSOR" || _ComputerChoice == "SICSSOR" && _PlayerChoice == "PAPER" || _ComputerChoice == "PAPER" 
      && _PlayerChoice == "ROCK") 

     { 
      Interaction.MsgBox("You Lose!\nYour choice was: " + _Choice + "\n" + "Computer choice was: " + _ComputerChoice); 

      int player = 0; 
      int computer = 1; 
      Points(computer, player); 

     string Choice = Interaction.InputBox("Chose Rock, Scissor eller Paper:"); 
     ssp.Start(); 
     ssp.Seewicharethevinner(Choice); 
     } 

     else if (_ComputerChoice == "ROCK" && _PlayerChoice == "PAPER" || _ComputerChoice == "SICSSOR" && _PlayerChoice == "ROCK" || _ComputerChoice == "PAPER" 
      && _PlayerChoice == "SICSSOR") 
     { 

      Interaction.MsgBox("You won!\nYour choice was: " + _Choice + "\n" + "Computer choice was: " + _ComputerChoice); 
      int player = 1; 
      int computer = 0; 
      Points(computer, player); 

     string Choice = Interaction.InputBox("Chose Rock, Scissor eller Paper:"); 
     ssp.Start(); 
     ssp.Seewicharethevinner(Choice); 
     } 


    } 
    public void Points(int _computer, int _player) 
    { 
     int computerpoints = 0; 
     int playerpoints = 0; 
     if (_computer > _player) 
     { 
      computerpoints++; 
     } 
     else 
     { 
      playerpoints++; 
     } 
     if (computerpoints == 3) 
     { 
      Interaction.MsgBox("Computer won three times!"); 
     } 
     if (playerpoints == 3) 
     { 
      Interaction.MsgBox("You won three times!"); 
     } 
    } 
+0

方法點中的計數器變量應該在方法之外聲明。使用您當前的代碼,您始終將它們設置爲零。 –

+0

我努力把方法點的變異點! 但是遊戲一直在繼續...... :(該死的..:P – user3356636

+0

用你所做的修改編輯你的文章 –

回答

1

點內方法:

int computerpoints = 0; 
int playerpoints = 0; 

如果我正確地讀這篇文章,你一直在呼喚這個點的功能和復位這兩個的本地聲明INT的。

每次調用函數時,這些變量都會初始化爲0。

你應該嘗試使用它代替:

static int computerpoints = 0; 
    static int playerpoints = 0; 

這樣你INT的將不會以0再次初始化。確保將這些變量聲明爲全局變量,所以它們不會超出範圍(不要在方法中聲明它們)。

希望這會有所幫助。

+0

我試過了,但它沒有工作,而他們在哪裏insied的方法指向......但我在外面工作,但他的遊戲一直在循環..:/ – user3356636