You are not logged in.

wcf.regNote.message

sepp_a_u

Beginner

  • "sepp_a_u" started this thread

Posts: 43

Location: Utzenfeld (Nähe Freiburg i.Br.)

Occupation: Student

  • Send private message

1

Monday, August 13th 2007, 11:48am

[PROBLEM] ausnahmen abfangen

hi @ all

ich hab mal mein erstes prog/spiel geschrieben in c# in der konsole: schere-stein-papier. allerdings hab ich noch ein problem. wenn man 0 eingibt stürzt es ab und wenn man buchstaben statt eine zahl eingibt. ich weiß aber nicht wie ich das umgehen kann. bin noch ein absoluter neuling...:( vll kann mir wer sagen wie ich das machen muss? mit try-catch komm ich irgendwie nicht so richtig hin und kp wie ich es damit machen muss...

hier mal das spiel ;) könnt auch rückmeldung noch geben aber bitte hauptsächlich auf das prob antworten und vll im P.S.: rückmelden

mfg
sepp_a_u has attached the following file:

sepp_a_u

Beginner

  • "sepp_a_u" started this thread

Posts: 43

Location: Utzenfeld (Nähe Freiburg i.Br.)

Occupation: Student

  • Send private message

2

Tuesday, August 14th 2007, 6:24pm

hmm komisches coder board, wenn einem nicht geholfen wird :(

mfg

Prometheus

Administrator

Posts: 3,278

  • Send private message

3

Wednesday, August 15th 2007, 9:27am

Was beschwerst Du dich denn? Kannst Du mir mal erklären wie man helfen soll wenn man lediglich eine .exe geliefert bekommt?

Ich würd mal sagen das Problem bekommst Du gelöst indem Du alle Usereingaben überprüfst und wenn sie nicht 1,2 oder 3 entsprechen dann zurück zum letzten Punkt und eine Meldung ausgeben.
Jedwege Anfragen bitte an Technomausi oder ShaoKhan richten. Dieses Konto ist und bleibt inaktiv.

sepp_a_u

Beginner

  • "sepp_a_u" started this thread

Posts: 43

Location: Utzenfeld (Nähe Freiburg i.Br.)

Occupation: Student

  • Send private message

4

Wednesday, August 15th 2007, 7:19pm

so hier mal de quellcode damit ihr mir helfen könnt:

Source code

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
using System;

class spiel
{
    static void Main()
    {
        string name; //varibable um den namen des spielers zu erfragen und wiederzugeben
        string eingabe; //variable eingabe, für den wert den der spieler eingibt
        int zufallszahl; //variable für zufallszahl, die fürn den pc integriert wird
        int runden = 0; //Variable für angabe der rundenanzahl
        int sieg_pc = 0;
        int sieg_mensch = 0;
        string menue;

        Console.WriteLine("Herzlich Willkommen zum Schere-Stein-Papier-Duell mit Ihrem PC! \n");
        Console.Write("Wie lautet dein Name? ");
        name = Console.ReadLine();
        Console.WriteLine("\nViel Spaß beim Spiel {0} \n", name);
        Console.WriteLine("Um das Spiel zu beginnen bitte Enter drücken");
        
        do
        {
        Console.ReadLine(); //Um Tastendruck abzuwarten
        Console.WriteLine("Wie viele Runden möchtest du spielen, {0}?", name);
        runden = Convert.ToInt32(Console.ReadLine());
       
            for (int i = 0; i < runden; i++)
            {
                Console.WriteLine("Bitte wähle nun deinen Spielgegenstand {0}: \n Schere = 1 \n Stein = 2 \n Papier = 3", name);
                eingabe = Console.ReadLine();

                zufallszahl = new Random().Next(1, 4);  //Computer wählt zufällig zw. 1 und 3 aus

                switch (zufallszahl)
                {
                    case 1: Console.WriteLine("Der Computer hat Schere gewaehlt");
                        if (eingabe == "1")
                        {
                            Console.WriteLine("Schere vs. Schere...Unentschieden!");
                            sieg_mensch++;
                            sieg_pc++;
                        }
                        else if (eingabe == "2")
                        {
                            Console.WriteLine("Schere vs. Stein...{0} hat gewonnen!", name);
                            sieg_mensch++;
                        }
                        else
                        {
                            Console.WriteLine("Schere vs. Papier...{0} hat verloren!", name);
                            sieg_pc++;
                        }
                        break;

                    case 2: Console.WriteLine("Der Computer hat Stein gewaehlt");
                        if (eingabe == "1")
                        {
                            Console.WriteLine("Stein vs. Schere...{0} hat verloren!", name);
                            sieg_pc++;
                        }
                        else if (eingabe == "2")
                        {
                            Console.WriteLine("Stein vs. Stein...Unentschieden!");
                            sieg_pc++;
                            sieg_mensch++;
                        }
                        else
                        {
                            Console.WriteLine("Stein vs. Papier...{0} hat gewonnen!", name);
                            sieg_mensch++;
                        }
                        break;

                    case 3: Console.WriteLine("Der Computer hat Papier gewaehlt");
                        if (eingabe == "1")
                        {
                            Console.WriteLine("Papier vs. Schere...{0} hat gewonnen!", name);
                            sieg_mensch++;
                        }
                        else if (eingabe == "2")
                        {
                            Console.WriteLine("Papier vs. Stein...{0} hat verloren!", name);
                            sieg_pc++;
                        }
                        else
                        {
                            Console.WriteLine("Papier vs. Papier...Unentschieden!");
                            sieg_pc++;
                            sieg_mensch++;
                        }
                        break;

                    default: Console.WriteLine("Ungueltige Auswahl! Waehle bitte 1, 2 oder 3 aus!");
                        break;
                }
            }
            if (sieg_mensch < sieg_pc)
            {
                Console.WriteLine("Schade {0}, du hast leider mit {1} : {2} verloren \n \n", name, sieg_pc, sieg_mensch);
            }
            else if (sieg_mensch > sieg_pc)
            {
                Console.WriteLine("Herzlichen Glückwunsch {0}! Du hast das Spiel mit {1} : {2} gewonnen \n \n", name, sieg_mensch, sieg_pc);
            }
            else
            {
                Console.WriteLine("Unentschieden. Ihr habt beide {0} Runden gewonnen. \n \n", sieg_pc);
            }
            sieg_mensch = 0;
            sieg_pc = 0;

        menue:
        Console.WriteLine("\t \t Was möchtest du nun tun? (Bitte Zahl eingeben) \n\n \t \t ----------------------- \n \t \t |#####################| \n \t \t |# 1.Nochmal spielen #| \n \t \t |# 2.About           #| \n \t \t |# 3.Beenden         #| \n \t \t |#####################| \n \t \t -----------------------");
        menue = Console.ReadLine();
        if (menue == "1")
        {            
        }
        else if (menue == "2")
        {
            Console.WriteLine("\n about: \n \n Schere - Stein - Papier - Spiel v. 1.2 \n Coder: Jodokus \n Code Language: C Sharp (C#) \n Compiler: Microsoft Visual C# Express \n Time needed: ~1.5h \n");
            goto menue;
        }
        else if (menue == "3")
        {
            Console.WriteLine("Danke {0}. Ich hoffe du hattest Spaß!", name);
        }
        else
        {
            Console.WriteLine("Ungültige Auswahl. Bitte das nächste Mal 1, 2 oder 3 auswählen.");
        }
        } 
        while (menue == "1");
        Console.ReadLine();
             
    }
}


mfg

Prometheus

Administrator

Posts: 3,278

  • Send private message

5

Wednesday, August 15th 2007, 9:40pm

OK also Du überwachst zu keinem Zeitpunkt die Eingabe die der User macht. Beim Namen ist das noch relativ egal aber ich würde die Anzahl der Runden schon mal begrenzen auf sagen wir maximal 20 oder so. Dann die Eingabe für die gewählte Aktion 1-3 würde ich abfangen und z.B. wenn der User etwas eingibt was nicht zwischen 1 und 3 liegt dann soll ausgegeben werden "Keine gültige Eingabe, bitte wiederholen" und es wird auf eine neue Eingabe gewartet.

Leider muss ich grade feststellen das ich aus dem Kopf die einfachsten Dinge nicht mehr weiß wie z.B. eine Schleife um das ganze Ding zu legen damit bei einer Falscheingabe auch wieder zurück gesprungen wird und Du nicht den Fehler bis in alle Ewigkeit berücksichtigen musst und die Eingabe immer wieder wiederholen. Ich nehm mir das mal als Anreitz und werd versuchen das kleine Teil mal zu erweitern so das jede eventualität abgefangen wird. Da ich aber erst mal meine Java Bücher finden muss wird das heute Abend ehr nichts mehr :)
Jedwege Anfragen bitte an Technomausi oder ShaoKhan richten. Dieses Konto ist und bleibt inaktiv.

sepp_a_u

Beginner

  • "sepp_a_u" started this thread

Posts: 43

Location: Utzenfeld (Nähe Freiburg i.Br.)

Occupation: Student

  • Send private message

6

Thursday, August 16th 2007, 11:33am

danke sehr nett...ich weiß nämlich leider auch nicht weiter. es würde mir auch schon reichen, wenn du mri sagen würdest, was ich wo einbauen muss. dann würde ich es selbst versuchen und wenn es nicht klappt könntest du mir dann mal deine lösung geben oder so.

mfg

wcf.user.socialbookmarks.titel