2016-10-15 5 views
0

ここに最初の投稿がありますが、本当に助けが必要です。私は約1ヶ月間学校のためにC#をプログラミングしていましたが、余分な割り当てがありました。私は作る必要がありますhorse race track game.レースに参加している馬の数を選ぶことができます。私の問題はクラス馬を作ったことです。私はこのようなリストに入れます:私はHorseクラスからSpeed値を取得する必要があります。

 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メソッド名は、ヘルプ私はちょうどリストでリストをアクセスも知らなかった男[0]とスタッフのためのGetSpeed

+0

よろしくお願いいたします。私はこれを試してみます。これはリストを使った私の初めてのことですので、[] –

+0

と同じ配列にアクセスすることはできませんでした。これは配列やリスト、辞書などの多くの組み込み型で使用する*インデクサー*です。あなた自身のクラスに実装することもできます(おそらくここでは馬のクラスに実装する必要はありません) –

+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頭未満の馬を選択するとクラッシュしないようにする必要があります。しかし、私はそれを自分で行うことができます

関連する問題