2017-04-06 64 views
-1

那麼,我這裏的問題基本上就是它在標題中所說的。我正在嘗試將我的Pl​​ayer2類的布爾值稱爲我在學校中的Tic Tac Toe項目。我認爲值得一提的是我使用「Player Player1,Player2」在Form1.cs的開頭創建我的類的兩個實例Player。我已經在互聯網上閱讀過多篇文章,但所有這些人都試圖調用比他們提供的參數更多的參數。我不明白一個布爾值的真假是多過一個。沒有超載的方法''需要1個參數

在此先感謝。

我的一個按鈕出現此問題。

public void Btn1_Click(object sender, EventArgs e) >{ 

     { 
      if (click1 == 0) 
      { 
      if (Player2.GetActive(true))//(turn == 0) 
       { 
       Btn1.Text = "X"; 
       } 
       else 
       { 
        >Btn1.Text = "O"; 
       } 
       //turn++; 
       click1++; 
      } 
      else 
      { 
       Btn1.Text = Btn1.Text; 
      } 
      display(); 
      checkit(); 
     } 
    } 

這是我的播放器類。

` public class Player 
{ 
    //Characteristics 
    string name; 
    int points; 
    bool Active; 

    //Constructor 
    public Player() { points = 0; Active = true; } 

    //Methods 
    public void SetName(string n) { name = n; } 
    public string GetName() { return name; } 
    public void SetPoints(int p) { points = p; } 
    public int GetPoints() { return points; } 
    public void SetActive(bool a) { Active = a; } 
    public bool GetActive() { return Active; }` 
+0

你調用'GetActive'並傳遞'bool'值簡單類型的代碼。但是'GetActive'方法的定義沒有任何參數:'public bool GetActive(){return Active; }' –

+0

也忘記提及我對編程非常陌生。編程是在我高中課程課程,所以我不上大學或任何東西,因爲我正在學習的一個只有17 –

+1

@JonatanSvedisSvedberg只要改變它'如果(Player2.GetActive())'。 – CNuts

回答

0

這裏,

if(Player2.GetActive(true)) 

要傳遞一個額外的參數(true)的方法GetActive。我們可以從GetActive方法聲明中看到,它不帶任何參數:

public bool GetActive() { return Active; } 
//     ↑ 
//    empty parentheses 

我想你的意思在這裏是什麼「如果Player2.GetActive()是真的......」吧?你並不需要指定你想要的值,如果它是true,只是這樣做是好的:

if (Player2.GetActive()) 

如果你想檢查它是否是假的,呼叫前添加!否定結果:

if (!Player2.GetActive()) 
+0

非常感謝!您解決了我的問題:D –

+0

@JonatanSvedisSvedberg如果您認爲我的答案回答了您的問題,請考慮點擊該複選標記以接受答案! – Sweeper

+0

我知道這是有點題外話,但我想知道,如果你知道隨機化的一個簡單的方法,其PLAYER1或Player2的一個應該是積極的,另一種不是? –

2

你的代碼:

Player2.GetActive(true) 

但是你定義得到積極作爲

public bool GetActive() { return Active; }` 

所以它是正確的,你有沒有一個參數定義的GetActive。

+0

那我該如何解決呢?正如你可能已經注意到的,我是一個非常新手的程序員。 –

+0

不傳真,只是打電話給Player2.GetActive() – BugFinder

0

就像BugFinder所說的,您正在使用該方法來獲取Active-Value,而不是使用該方法來設置值。

因此改變

Player2.GetActive(true) 

Player2.SetActive(true) 

,正如另外:
由於我們是用C#在這裏工作和你的很多方法被調用set和get,我建議你換這些方法是屬性:

public string Name 
{ 
    get { return name; } 
    set { name = value; } 
} 

public int Points 
{ 
    get { return points; } 
    set { points = value; } 
} 

public bool Active 
{ 
    get { return active; } 
    set { active = value; } 
} 

現在,當你要設置的值,則可以鍵入

Player2.IsActive = true; 

,並檢查像

If(Player2.IsActive) 
    //Do Stuff 
相關問題