| 
| Autor | Beitrag |  
| sljnx Hält's aus hier
 Beiträge: 4
 
 
 
 
 | 
Verfasst: Fr 28.09.07 19: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:
 			Moderiert von									| 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(30, 6);
 Console.WriteLine("Geben Sie ihren Namen ein!");
 Console.SetCursorPosition(30, 8);
 Console.WriteLine("Ihr Name:");
 Console.SetCursorPosition(40, 8);
 Console.ForegroundColor = ConsoleColor.Yellow;
 string spielertmp = Console.ReadLine();
 Console.Clear();
 do
 {
 Console.ForegroundColor = ConsoleColor.Yellow;
 Console.Title = "| Schere Stein Papier - Spiel";
 Console.SetCursorPosition(30, 6);
 Console.WriteLine("-------------------");
 Console.SetCursorPosition(30, 7);
 Console.WriteLine("| Willkommen {0}", spielertmp);
 Console.SetCursorPosition(30, 8);
 Console.WriteLine("| Drücken Sie für:");
 Console.SetCursorPosition(30, 9);
 Console.WriteLine("| Schere = 1");
 Console.SetCursorPosition(30, 10);
 Console.WriteLine("| Stein = 2");
 Console.SetCursorPosition(30, 11);
 Console.WriteLine("| Papier = 3");
 
 int zufallszahl = new Random().Next(1, 4);
 Console.SetCursorPosition(30, 12);
 Console.WriteLine("| >>> Ihre Wahl?");
 Console.SetCursorPosition(30, 13);
 Console.WriteLine("-------------------");
 bool ok;
 int iZahl = 0;
 do
 {
 try
 {
 Console.SetCursorPosition(47, 12);
 iZahl = Convert.ToInt32(Console.ReadLine());
 Console.Clear();
 ok = true;
 }
 catch
 {
 Console.Clear();
 Console.Title = "| Schere Stein Papier - Spiel";
 Console.SetCursorPosition(30, 6);
 Console.WriteLine("-------------------");
 Console.SetCursorPosition(30, 7);
 Console.WriteLine("| Willkommen!");
 Console.SetCursorPosition(30, 8);
 Console.WriteLine("| Drücken Sie für:");
 Console.SetCursorPosition(30, 9);
 Console.WriteLine("| Schere = 1");
 Console.SetCursorPosition(30, 10);
 Console.WriteLine("| Stein = 2");
 Console.SetCursorPosition(30, 11);
 Console.WriteLine("| Papier = 3");
 Console.SetCursorPosition(30, 12);
 Console.WriteLine("| >>> Ihre Wahl?");
 Console.SetCursorPosition(30, 13);
 Console.WriteLine("-------------------");
 Console.SetCursorPosition(25, 15);
 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(25, 15);
 Console.WriteLine("Sie haben Schere gewählt!");
 Console.SetCursorPosition(25, 16);
 Console.WriteLine("Der PC hat Schere gewählt!");
 if (iZahl == 1)
 {
 Console.SetCursorPosition(25, 17);
 Console.WriteLine("Unentschieden! Niemand hat gewonnen!");
 
 }
 else if (iZahl == 2)
 {
 Console.SetCursorPosition(25, 17);
 Console.WriteLine("Glückwunsch sie haben gewonnen!");
 }
 
 else if (iZahl == 3)
 {
 Console.SetCursorPosition(25, 17);
 Console.WriteLine("Der PC gewinnt!");
 }
 }
 #endregion
 
 #region Stein
 else if (zufallszahl == 2)
 {
 Console.Clear();
 Console.SetCursorPosition(25, 15);
 Console.WriteLine("Sie haben Stein gewählt!");
 Console.SetCursorPosition(25, 16);
 Console.WriteLine("Der PC hat Stein gewählt!");
 if (iZahl == 1)
 {
 Console.SetCursorPosition(25, 17);
 Console.WriteLine("Schade! Der PC hat gewonnen!");
 }
 else if (iZahl == 2)
 {
 Console.SetCursorPosition(25, 17);
 Console.WriteLine("Unentschieden! Leider hat niemand gewonnen!");
 }
 else if (iZahl == 3)
 {
 Console.SetCursorPosition(25, 17);
 Console.WriteLine("Glückwunsch! Sie haben gewonnen!");
 }
 
 }
 #endregion
 
 #region Papier
 else if (zufallszahl == 3)
 {
 Console.Clear();
 Console.SetCursorPosition(25, 15);
 Console.WriteLine("Sie haben Papier gewählt!");
 Console.SetCursorPosition(25, 16);
 Console.WriteLine("Der PC hat Papier gewählt!");
 if (iZahl == 1)
 {
 Console.SetCursorPosition(25, 17);
 Console.WriteLine("Sie haben gewonnen!");
 }
 else if (iZahl == 2)
 {
 Console.SetCursorPosition(25, 17);
 Console.WriteLine("Der PC gewinnt!");
 }
 else if (iZahl == 3)
 {
 Console.SetCursorPosition(25, 17);
 Console.WriteLine("Unentschieden!");
 #endregion
 
 #region Rest
 }
 }
 
 }
 else
 {
 Console.Clear();
 Console.SetCursorPosition(25, 15);
 Console.WriteLine("Geben sie bitte 1, 2 oder 3 ein!");
 }
 } while (true);
 
 
 #endregion
 }
 
 }
 }
 |   UGrohne: Code- durch C#-Tags ersetzt |  |  |  
| Christian S. 
          Beiträge: 20451
 Erhaltene Danke: 2264
 
 Win 10
 C# (VS 2019)
 
 | 
Verfasst: So 30.09.07 15: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  Hält's aus hier
 Beiträge: 4
 
 
 
 
 | 
Verfasst: So 30.09.07 15: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. 
          Beiträge: 20451
 Erhaltene Danke: 2264
 
 Win 10
 C# (VS 2019)
 
 | 
Verfasst: So 30.09.07 15: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  Hält's aus hier
 Beiträge: 4
 
 
 
 
 | 
Verfasst: So 30.09.07 17: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:
 		                       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  Christian S.: Code- durch C#-Tags ersetzt |  |  |  
| Christian S. 
          Beiträge: 20451
 Erhaltene Danke: 2264
 
 Win 10
 C# (VS 2019)
 
 | 
Verfasst: So 30.09.07 17: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  _________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
 |  |  |  
| sljnx  Hält's aus hier
 Beiträge: 4
 
 
 
 
 | 
Verfasst: So 30.09.07 18: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. 
          Beiträge: 20451
 Erhaltene Danke: 2264
 
 Win 10
 C# (VS 2019)
 
 | 
Verfasst: So 30.09.07 18: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".
 |  |  |  |