2015-10-05 124 views
0

我剛剛開始學習如何在C Sharp中編寫代碼。我們有一個課程項目,我們需要製作一個程序,它是一個1到100之間隨機數的猜測遊戲。我有這個工作(目前用於測試,我只做1-10),但我想去一個通過基本代碼並添加一些我自己的代碼。我有四個標籤,其中兩個用詞來描述它們的用途,另外兩個用於我想要更改數據。假設你猜的是1到100之間,你猜25和低到了,你猜的最高數字是低的,我希望顯示的是,如果你猜一個像70這樣的數字,並且它到高我相同希望顯示在標籤上。這似乎很容易,但我沒有任何運氣。因爲我不確定錯誤在哪裏,所以我將編寫我的整個代碼。請注意,由於代碼無法正常工作,因此我只會將其設置爲較低的編號,直到我找出結果。如何使用按鈕和文本框來更改標籤?

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class frmMain : Form 
    { 
     Double count = 0; 
     int randomNumber; 
     Random rand = new Random(); 





     public frmMain() 
     { 
      InitializeComponent(); 
      randomNumber = rand.Next(10) + 1; 
      lblLowShow.Text = "0"; 
      lblHighShow.Text = "100"; 
     } 

     private void btnGuess_Click(object sender, EventArgs e) 
     { 
      count++; 
      int guessedNumber; 
      guessedNumber = int.Parse(txtEnterGuess.Text); 

      if (guessedNumber > randomNumber) 
       { 
       MessageBox.Show("To High! Please try again"); 
       } 

      if (guessedNumber < randomNumber) 
       { 
        int lowguess; 
        MessageBox.Show("To Low! Please try again"); 
        lowguess = Convert.ToInt32(lblLowShow); 

        if (guessedNumber < lowguess) // Changes the number of the highest, low guess that is displayed. 
         { 
          string LowShow; 
          LowShow = lowguess.ToString(); 
          lblLowShow.Text = LowShow; 
         } 
       } 

      else 
       { 
        MessageBox.Show("Congratulations! You won in " + count + " tries!"); 
        count = 0; 
        randomNumber = rand.Next(10) + 1; 
       } 


     } 

     private void btnExit_Click(object sender, EventArgs e) 
     { 
      this.Close(); 
     } 

     private void btnNewGame_Click(object sender, EventArgs e) 
     { 

     } 
    } 
} 

Visual Studio是沒有做任何的紅點,以顯示在代碼中的錯誤,所以這不是幫助我追查錯誤(或多個)。

+0

這裏有什麼確切的問題?你能解釋一下嗎? – Slashy

+0

當我輸入一個數字並運行代碼時,比如說我輸入了數字2,然後猜中,我收到了這條錯誤消息。 在mscorlib.dll中發生未處理的類型爲「System.InvalidCastException」的異常 其他信息:無法轉換類型爲「System.Windows.Forms.Label」的對象以鍵入「System.IConvertible」。 – Lyght

+0

您需要跟蹤單獨變量中的LAST猜測,並比較該值,而不是比較輸入到標籤等中的值,因此只需添加一個名爲lastGuess的新變量,並將其設置爲「btnGuess_Click」事件中的LAST動作,然後進行比較在與lastRandomNumber再入-same(這些將是模塊級瓦爾) –

回答

0

你缺少的,如果猜測的數越低,則所需數量的條件之前簡單else statment。這就是爲什麼計算機直接進入下一個if陳述並打印出用戶贏得遊戲的消息。

只是這樣的:

  else// 
     if (guessedNumber < randomNumber) 
      { 
       int lowguess; 
       MessageBox.Show("To Low! Please try again"); 
       lowguess = Convert.ToInt32(lblLowShow); 

       if (guessedNumber < lowguess) // Changes the number of the highest, low guess that is displayed. 
        { 
         string LowShow; 
         LowShow = lowguess.ToString(); 
         lblLowShow.Text = LowShow; 
        } 
      } 
+0

謝謝,我也想知道。 – Lyght

+0

@Lyght如果我幫你,我會非常感激,如果你能標記我的答案:)謝謝。 – Slashy

相關問題