Frage von Maassmaenchen, 57

Zufällige zahl in c#?

Hallo, ich bin dabei ein kleines "Spiel" zu programmieren in dem mann zufällig erscheinende Buttons drücken muss nur ich weiß nicht wie ich es mache das immer genau ein zufälliger Button sichtbar und alle anderen unsichtbar sind. Ich hatte die Idee eine Funktion zu machen auf die alle Buttons zugreifen die erst alle Buttons unsichtbar und dann einen wieder sichtbar macht nur ich weiß halt net wie ich einen zufälligen Button auswähle.

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von CrystalixXx, 33

Am einfachsten verwaltest du alle Buttons in einer generischen Liste.

List buttonList = new List();
buttonList.Add(button1);
buttonList.Add(button2);

Dann kannst du dir eine Funktion schreiben, die einen zufälligen Wert zurückgibt und den als Index für deine Liste nutzen. Dabei kannst du dem entsprechend alle anderen Buttons unsichtbar und den ausgewählten sichtbar schalten.

Random rnd = new Random();
int rndValue;
rndValue = rnd.Next(0, buttonList.Count);

for (int i = 0; i < buttonList.Count - 1; i++)
{
buttonList[i].Visible = (rndValue == i);
}
Kommentar von Maassmaenchen ,

DANKE!!!! xD

Kommentar von Maassmaenchen ,

Ehm wo muss ich das obere hinschreiben kann komisch klingen aber muss ich für das obere ne funktion machen oder einfach mitten rein? 

Kommentar von CrystalixXx ,

Das kannst du in den Konstruktor schreiben oder sonst in irgendeiner Initialisierungsmethode.

Kommentar von Maassmaenchen ,

weil der sagt in der fehlerliste das "list" keine definition für "add" hat

Kommentar von CrystalixXx ,

Ich sehe gerade, dass die Webseite Code geschluckt hat.

List<Button> buttonList = new List<Button>();
Kommentar von PWolff ,

Da wahrscheinlich keine Buttons dynamisch nachgeladen werden sollen, würde ich im Deklarationsbereich der Form schreiben:

private Button[] buttonList;

und im Konstruktor

public Form1 {
InitializeComponent();
//sonstige Initialisierungen
buttonList = new Button[]{ button1, button2, ...};
//sonstige Initialisierungen
}

 

Kommentar von PWolff ,

Entweder i < buttonList.count oder i <= buttonList.Count - 1

Sonst gut.

Mögliche Vereinfachungen:

rnd.Next(buttonList.Count)

sowie, falls sich die Liste der Buttons nicht ändert,

Button[] buttonList = new Button[] {button1, button2, button3, ...};

bzw. äquivalent

var  buttonList = new Button[] {button1, button2, button3, ...};
Kommentar von CrystalixXx ,

Das passiert, wenn man mal schnell Code kopiert und danach nochmal ändert. Natürlich wollte ich "i < buttonList.Count" schreiben (ist kürzer). Danke.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten