Hallo Zusammen
Ich mache grad den Ein Tag beim Rennen Work Shop vom C# von Kopf bis Fuss Buch. Ich habe es fast hingekriegt bis auf eine Sache. Meine Hunde (pictureboxen) bewegen sich alle gleich Richtung Ziel, obwohl sie sich eigentlich je Hund Random zwischen 1 - 4 Kästchen nach vorne bewegen sollten, damit es am Schluss einen Sieger gibt. Ich glaube der Fehler liegt in der Form1 Klasse. Die Klasse Windhund ist meiner Meinung nach richtig, und liefert das was sie soll. Wo liegt mein Fehler in der Form1 Klasse? Folgend beide Klassen.
Form1:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50:
| using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading;
namespace Mehrere_Pictureboxen_gleichzeitig_bewegen { public partial class Form1 : Form { Windhund[] Hund = new Windhund[4];
public Form1() { InitializeComponent(); for (int i = 0; i < Hund.Length; i++) { Hund[i] = new Windhund(); } Hund[0].Bild = pictureBox2; Hund[1].Bild = pictureBox3; Hund[2].Bild = pictureBox4; Hund[3].Bild = pictureBox5; }
private void button1_Click(object sender, EventArgs e) { bool gewinner = false; int gewinnerHund = 0;
while (!gewinner) { for (int i = 0; i < 4; i++) { if (Hund[i].Laufen()) { gewinner = true; gewinnerHund = i; } } Thread.Sleep(30); } MessageBox.Show("" + gewinnerHund); } } } |
Klasse Windhund:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using System.Drawing;
namespace Mehrere_Pictureboxen_gleichzeitig_bewegen { class Windhund { public int Startposition = 12; public int Rennbahnlänge = 493; public PictureBox Bild = null; public int Ort = 0; public Random Zufallszahl = new Random();
public bool Laufen() { int distanz = Zufallszahl.Next(1, 4); Point p = Bild.Location; p.X += distanz; Bild.Location = p;
if (Bild.Location.X > Rennbahnlänge) return true; else return false; } } } |
Ich habe echt schon alles durchprobiert, aber verzweifle an dieser Randomsache. Bitte gebt mit Lösungsansätze.
Grüsse
interessierter