Zum Inhalt springen

C# Zufallszahlen in label oder Textbox ausgeben bei Button Klick


Empfohlene Beiträge

Geschrieben

Hallo zusammen,

Jetzt kommt mal wieder eine ziemliche Noob Frage aber ich finde keine Antwort sonst.

Es ist eigentlich ganz leicht ich bin C# Anfänger haben gerade damit erst angefangen und jetzt sollen wir / will ich einen kleinen Würfelsimulator machen.

Es gibt einen Button in der mitte wo man wenn man drauf klickt würfeln soll und rechts und links davon habe ich 2 labels gemacht für 2 zahlen die dann addiert werden und dann in einem 3 label ausgeben werden sollen.

C#-Code: 

void Button1Click(object sender, EventArgs e)

        {

            Random randNum = new Random();

            randNum.Next();


        }  

weiter wie so komm ich aber leider nicht. Ich hoffe auch wenn es nervt das er mir da weiterhelfen könnt bzw die ersten Tipps nennen könnt wie ich das ganze Anstelle bzw die Zahlen in den labels ausgebe.

Vielen lieben dank im vorraus

Nic

Geschrieben

Ist ja erstmal ok. Mit

randNum.Next();

bekommst du eine Zufallszahl, die du einem Integer zuweisen musst... Also in etwa so:
int num = random.Next();
mit
int num = random.Next(1000);
kannst du noch bestimmen, dass die Zufallszahl kleiner als 1000 sein soll. 3. Alternative:
random.Next(min, max); 

Die Zalh, die du dort zurück bekommst, einfach in das Label schreiben.

Geschrieben (bearbeitet)

soooo also ich hab jetzt

void Button1Click(object sender, EventArgs e)

		{

			Random RandomNum = new Random();

			int x = RandomNum.Next();



		}


		void Panel1Paint(object sender, PaintEventArgs e)

		{

					}

jetz muss ich doch nur noch die "x" in den Panel1 ausgeben oder ? Da komm ich aber nich drauf lol ich grig das nich hin ich weiss is jetzt wahrscheinlich voll nooby aber stehe ja noch ganz am anfang.

EDIT: ich glaub eine Zahl kann nicht in einem Panel ausgegeben werden ?

Bearbeitet von Cesareo
Geschrieben

Oki ... hmm ich weiss auch nicht so recht

dennoch sagt er mir auch beim Label

Eine implizite Konvertierung vom Typ "int" in "System.Windows.Forms.Label" ist nicht möglich. (CS0029) -

Also irgendwas fehlt noch :)

Geschrieben

Eine implizite Konvertierung vom Typ "int" in "System.Windows.Forms.Label" ist nicht möglich. (CS0029) -

Du kannst einen Integer-Wert auch nicht in ein Label konvertieren.

Probiers aber mal mit der Eigenschaft "Text" des Labels. :D

Geschrieben

hmmm also muss es noch irgendwie konventiert werden ?

Weil ich möchte ja die gewürfelte zahl wenn man auf den button klickt

in den label ausgeben das er mir das anzeigt.

Geschrieben (bearbeitet)

Juhuuuu ... es würfelt und zeigt es mir :)

Ich habde zu danken :) *schwere geburt Hust* :D

EDIT:

wie kann man es aber ändern das beide würfel nich die selbe zahl würfeln ? lol

Bearbeitet von Cesareo
Geschrieben
Juhuuuu ... es würfelt und zeigt es mir :)

Ich habde zu danken :) *schwere geburt Hust* :D

EDIT:

wie kann man es aber ändern das beide würfel nich die selbe zahl würfeln ? lol

            Random bla = new Random();



            int i = bla.Next();

            int j = bla.Next();


            label1.Text = i.ToString();

            label2.Text = j.ToString();

sollte eigentlich funzen

ansonsten machste einfach

Random bla = new Random();

Random blub = new Random();

int i = bla.Next();

int j = blub.Next();

usw

Geschrieben

void Button1Click(object sender, EventArgs e)

		{

			Random RandomNum1 = new Random();

			Random RandomNum2 = new Random();

			int x1 = RandomNum1.Next();

			int x2 = RandomNum2.Next();

			label1.Text = x1.ToString();

			label2.Text = x2.ToString();

		}

so siehts jetz aus ... ich hab jetz bei Next() keine zahl drin aber nur um zu testen aber wenn man dort zb "10" einträgt dann werden bei beidem würfeln imme rnur die selben zahlen generiert ... also gleichzeitig beide würfeln durchgehend das selbe ....

Geschrieben

sry..

du darfst nur ein random haben

und halt mit next() jeweils dem naechsten int wert zuweisen

Random bla = new Random();

int i = bla.Next();

int j = bla.Next();

Geschrieben

... ich hab jetz bei Next() keine zahl drin aber nur um zu testen aber wenn man dort zb "10" einträgt dann werden bei beidem würfeln imme rnur die selben zahlen generiert ... also gleichzeitig beide würfeln durchgehend das selbe ....

Erzeuge das Random Objekt ausserhalb des Eventhandlers. So bekommst du jedes mal beim Aufruf der Next Methode eine neue Zufallszahl.


public class Irgendwas

{

private Random random = new Random();


void Button1Click(object sender, EventArgs e)

		{

			label1.Text = random.Next().ToString();

			label2.Text = random.Next().ToString();

		}

}

Wenn du mit den Zahlen weiterarbeiten willst, kannst du die Zufallszahlen auch an eine Variable übergeben.

public class Irgendwas

{

private Random random = new Random();

private int zahl1;

private int zahl2;


void Button1Click(object sender, EventArgs e)

		{

			zahl1 = random.Next();

			zahl2 = random.Next();

			label1.Text = zahl1.ToString();

			label2.Text = zahl2.ToString();

		}

}

Variablen, die du innerhalb einer Methode definierst, sind lokal, d.h. sie sind nur innerhalb der Methode gültig.

Probier einfach mal ein wenig aus. Erzeuge dir doch mal eine Liste von Zufallszahlen, und vergleiche, ob sie bei jedem Programmaufruf gleich sind.

Geschrieben

Ich danke sehr für eure Antworten und bis jetzt läuft der Genereator super

allerdings möchte ich jetzt gern noch was hinzufügen wo ich schon wieder ein bisschen feststecke.

Und zwar würde ich die generierten Zahlen gerne in eine Txt Datei abspeichern, wenn möcglich sogar das man über einen Menüpunkt "Log Speichern" dann den ORt der datei auswählen kann und dann halt speichern von allen generierten zahlen. Bis jetzt hab ich das hier als Code:

private void logSpeichernToolStripMenuItem_Click(object sender, EventArgs e)

        {

            /*SaveFileDialog fdlg = new SaveFileDialog();

            fdlg.Title = "Würfelgenerator LOG SAVE";

            fdlg.InitialDirectory = @"c:\";

            fdlg.Filter = "All files (*.*)|*.*|All files (*.*)|*.*";

            fdlg.FilterIndex = 2;

            fdlg.RestoreDirectory = true;*/


            StreamWriter WStream = new StreamWriter("WuerfelLog.txt");

            File.Create(@"C:\******\test.txt");

            WStream.Write(z3);

            WStream.Close();
mit dem StreamWriter wollte ich eine Datei machen ohne den FileBrowser aber das haut auch nich so hin "z3" is die ergebniss zahl der würfel wenn sie zusammen gezählt werden. Mit:
public static void WriteAllText(

string "C://Test.txt"

string x1, x2;

)

bekomm ich das aber auch nicht hin. ICh bitte nochmals um hilfe :)

Dangöööö

Nic

Geschrieben

Hol dir mittels des Dialogs einfach den vom User gewünschten Dateinamen.

Danach einfach mit einem BufferedWriter das Ganze in eine Text-Datei schreiben.

Hab jetzt leider keine IDE hier, aber mit dem Stichwort "BufferedWriter" solltest du genug finden

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...