Autor Beitrag
Eredom
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 23.11.12 18:35 
Hey
bin ganz neu hier und auch noch relativ neu im Thema C# allgemein!

Aber egal also mein Problem:

Ich möchte dass ein Programm je nach Zufallszahl einen gewissen Programmcode ausführt!
Also wenn zB
ausblenden C#-Quelltext
1:
2:
Random RR = new Random();
Zahl = RR.Next(14);

zum beispiel 2 ergibt soll das Programm den Code 2 von 3 durcharbeiten!
ich würde ungern mit If-Else arbeiten da das in der Größenordnung die ich vorhabe viel zu viel Programmiercode wäre!

Gibt es eine möglichkeit den Code irgendwie zu schreiben und dann "Einzubetten"

am besten so dass alle Variablen funktionieren!

Gruß
Eredom

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
jfheins
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 918
Erhaltene Danke: 158

Win 10
VS 2013, VS2015
BeitragVerfasst: Fr 23.11.12 19:08 
Vielleicht hilft dir switch-case?
msdn.microsoft.com/d...tc147t(v=vs.80).aspx
Eredom Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 23.11.12 19:19 
Mein problem ist dass ich einen recht langen Programmcode habe und wenn ich alle zusammenzähle nicht 3 verschiedene möglichkeiten sondern etwa 30... die auch an mehreren stellen einsatz finden!

Man könnte den code natürlich jedes mal erneut schreiben aber das ergebnis wäre einfach nur ein unfassbar langer und unübersichtlicher code... daher würde ich den code gern irgendwo ablegen und dem Programm dann quasi sagen "lese jetzt den und den code"

aber dieser switch-case sieht so schonmal gut aus das kann man sicher auch verwenden
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 23.11.12 19:42 
Hallo Eredom :welcome:

inwieweit ähnelt sich denn der Programmcode?
Kennst du denn schon Methoden? Du könntest ähnliche Funktionalitäten in einzelne Methoden kapseln und diese dann mittels des switch-case Konstrukts aufrufen.

Evtl. könntest du ja mal ein bißchen Code davon hier posten.
Eredom Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 23.11.12 20:04 
Es soll eine art Textbasiertes Spiel werden:
ausblenden volle Höhe C#-Quelltext
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:
private void button1_Click(object sender, EventArgs e)
{
            //Runde Start//
            RSchaden = Level * 25;
            //Zufallsschaden//
            Random ZS = new Random();
            ZSchaden = ZS.Next(Level * -10, Level * 11);
            ZuSchaden = (Convert.ToDouble(RSchaden) + Convert.ToDouble(ZSchaden)) * (Convert.ToDouble(Angriffskraft) / Convert.ToDouble(100));
            Schaden = RSchaden + ZSchaden + Convert.ToInt32(ZuSchaden);
            label12.Text = Convert.ToString(Schaden);
            LebenG = LebenG - Schaden;
            label11.Text = Convert.ToString(LebenG);
            try
            {
                progressBar2.Value = LebenG;
            }
            catch
            {
                progressBar2.Value = 0;
            }
            Combopunkte = Combopunkte + 1;
            label16.Text = Convert.ToString(Combopunkte);
            //Gegnerangriff startet//
            RSchadenG = LevelG * 25;
            ZSchadenG = ZS.Next(LevelG * -10,LevelG * 11);
            try
            {
                Random AusW = new Random();
                Ausweichen = Convert.ToDouble(label31.Text);
                Ausweichchance = Level * (Ausweichen / 1000);
            }
            catch
            {
            }
            SchadenG = RSchadenG + ZSchadenG;
            label13.Text = Convert.ToString(SchadenG);
            Leben = Leben - SchadenG;
            label10.Text = Convert.ToString(Leben);
            try
            {
                progressBar1.Value = Leben;
            }
            catch
            {
                progressBar1.Value = 0;
            }


Hier soll ein Button einen Angriff auslösen auf den der Gegenspieler mit einem Gegenangriff reagiert! Nun möchte ich dass zufällig ein Angriff aus einer Liste ausgewählt wird und dieser dann eingesetzt wird!

ähnlich soll es auch später mit den Spielerangriffen laufen also dass der spieler sich quasi ein paar angriffe raussucht und die dann mit buttondruck ausgelöst werden

Bin noch relativ neu und Methoden an sich hab ich noch nicht gelernt (Informatikunterricht und so) und ich will auch nicht warten bis des irgendwann mal kommt denn der lehrer... ist nicht sonderlich gut (Streamreader/Writer musste ich mir selbst beibringen) von daher glaub ich kaum dass der mir das beibringen kann

Edit: Würde gern den Quelltext so markieren finde aber nicht wo xD

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 23.11.12 21:22 
Hallo,

also wenn du wirklich 30 verschiedene Angriffsmöglichkeiten so ausprogrammieren willst, dann wird es wirklich sehr unübersichtlich.
Eigentlich unterscheidet man in der (C#-) Programmierung zwischen GUI und Logik (Modell), d.h. man erstellt sich extra Klassen, welche die Spiellogik implementieren und die GUI zeigt nur die Werte an. Aber da du noch nicht einmal eigene Methoden kennst, dann wohl auch noch nicht das Erstellen von eigenen Klassen.
Ich frage mich aber, wieso es gleich WinForms sein muß. Üblicherweise fängt man ersteinmal mit der Konsole an, um die Grundlagen der (C#-)Programmierung zu erlernen (Abfragen, Schleifen, ..., Klassen, Methoden, Eigenschaften, Ereignisse, ...).
Und gerade ein textbasiertes Adventure wäre hierfür gut geeignet.

Ich kann dir nur raten, ersteinmal ein gutes Buch (wie das kostenlose Online-OpenBook Visual C#) durchzuarbeiten, bevor du hier mit diesem Projekt weitermachst.
Denn zumindestens Methoden (und Parameter) solltest du begreifen und erstellen können, dann würde dein Code dann auch übersichtlicher werden.
Als Beispiel:
ausblenden C#-Quelltext
1:
2:
int schaden = BerechneSchaden();
ZeigeSchaden(schaden);

Ich hoffe, ich habe dir jetzt nicht die Energie genommen, aber du würdest nach kurzer Zeit selber nicht mehr durch deinen Code durchfinden und dann nur unnötig Zeit mit der Fehlersuche verbringen.

P.S. Unter www.galileocomputing...enbook/?GPP=opcsharp gibt es auch das Buch als ZIP (Offline-HTML-Seiten) zum Download.

PP.S. Code formatieren geht über "Bereiche" ('+'-Button am Anfang und am Ende deines Codes drücken)

Für diesen Beitrag haben gedankt: Eredom
Eredom Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 23.11.12 21:28 
Danke für die Antwort :)

Die Motivation nimmst du mir damit nicht ich werd mich da nochmal ein bisschen an die materie setzen und versuchen das ganze mal umzuschreiben (nachdem ich das buch gelesen habe :D)

Keine weiteren fragen, danke für die Hilfe :)