2016-10-15 12 views
0

第一篇文章,但我真的需要你的幫助。我已經爲學校編程了大約一個月的c#並獲得了額外的任務。我需要製作一個horse race track game.您可以選擇參加比賽的馬匹數量等等。我的問題在於我製作了一匹馬類。我把在列表如下:我需要從我的馬類的速度值是名單上這裏

 public void maakLijst() 
    { 


     int aantalpaarden = Decimal.ToInt32(nudAantalPaarden.Value); 
     for (int i = 0; i < aantalpaarden; i++) 
     { 
      paarden.Add(new Horse(i)); 
     } 


    } 

而且我可以分配速度一匹馬。像這樣:

private void randomizeSpeed() 
    { 
     Random randomizer = new Random(); 
     int afstand = 0; 
     afstand = Int32.Parse(tbAfstand.Text); 
     foreach (var Horse in paarden) 
     { 
      Horse.setSpeed(randomizer.Next(afstand/7, afstand/5));  // De minimale afstand die de paarden afleggen per timertick, is 1/7e van de totale afstand en de verste afstand is 1/5e 
     } 

    } 

這我測試和它的工作。但是現在我需要獲得速度的價值,以便讓我的圖片盒移動(我知道該怎麼做)。

主要問題是:「我怎樣才能得到 列表中每匹馬的速度?」

編輯1:

這是類:

class Horse 
{ 
    int nummer;  //Number 
    int snelheid; //Speed 
    int afstand; //Distance 

    public Horse() 
    { 
     nummer = 0; 
    } 
    public Horse(int num) 
    { 
     nummer = num; 
    } 

    public void setSpeed(int speed) 
    { 
     snelheid = speed; 
    } 

    public void setDistance(int distance) 
    { 
     afstand = distance; 
    } 

    public int getDistance() 
    { 
     return afstand; 
    } 

    public int getSpeed() 
    { 
     return snelheid; 
    } 

    public int getNummer() 
    { 
     return nummer; 
    } 


} 
+0

首場演出類「馬」,第二你的意思得到什麼?如果你在foreach循環中設置,你也可以用相同的方式獲取它。 –

+0

編輯帖子,並與「獲取」我的意思是我需要每匹馬的速度值與5個圖片框中的1個一起使用。計時器將速度添加到圖片框的每個X位置 –

+1

那麼問題在哪裏。使用'for'循環並使用當前馬的'GetSpeed()'更新圖片框。如果你的圖片框在一個數組中,你可以用循環變量來選擇它們。 –

回答

-1

我的答案很簡單 只是使用相同的塊,你沒有創造一匹馬時。 這樣你可以在運行遊戲循環時獲得每匹馬的速度。

0
void Main() 
{ 
    int numberOfHourses = 10; 
    var hourses = new List<Horse>(); 
    int afstand = 70; 
    Random randomizer = new Random(); 

    for (int i = 0; i < numberOfHourses; i++) 
    { 
     var horse = new Horse(i); 
     horse.setSpeed(randomizer.Next(afstand/7, afstand/5)); 
     hourses.Add(horse); 
    } 

    for (int i = 0; i < numberOfHourses; i++) 
    { 
     // get your hourse speed here: 
     var speed = hourses[i].getSpeed(); 
     Console.WriteLine(speed); 
    } 
} 

class Horse 
{ 
    int nummer;  //Number 
    int snelheid; //Speed 
    int afstand; //Distance 

    public Horse() 
    { 
     nummer = 0; 
    } 
    public Horse(int num) 
    { 
     nummer = num; 
    } 

    public void setSpeed(int speed) 
    { 
     snelheid = speed; 
    } 

    public void setDistance(int distance) 
    { 
     afstand = distance; 
    } 

    public int getDistance() 
    { 
     return afstand; 
    } 

    public int getSpeed() 
    { 
     return snelheid; 
    } 

    public int getNummer() 
    { 
     return nummer; 
    } 
} 

快速注:的一件事情,就是讓你的C#代碼看起來更好,它遵循現有的代碼標準:

請使用PascalCase你所有的方法和屬性和駝峯你的變量。

例如:getSpeed方法的名稱應該是GetSpeed

+0

好的,謝謝,我會試試這個。這是我第一次與列表工作,所以不知道你能存取權限與[] –

+0

沒有問題等等陣列,這是一個*索引*他們使用許多內建的類型,如數組和列表,字典等實際上他們可以實現你自己的班級,以及(可能是這裏的馬類來實現並不需要,雖然) –

+0

是啊,我需要帶班實踐,使我的作業感謝您的幫助,並有一個愉快的一天:d –

0

好感謝您的幫助傢伙,我不知道我可以存取權限只有列表[0]和材料清單。我知道「業餘時間」。第一次使用列表,所以是的。

private void updatePosition() 
    { 
     int aantalpaarden = Decimal.ToInt32(nudAantalPaarden.Value); 

     picRedHorse.Location = new Point(picRedHorse.Location.X + paarden[0].getSpeed(), picRedHorse.Location.Y); 
     picYellowHorse.Location = new Point(picYellowHorse.Location.X + paarden[1].getSpeed(), picYellowHorse.Location.Y); 
     picGreenHorse.Location = new Point(picGreenHorse.Location.X + paarden[2].getSpeed(), picGreenHorse.Location.Y); 
     picBlueHorse.Location = new Point(picBlueHorse.Location.X + paarden[3].getSpeed(), picBlueHorse.Location.Y); 
     picPinkHorse.Location = new Point(picPinkHorse.Location.X + paarden[4].getSpeed(), picPinkHorse.Location.Y); 
    } 

現在我只需要使它而不致崩潰時,我選擇小於5匹馬。但我可以做我自己