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



BeitragVerfasst: Fr 28.09.07 20:19 
Hey,
ich bin noch ziemlich neu in C# und soll ein kleines (einfaches) Spiel schreiben, und zwar: Schere, Stein, Papier.
Bin ganz zufrieden damit, nun jetzt soll ich es so anstellen, dass man nicht mehr 1, 2 oder 3 eingibt.
Sondern mit den Pfeiltasten hoch und runter klickt und dann mit "enter" bestätigt.
Der Text der gerade "angepeilt" ist soll rot angezeigt werden.
Sprich kurz bevor man enter zum bestätigen klickt soll der text rot werden, gehe ich mit den pfeiltasten runte, wird der darunterliegende text rot und der text zuvor wieder zu seiner ursprünglichen farbe.
Wie stelle ich das an?
Hoffe mir kann jemand helfen.

grüße sljnx

Hier mein Code:

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:
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:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class ConsoleApplication1
    {
        static void Main(string[] args)
        {
            #region Anfang
            Console.BackgroundColor = ConsoleColor.DarkBlue;
            Console.Clear();
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.SetCursorPosition(306);
            Console.WriteLine("Geben Sie ihren Namen ein!");
            Console.SetCursorPosition(308);
            Console.WriteLine("Ihr Name:");
            Console.SetCursorPosition(408);
            Console.ForegroundColor = ConsoleColor.Yellow;
            string spielertmp = Console.ReadLine();
            Console.Clear();
            do
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.Title = "| Schere Stein Papier - Spiel";
                Console.SetCursorPosition(306);
                Console.WriteLine("-------------------");
                Console.SetCursorPosition(307);
                Console.WriteLine("| Willkommen {0}", spielertmp);
                Console.SetCursorPosition(308);
                Console.WriteLine("| Drücken Sie für:");
                Console.SetCursorPosition(309);
                Console.WriteLine("| Schere = 1");
                Console.SetCursorPosition(3010);
                Console.WriteLine("| Stein = 2");
                Console.SetCursorPosition(3011);
                Console.WriteLine("| Papier = 3");

                int zufallszahl = new Random().Next(14);
                Console.SetCursorPosition(3012);
                Console.WriteLine("| >>> Ihre Wahl?");
                Console.SetCursorPosition(3013);
                Console.WriteLine("-------------------");
                bool ok;
                int iZahl = 0;
                do
                {
                    try
                    {
                        Console.SetCursorPosition(4712);
                        iZahl = Convert.ToInt32(Console.ReadLine());
                        Console.Clear();
                        ok = true;
                    }
                    catch
                    {
                        Console.Clear();
                        Console.Title = "| Schere Stein Papier - Spiel";
                        Console.SetCursorPosition(306);
                        Console.WriteLine("-------------------");
                        Console.SetCursorPosition(307);
                        Console.WriteLine("| Willkommen!");
                        Console.SetCursorPosition(308);
                        Console.WriteLine("| Drücken Sie für:");
                        Console.SetCursorPosition(309);
                        Console.WriteLine("| Schere = 1");
                        Console.SetCursorPosition(3010);
                        Console.WriteLine("| Stein = 2");
                        Console.SetCursorPosition(3011);
                        Console.WriteLine("| Papier = 3");
                        Console.SetCursorPosition(3012);
                        Console.WriteLine("| >>> Ihre Wahl?");
                        Console.SetCursorPosition(3013);
                        Console.WriteLine("-------------------");
                        Console.SetCursorPosition(2515);
                        Console.WriteLine("Fehler! Sie sollen eine Zahl eingeben!");
                        ok = false;

                    }
                }
                while (!ok);


            #endregion


                #region Schere


                if (1 <= iZahl && iZahl <= 3)
                {
                    if (zufallszahl == 1)
                    {
                        Console.Clear();
                        Console.SetCursorPosition(2515);
                        Console.WriteLine("Sie haben Schere gewählt!");
                        Console.SetCursorPosition(2516);
                        Console.WriteLine("Der PC hat Schere gewählt!");
                        if (iZahl == 1)
                        {
                            Console.SetCursorPosition(2517);
                            Console.WriteLine("Unentschieden! Niemand hat gewonnen!");

                        }
                        else if (iZahl == 2)
                        {
                            Console.SetCursorPosition(2517);
                            Console.WriteLine("Glückwunsch sie haben gewonnen!");
                        }

                        else if (iZahl == 3)
                        {
                            Console.SetCursorPosition(2517);
                            Console.WriteLine("Der PC gewinnt!");
                        }
                    }
                #endregion

                    #region Stein
                    else if (zufallszahl == 2)
                    {
                        Console.Clear();
                        Console.SetCursorPosition(2515);
                        Console.WriteLine("Sie haben Stein gewählt!");
                        Console.SetCursorPosition(2516);
                        Console.WriteLine("Der PC hat Stein gewählt!");
                        if (iZahl == 1)
                        {
                            Console.SetCursorPosition(2517);
                            Console.WriteLine("Schade! Der PC hat gewonnen!");
                        }
                        else if (iZahl == 2)
                        {
                            Console.SetCursorPosition(2517);
                            Console.WriteLine("Unentschieden! Leider hat niemand gewonnen!");
                        }
                        else if (iZahl == 3)
                        {
                            Console.SetCursorPosition(2517);
                            Console.WriteLine("Glückwunsch! Sie haben gewonnen!");
                        }

                    }
                    #endregion

                    #region Papier
                    else if (zufallszahl == 3)
                    {
                        Console.Clear();
                        Console.SetCursorPosition(2515);
                        Console.WriteLine("Sie haben Papier gewählt!");
                        Console.SetCursorPosition(2516);
                        Console.WriteLine("Der PC hat Papier gewählt!");
                        if (iZahl == 1)
                        {
                            Console.SetCursorPosition(2517);
                            Console.WriteLine("Sie haben gewonnen!");
                        }
                        else if (iZahl == 2)
                        {
                            Console.SetCursorPosition(2517);
                            Console.WriteLine("Der PC gewinnt!");
                        }
                        else if (iZahl == 3)
                        {
                            Console.SetCursorPosition(2517);
                            Console.WriteLine("Unentschieden!");
                    #endregion

                            #region Rest
                        }
                    }

                }
                else
                {
                    Console.Clear();
                    Console.SetCursorPosition(2515);
                    Console.WriteLine("Geben sie bitte 1, 2 oder 3 ein!");
                }
            } while (true);


                            #endregion
        }

    }
}


Moderiert von user profile iconUGrohne: Code- durch C#-Tags ersetzt
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 30.09.07 16:10 
Hallo!

Ich denke, irgendwann ist es nicht mehr sinnvoll, mit der Konsole zu arbeiten. Es erinnert mich zwar irgendwie an meine ersten Arbeiten mit Turbo Pascal, aber das ist jetzt auch schon über 10 Jahre her.

Ich würde daher dringend raten, eine GUI mittels WinForms zu erstellen. Du investierst sonst zuviel Zeit in Makulatur.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
sljnx Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: So 30.09.07 16:36 
ja danke.
aber das problem ist, dass ich C# in der Schule lerne, und wir das erstmal so mit der console machen sollen...

mfg sljnx
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 30.09.07 16:54 
Hm, da weiß ein Lehrer aber, wie er den Spaß am Programmieren verdirbt :-?

Was Du machen musst, ist, dort, wo bisher die Zahl eingegeben wird, mittels Console.ReadKey die gedrückte Taste abzufragen und entsprechend die Variable iZahl zu erhöhen oder zu vermindern. Je nachdem, welchen Wert iZahl hat, schreibst Du die entsprechende Zeile in Rot. Wird Enter gedrückt, fährst Du mit dem Programm fort.

Die gedrückte Taste bekommst Du ziemlich leicht. ReadKey liefert einen Wert vom Typ ConsoleKeyInfo zurück, der hat eine Eigenschaft Key, welche Du auf Werte wie z.B. ConsoleKey.UpArrow prüfen kannst.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
sljnx Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: So 30.09.07 18:04 
erstmal danke für die SEHR hilfreiche antwort.
Nun meine Frage da ich es nicht wirklich hinbekommen habe...
Könntest du mir ein kleines knappes beispiel schreiben?

Hier mein Versuch:

ausblenden 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:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Ihre Wahl");
            Console.WriteLine("Schere");
            Console.WriteLine("stein");
            Console.WriteLine("Papier");
            ConsoleKeyInfo x;
            x = Console.ReadKey();
            if (x == ConsoleKey.UpArrow)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Test");
            }
            else
            {
                return;
            }
        }
    }
}


EDIT: Mein Beispiel hat nicht funktioniert mit der Fehlermeldung:
"Der Operator "==" kann nicht auf Operanden vom Typ "System.ConsoleKeyInfo" und "System.ConsoleKey" angewendet werden."

Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 30.09.07 18:22 
Die Fehlermeldung kommt daher, dass x nicht vom Typ ConsoleKey, sondern vom Typ ConsoleKeyInfo ist. x hat aber eine Eigenschaft Key, welche vom Typ ConsoleKey ist. MIt der sollte der Vergleich funktionieren.

Vielleicht kommst Du ja erst einmal alleine weiter? Ich muss gestehen, dass ich noch nie so wirklich eingehend mit der Konsole gearbeitet habe :D

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
sljnx Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: So 30.09.07 19:20 
hmm...
habe jetzt wieder ein bisschen versucht aber irgendwie ist alles zum scheitern verurteilt.
"Eine implizite Konvertierung vom Typ "System.ConsoleKeyInfo" in "System.ConsoleKey" ist nicht möglich."

grüße
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 30.09.07 19:21 
Du brauchst ja auch nicht konvertieren, sondern mit der Eigenschaft x.Key arbeiten, die hat den richtigen Typ.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".