| Autor |
Beitrag |
benni1902
Hält's aus hier
Beiträge: 11
|
Verfasst: Di 27.04.10 15:39
Hallo Leute,
und erstmal ganz kurz zur Lage. Bin ein BWL - Student der verrückt genug war ein sog. "Programmierpraktikum" zu besuchen.
Bin wirklich absolut grün hinter den Ohren. Haben als Hausarbeit die Aufgabe eine Konsolenanwendung ( Black - Jack ) zu entwickeln.
Habe dieses auch schon fast hinbekommen. Allerdings gibt es ein Problem mit den Zufallszahlen. Kann mir bitte jemand sagen wie ich es lösen kann? Die Zahlen sind nämlich irgendwie nicht so zufällig wie es seien sollten ( die Methode muss wohl in eine Klasse ausgelagret werden oder irgendwas mit nem Array gemacht werden. Oder beides ??  Ansonsten ist das Programm lauffähig!
Für nen Tip wie ich es ansprechender ( also für den Anwender ) gestalten kann wäre ich zudem Dankbar.
P.S Bitte nicht lachen, ich weiss das es Amateurhaft ist:
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: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247:
| using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace BlackJack.Benjamin_Radtke { class Program { static void Main(string[] args) { Begruessung(); string name = daten_Aufnahme(); Spiel(name); }
private static void Begruessung() {
Console.WriteLine("*******************************************"); Console.WriteLine("Willkommen im Black-Jack-Paradise!"); Console.WriteLine("Bitte geben Sie zuerst Ihre Daten ein"); }
public static string daten_Aufnahme() { string _Vorname; string _Nachname; Console.WriteLine("Vorname:"); _Vorname = Console.ReadLine();
Console.WriteLine("Nachname;"); _Nachname = Console.ReadLine();
Console.WriteLine("Geburtsdatum: dd.mm.yyyy"); string datum = Console.ReadLine(); DateTime date = DateTime.Parse(datum); TimeSpan span = DateTime.Now - date; int jahre = span.Days / 365;
if (jahre >= 18) { Console.WriteLine("Hallo {0} {1}, bitte drücken Sie die ENTER-Taste um fortzufahren", _Vorname, _Nachname); Console.ReadLine(); } else { Console.WriteLine(" Sie müssen mindestens 18 Jahre alt sein. Das Spiel wird nun automatische geschlossen!"); Console.ReadLine(); Environment.Exit(0); } string voller_Name = _Vorname + " " + _Nachname; return voller_Name;
} public static void Spiel(string n) { Console.Clear(); Console.WriteLine("Das Spiel beginnt"); Console.WriteLine("Sie gegen das Haus"); Console.WriteLine("Viel Glück");
string name_Spieler = n; int Spieler = Ziehung() + Ziehung();
Console.WriteLine("Aktuell haben Sie {0} Punkte", Spieler);
Spieler = Spielerspielt(Spieler); if (Spieler > 21) { Console.WriteLine("Leider Verloren!"); Console.WriteLine("Die Bank hat gewonnen"); NochmalSpielen(name_Spieler); } else { Console.WriteLine("Nun zieht die Bank!"); int Bank = Ziehung() + Ziehung(); Bank = Bankspielt(Bank);
if (Bank > 21) Console.WriteLine("{0} hat gewonnen", (name_Spieler)); NochmalSpielen(name_Spieler);
if (Bank <= Spieler) { Console.WriteLine("{0} hat gewonnen", name_Spieler); NochmalSpielen(name_Spieler); } else { Console.WriteLine("Die Bank hat gewonnen!!!!"); NochmalSpielen(name_Spieler); }
} } private static int Ziehung() { int Punktwert = 0; int Kartenwert; int Kartenfarbe; Random rnd = new Random();
Kartenfarbe = rnd.Next(0,3); Kartenwert = rnd.Next(0,12)+2; string Kartenwert_Ausgabe = "";
if (Kartenwert < 10) { Punktwert = Punktwert + Kartenwert; Kartenwert_Ausgabe = Convert.ToString(Kartenwert); } else if (Kartenwert > 9 && Kartenwert < 14) { Punktwert = Punktwert + 10; if (Punktwert == 10) { Kartenwert_Ausgabe = "10"; } else if (Punktwert == 11) { Kartenwert_Ausgabe = "Bube"; } else if (Punktwert == 12) { Kartenwert_Ausgabe = "Dame"; } else { Kartenwert_Ausgabe= "König"; } } else { Punktwert = Punktwert + 11; Kartenwert_Ausgabe = "Ass"; }
string Kartenfarbe_Ausgabe = ""; switch (Kartenfarbe) { case 0: Kartenfarbe_Ausgabe = "Karo"; break; case 1: Kartenfarbe_Ausgabe = "Herz"; break; case 2: Kartenfarbe_Ausgabe = "Pik"; break; case 3: Kartenfarbe_Ausgabe = "Kreuz"; break; }
Console.WriteLine("Gezogenen Karte:"); Console.WriteLine("{0} {1}",Kartenfarbe_Ausgabe , Kartenwert_Ausgabe );
return Punktwert; }
private static int Spielerspielt(int x) { int SpielerTemp = x; if (SpielerTemp < 22) { Console.WriteLine("Noch eine Karte ziehen (J/N)");
if (Console.ReadLine().ToLower() == "j") {
SpielerTemp = SpielerTemp + Ziehung(); Console.WriteLine("Ihr aktuele Punktzahl ist {0}", SpielerTemp); Spielerspielt(SpielerTemp);
}
else {
} return SpielerTemp; } else { return SpielerTemp; } } private static int Bankspielt(int x) {
int BankTemp = x; if (BankTemp < 22) { if (BankTemp < 17) { BankTemp = BankTemp + Ziehung(); Console.WriteLine("Die aktuele Punktzahl der Bank beträgt {0}", BankTemp); Bankspielt(BankTemp); } else { } return BankTemp; } else { return BankTemp; } } private static void NochmalSpielen(string n) { Console.WriteLine("Nochmal spielen (J/N)");
if (Console.ReadLine().ToLower() == "j") { Spiel(n); } else { Environment.Exit(0); } }
} |
Moderiert von Kha: C#-Tags hinzugefügt
Zuletzt bearbeitet von benni1902 am Mi 28.04.10 20:36, insgesamt 1-mal bearbeitet
|
|
danielf
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: Di 27.04.10 16:19
Hallo und  ,
ich habe mir den Coden nicht komplett angeschaut nur soweit, dass ich sehe das du die Random-Klasse jedes mal neu in der Methode erzeugst (new Random()) wird. Deshalb bekommst du keine Zufallszahlen.
Du musst das Objekt (Instanz der Klasse) als Klassenmember von Program anlegen (den Namen Program solltest du vlt. noch anpassen). Zwingend solltest du auch Static vermeiden. Das ist ein beliebter Neulingfehler, weil man so den Kompilier leicht zufrieden stellen kann.
1) Programm in BlackJackGame umbennen
2) Klassenmember Random erstellen
3) static entfernen
4) In mein eine Instanz der Klasse BlackJackGame erstellen und diese verwenden.
Das sieht dann grob so aus (ach ja, bitte verwende auch die C#-Tags bei Bereiche, C#, +):
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:
| namespace BenjaminRadtke.BlackJack { public class BlackJackGame { public static void Main( string[] args) { BlackJackGame game = new BlackJackGame();
game.Begruessung();
game.DatenAufnehmen();
game.Start(); }
public string Vorname { get; set; } public string Name { get; set; }
private Random _ZahlenGenerator = new Random();
public void Begruessung() { ... }
public void DatenAufnehmen() { Console.WriteLine("Vorname: "); Vorname = Console.ReadLine(); .... }
public void Start() {
} } } |
|
|
benni1902 
Hält's aus hier
Beiträge: 11
|
Verfasst: Mi 28.04.10 09:02
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Mi 28.04.10 09:25
Hallo und noch
danielf hat folgendes geschrieben : | 1) Programm in BlackJackGame umbennen
2) Klassenmember Random erstellen
3) static entfernen
4) In mein eine Instanz der Klasse BlackJackGame erstellen und diese verwenden. |
Ich kann das nur insoweit ergänzen:
zu 2) Das bedeutet: Eine Instanz der Random-Klasse (und zwar eine einzige überhaupt) wird innerhalb der BlackJackGame-Klasse private erzeugt.
zu 3) static muss bei Main stehenbleiben, an allen anderen Stellen soll es weg.
zu 4) Daniel hat sich nur verschrieben, statt "mein" muss es natürlich Main() heißen.
Alles andere hat er in seinem Beispielcode gezeigt, damit solltest du anfangen können.
Gruß Jürgen
|
|
benni1902 
Hält's aus hier
Beiträge: 11
|
Verfasst: Mi 28.04.10 10:06
Puuuuhhh,
jungs ich weiss ihr meint es gut. Doch mir ist immernoch nicht ganz klar was ich genau machen musst. Kann es mir evtl. jmd mal anhand meines Codes zeigen. Bin wirklich total verzweifelt und kurz davor hier alles hin zu werfen. Muss das gute Stück morgen !!
Zur not überweise ich euch auch was per Paypal aber ich muss irgendwie an die Lösung des Probelems kommen.
LG euer Programmiernoob
|
|
danielf
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: Mi 28.04.10 10:08
Wie sieht den der überarbeitet Code aus? und woran liegen noch die Probleme?
|
|
benni1902 
Hält's aus hier
Beiträge: 11
|
Verfasst: Mi 28.04.10 10:17
Das Problem ist das ich den Code oben aus dem zusammengehauen habe was wir in der Vorlesung gemacht haben und was ich im Netz gefunden habe. Meine soll der Code aussehen ? Kannst du bitte nicht mal gucken? Ist doch bestimmt ne kleinigkeit für dich.
|
|
danielf
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: Mi 28.04.10 10:30
? :/
Ich habe den Code doch schon angeschaut und gesagt was daran nicht stimmt. Des weiteren habe ich auch konkrete Struktur des "neuen" Code gezeigt. Deine Aufgabe ist das nun nur zusammen zufügen. Bitte versuch das. Bei konkreten Problemen kannst du gerne nochmal schreiben. Aber das ist eine Übungsaufgabe und deshalb sehe ich keinen Sinn darin, dass ich sie komplett für dich mache - hab dir schon "zu viel" gezeigt. Das werden die anderen hier im Forum auch so sehen. Bitte versuch es ein bisschen zu verstehen.
Wenn der Groschen fällt, dann richtig 
|
|
benni1902 
Hält's aus hier
Beiträge: 11
|
Verfasst: Mi 28.04.10 16:57
....
da hast du natürlich recht und ich möchte es ja auch leren. Mittlerweile habe ich es etas anders gemacht( ist zwar immernoch nicht richtig aber ein wenig besser). Dabei ist aber irgendwie eina andere Fehler aufgetauch. Wenn er jetzt in der Konsole den Kartenwert wiedergibt dann ist er immer doppelt. Könntet ihr mir bitte sagen was da falsch ist. Und was meint ihr mit c# tags nutzen??
Grüße
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: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297: 298: 299: 300: 301: 302: 303: 304: 305: 306: 307: 308: 309: 310: 311: 312: 313: 314: 315: 316: 317: 318: 319: 320: 321: 322: 323: 324:
| using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace BlackJack.Benjamin_Radtke { class BlackJackGame { static void Main(string[] args) { Begruessung(); string name = daten_Aufnahme(); Spiel(name); }
private static void Begruessung() {
Console.WriteLine("*******************************************"); Console.WriteLine("Willkommen im Black-Jack-Paradise!"); Console.WriteLine("Bitte geben Sie zuerst Ihre Daten ein"); Console.WriteLine("*******************************************"); Console.WriteLine(""); Console.WriteLine(""); }
public static string daten_Aufnahme() { string _Vorname; string _Nachname; Console.WriteLine("Vorname:"); _Vorname = Console.ReadLine();
Console.WriteLine("Nachname;"); _Nachname = Console.ReadLine();
Console.WriteLine("Geburtsdatum: dd.mm.yyyy"); string datum = Console.ReadLine(); DateTime date = DateTime.Parse(datum); TimeSpan span = DateTime.Now - date; int jahre = span.Days / 365;
if (jahre >= 18) { Console.WriteLine("Hallo {0} {1}, bitte drücken Sie die ENTER-Taste um fortzufahren", _Vorname, _Nachname); Console.ReadLine(); } else { Console.WriteLine(" Sie müssen mindestens 18 Jahre alt sein. Das Spiel wird nun automatische geschlossen!"); Console.ReadLine(); Environment.Exit(0); } string voller_Name = _Vorname + " " + _Nachname; return voller_Name;
} public static void Spiel(string n) { Console.Clear(); Console.WriteLine("Das Spiel beginnt"); Console.WriteLine("Sie gegen das Haus"); Console.WriteLine("Viel Glück"); Console.WriteLine(""); Console.WriteLine(""); string name_Spieler = n; int Spieler = 0; Spieler = Ziehung1() + Ziehung2();
Console.WriteLine("Aktuell haben Sie {0} Punkte", Spieler);
Spieler = Spielerspielt(Spieler);
if (Spieler > 21) { Console.WriteLine("Leider Verloren!"); Console.WriteLine("Die Bank hat gewonnen"); NochmalSpielen(name_Spieler); } else { Console.WriteLine("Nun zieht die Bank!"); int Bank = Ziehung1() + Ziehung2(); Bank = Bankspielt(Bank);
if (Bank > 21) Console.WriteLine("{0} hat gewonnen", (name_Spieler)); NochmalSpielen(name_Spieler);
if (Bank <= Spieler) { Console.WriteLine("{0} hat gewonnen", name_Spieler); NochmalSpielen(name_Spieler); } else { Console.WriteLine("Die Bank hat gewonnen!!!!"); NochmalSpielen(name_Spieler); }
} }
private static int KartenwertZZ() { int Kartenwert = 0;
int Seed = (int)DateTime.Now.Ticks; Random rnd = new Random(Seed);
Kartenwert = rnd.Next(0, 13);
return Kartenwert; }
private static int KartenfarbeZZ() { int Kartenfarbe = 0;
int Seed = (int)DateTime.Now.Ticks; Random rnd = new Random(Seed);
Kartenfarbe = rnd.Next(0, 3);
return Kartenfarbe; }
private static int Ziehung1() { int Punktwert1 = 0; int Kartenwert = KartenwertZZ(); int Kartenfarbe = KartenfarbeZZ();
string Kartenwert_Ausgabe = "";
if (Kartenwert <= 10 && Kartenwert > 1) { Punktwert1 = Kartenwert; Kartenwert_Ausgabe = Convert.ToString(Kartenwert); } else if (Kartenwert > 10) { if (Kartenwert == 11) { Kartenwert_Ausgabe = "Bube"; Punktwert1 = 10; } else if (Kartenwert == 12) { Kartenwert_Ausgabe = "Dame"; Punktwert1 = 10; } else { Kartenwert_Ausgabe = "König"; Punktwert1 = 10; }
} else { Punktwert1 = 11; Kartenwert_Ausgabe = "Ass";
}
string Kartenfarbe_Ausgabe = "";
switch (Kartenfarbe) { case 0: Kartenfarbe_Ausgabe = "Karo"; break; case 1: Kartenfarbe_Ausgabe = "Herz"; break; case 2: Kartenfarbe_Ausgabe = "Pik"; break; case 3: Kartenfarbe_Ausgabe = "Kreuz"; break; }
Console.WriteLine("Gezogenen Karte:"); Console.WriteLine("{0} {1}", Kartenfarbe_Ausgabe, Kartenwert_Ausgabe);
return Punktwert1; } private static int Ziehung2() { int Punktwert2 = 0; int Kartenwert2 = KartenwertZZ(); int Kartenfarbe2 = KartenfarbeZZ(); string Kartenwert2_Ausgabe = "";
if (Kartenwert2 <= 10 && Kartenwert2 > 1) { Punktwert2 = Kartenwert2; Kartenwert2_Ausgabe = Convert.ToString(Kartenwert2); } else if (Kartenwert2 > 10) { if (Kartenwert2 == 11) { Kartenwert2_Ausgabe = "Bube"; Punktwert2 = 10; } else if (Kartenwert2 == 12) { Kartenwert2_Ausgabe = "Dame"; Punktwert2 = 10; } else { Kartenwert2_Ausgabe = "König"; Punktwert2 = 10; }
} else { Punktwert2 = 11; Kartenwert2_Ausgabe = "Ass";
}
string Kartenfarbe2_Ausgabe = "";
switch (Kartenfarbe2) { case 0: Kartenfarbe2_Ausgabe = "Karo"; break; case 1: Kartenfarbe2_Ausgabe = "Herz"; break; case 2: Kartenfarbe2_Ausgabe = "Pik"; break; case 3: Kartenfarbe2_Ausgabe = "Kreuz"; break; }
Console.WriteLine("Gezogenen Karte:"); Console.WriteLine("{0} {1}", Kartenfarbe2_Ausgabe, Kartenwert2_Ausgabe);
return Punktwert2;
}
private static int Spielerspielt(int Spieler) { int SpielerTemp = Spieler; if (SpielerTemp < 22) { Console.WriteLine("Noch eine Karte ziehen (J/N)");
if (Console.ReadLine().ToLower() == "j") {
SpielerTemp = SpielerTemp + Ziehung1(); Console.WriteLine("Ihr aktuele Punktzahl ist {0}", SpielerTemp); Spielerspielt(SpielerTemp);
} } return SpielerTemp;
} private static int Bankspielt(int Bank) {
int BankTemp = Bank; if (BankTemp < 17) { BankTemp = BankTemp + Ziehung2(); Console.WriteLine("Die aktuele Punktzahl der Bank beträgt {0}", BankTemp); Bankspielt(BankTemp); } return BankTemp; }
private static void NochmalSpielen(string n) { Console.WriteLine("Nochmal spielen (J/N)");
if (Console.ReadLine().ToLower() == "j") { Spiel(n); } else { Environment.Exit(0); } } }
} |
Zuletzt bearbeitet von benni1902 am Mi 28.04.10 20:45, insgesamt 3-mal bearbeitet
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Mi 28.04.10 17:51
benni1902 hat folgendes geschrieben : | | Könntet ihr mir bitte sagen was da falsch ist. |
Zumindest von mir bekommst du erst eine Antwort, wenn das geklärt ist:
benni1902 hat folgendes geschrieben : | | Und was meint ihr mit c# tags nutzen?? |
Vergleiche doch einfach, wie dein Code im letzten Beitrag aussieht und wie derjenige in den ersten beiden Beiträgen aussieht. Dann gehe auf deinen allerersten Beitrag mit dem Schere-Button und schau dir an, was Sebastian daran geändert hat. Dann gehe auf deinen letzten Beitrag mit dem Schere-Button und nimm dieselbe Änderung vor: "Bereiche" öffnen, C# auswählen, Plus-Button.
Jürgen
@Mods
Bitte den vorigen Beitrag nicht überarbeiten! Das kann Benni selbst machen.
|
|
benni1902 
Hält's aus hier
Beiträge: 11
|
Verfasst: Mi 28.04.10 18:10
Nochmal jungs .... Ich will es doch lernen! Nur bitte sprecht net in Rätseln. Bin armer BWLer .....
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Mi 28.04.10 19:27
JüTho hat folgendes geschrieben : | | Dann gehe auf deinen allerersten Beitrag mit dem Schere-Button und schau dir an, was Sebastian daran geändert hat. Dann gehe auf deinen letzten Beitrag mit dem Schere-Button und nimm dieselbe Änderung vor: "Bereiche" öffnen, C# auswählen, Plus-Button. |
Tut mir leid, ich bin zu doof. Was ist an dieser Arbeitsanleitung unverständlich?
Mit "Schere-Button" meine ich dies: In dieser Diskussion gibt es nacheinander mehrere Beiträge: zuerst deinen, dann eine Antwort von Daniel, dann deine Reaktion, dann meine erste Antwort usw. Bei jedem deiner Beiträge gibt es drei Buttons: einen mit Gänsefüßchen und dem Hinweistext "Antworten mit Zitat", dann einen mit einer Schere und dem Hinweistext "Beitrag editieren" und einen mit "Achtung"-Schild und dem Hinweistext "Beitrag melden".
"gehe auf deinen allerersten Beitrag mit dem Schere-Button" bedeutet: Drücke bei deinem ersten Beitrag mit der Maus auf den mittleren Button, nämlich den mit der Schere, damit du deinen Beitrag nochmal ansehen kannst. (Deinen vorletzten Beitrag sollst du wirklich ändern.)
Dort, wo du Code eingetragen hast, hat Sebastian irgendetwas mit [] eingefügt. Diese Änderung sollst du lernen. Du kannst sie manuell im Text einfügen oder mit meiner anderen Erläuterung ("Bereiche" öffnen usw.) aus der Liste der Buttons über dem Textfenster übernehmen.
Außerdem gibt es oben Hilfe (Kontext), konkret BBCodes: Sourcecode.
Wenn du nun noch den Button "Vorschau" benutzt, wirst du hoffentlich verstehen, was ich meine. Wenn nicht, dann tut's mir leid.
Jürgen
// Nachtrag
Du kannst sicher sein: Es ist uns gleichgültig, ob ein 15jähriger Schüler oder ein armer Bwl-Student oder ein Rentner mit Fragen kommt. Etwas Mitdenken und Eigeninitiative wird von jedem erwartet.
|
|
benni1902 
Hält's aus hier
Beiträge: 11
|
Verfasst: Mi 28.04.10 20:53
Lieber Jürgen,
ich verstehe Dich doch. Nur du darfst es mir hier auch nicht übel nehmen das ich eine Frage stelle oder nach der Lösung suche ?
Ich weiss genau das es für die meisten hier kein Problem wäre. Und dafür das ich erst drei mal in der Uni programmiert habe ist die Aufgabe auch net ganz ohne. Das Problem mit dem Kartenwert ist jetzt gelöstest. Wenn mir jetzt noch einer den Code zeigt damit das mit den Zaheln richtig läuft wäre ich echt dankbar. Und zu Thema Eigeninitative und Lernerfolg. Wenn ich es einmal sehe dann kann ich es auch und frage nicht nochmal. Also bitte nicht gleich als zu doof oder zu faul abstempeln..... Aber jetzt bloß kein Stress !
Hier der aktuelle 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: 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: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258:
| using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace BlackJack.Benjamin_Radtke { class BlackJackGame { static void Main(string[] args) { Begruessung(); string name = daten_Aufnahme(); Spiel(name); }
private static void Begruessung() {
Console.WriteLine("*******************************************"); Console.WriteLine("Willkommen im Black-Jack-Paradise!"); Console.WriteLine("Bitte geben Sie zuerst Ihre Daten ein"); Console.WriteLine("*******************************************"); Console.WriteLine(""); Console.WriteLine(""); }
public static string daten_Aufnahme() { string _Vorname; string _Nachname; Console.WriteLine("Vorname:"); _Vorname = Console.ReadLine();
Console.WriteLine("Nachname;"); _Nachname = Console.ReadLine();
Console.WriteLine("Geburtsdatum: dd.mm.yyyy"); string datum = Console.ReadLine(); DateTime date = DateTime.Parse(datum); TimeSpan span = DateTime.Now - date; int jahre = span.Days / 365;
if (jahre >= 18) { Console.WriteLine("Hallo {0} {1}, bitte drücken Sie die ENTER-Taste um fortzufahren", _Vorname, _Nachname); Console.ReadLine(); } else { Console.WriteLine(" Sie müssen mindestens 18 Jahre alt sein. Das Spiel wird nun automatische geschlossen!"); Console.ReadLine(); Environment.Exit(0); } string voller_Name = _Vorname + " " + _Nachname; return voller_Name;
} public static void Spiel(string n) { Console.Clear(); Console.WriteLine("Das Spiel beginnt"); Console.WriteLine("Sie gegen das Haus"); Console.WriteLine("Viel Glück"); Console.WriteLine(""); Console.WriteLine(""); string name_Spieler = n; int Spieler = 0; Spieler = Ziehung() + Ziehung();
Console.WriteLine("Aktuell haben Sie {0} Punkte", Spieler);
Spieler = Spielerspielt(Spieler);
if (Spieler > 21) { Console.WriteLine("Leider Verloren!"); Console.WriteLine("Die Bank hat gewonnen"); NochmalSpielen(name_Spieler); } else { Console.WriteLine("Nun zieht die Bank!"); int Bank = Ziehung() + Ziehung(); Bank = Bankspielt(Bank);
if (Bank > 21) Console.WriteLine("{0} hat gewonnen", (name_Spieler)); NochmalSpielen(name_Spieler);
if (Bank <= Spieler) { Console.WriteLine("{0} hat gewonnen", name_Spieler); NochmalSpielen(name_Spieler); } else { Console.WriteLine("Die Bank hat gewonnen!!!!"); NochmalSpielen(name_Spieler); }
} }
private static int KartenwertZZ() { int Kartenwert = 0;
int Seed = (int)DateTime.Now.Ticks; Random rnd = new Random(Seed);
Kartenwert = rnd.Next(0, 13);
return Kartenwert; }
private static int KartenfarbeZZ() { int Kartenfarbe = 0;
int Seed = (int)DateTime.Now.Ticks; Random rnd = new Random(Seed);
Kartenfarbe = rnd.Next(0, 3);
return Kartenfarbe; }
private static int Ziehung() { int Punktwert = 0; int Kartenwert = KartenwertZZ(); int Kartenfarbe = KartenfarbeZZ(); string Kartenwert_Ausgabe = "";
if (Kartenwert <= 10 && Kartenwert > 1) { Punktwert = Kartenwert; Kartenwert_Ausgabe = Convert.ToString(Kartenwert); } else if (Kartenwert > 10) { if (Kartenwert == 11) { Kartenwert_Ausgabe = "Bube"; Punktwert = 10; } else if (Kartenwert == 12) { Kartenwert_Ausgabe = "Dame"; Punktwert = 10; } else { Kartenwert_Ausgabe = "König"; Punktwert = 10; }
} else { Punktwert = 11; Kartenwert_Ausgabe = "Ass";
}
string Kartenfarbe_Ausgabe = "";
switch (Kartenfarbe) { case 0: Kartenfarbe_Ausgabe = "Karo"; break; case 1: Kartenfarbe_Ausgabe = "Herz"; break; case 2: Kartenfarbe_Ausgabe = "Pik"; break; case 3: Kartenfarbe_Ausgabe = "Kreuz"; break; }
Console.WriteLine("Gezogenen Karte:"); Console.WriteLine("{0} {1}", Kartenfarbe_Ausgabe, Kartenwert_Ausgabe);
return Punktwert;
}
private static int Spielerspielt(int Spieler) { int SpielerTemp = Spieler; if (SpielerTemp < 22) { Console.WriteLine("Noch eine Karte ziehen (J/N)");
if (Console.ReadLine().ToLower() == "j") {
SpielerTemp = SpielerTemp + Ziehung(); Console.WriteLine("Ihr aktuele Punktzahl ist {0}", SpielerTemp); Spielerspielt(SpielerTemp);
} } return SpielerTemp;
} private static int Bankspielt(int Bank) {
int BankTemp = Bank; if (BankTemp < 17) { BankTemp = BankTemp + Ziehung(); Console.WriteLine("Die aktuele Punktzahl der Bank beträgt {0}", BankTemp); Bankspielt(BankTemp); } return BankTemp; }
private static void NochmalSpielen(string n) { Console.WriteLine("Nochmal spielen (J/N)");
if (Console.ReadLine().ToLower() == "j") { Spiel(n); } else { Environment.Exit(0); } } }
} |
|
|
benni1902 
Hält's aus hier
Beiträge: 11
|
Verfasst: Do 29.04.10 09:20
Soooo Leute,
und versprochen, dies ist mein "erstmal" mein letzer Post. Das mit den Zahlen und so läuft jetzt alles. Habe nur noch das Problem das er gleich mit dem Spiel starte und die Begrüssung überspringt. Ich weiss,das es nen Pipi - fehler ist. Aber nach einer Nacht mit dem Entwicklerhandbuch unter dem Kopfkissen sehe ich es einfach net mehr. Wäre lieb wenn ihr mal schauen könntet.
LG
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: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207:
| using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading;
namespace BlackJack.Benjamin_Radtke_Final { class BlackJackGame { static void Main(string[] args) { Begruessung(); do { Spiel("JG"); Console.WriteLine(); Console.Write("Nochmal spielen (J/N): "); } while (Console.ReadLine().ToLower() == "j"); }
private static void Begruessung() { Console.WriteLine("*******************************************"); Console.WriteLine("Willkommen im Black-Jack-Paradise!"); Console.WriteLine("Bitte geben Sie zuerst Ihre Daten ein"); Console.WriteLine("*******************************************"); Console.WriteLine(""); Console.WriteLine(""); }
public static string daten_Aufnahme() { string _Vorname; string _Nachname; Console.Write("Vorname: "); _Vorname = Console.ReadLine();
Console.Write("Nachname: "); _Nachname = Console.ReadLine();
Console.Write("Geburtsdatum (dd.mm.yyyy): "); string datum = Console.ReadLine(); Console.WriteLine(""); Console.WriteLine("");
DateTime date = DateTime.Parse(datum); TimeSpan span = DateTime.Now - date; int jahre = span.Days / 365;
if (jahre >= 18) { Console.WriteLine("Hallo {0} {1}, bitte drücken Sie die ENTER-Taste um fortzufahren", _Vorname, _Nachname); Console.ReadLine(); } else { Console.WriteLine(" Sie müssen mindestens 18 Jahre alt sein. Das Spiel wird nun automatische geschlossen!"); Console.ReadLine(); Environment.Exit(0); } string voller_Name = _Vorname + " " + _Nachname; return voller_Name; }
public static void Spiel(string n) { Console.Clear(); Console.WriteLine("Das Spiel beginnt"); Console.WriteLine("Sie gegen das Haus"); Console.WriteLine("Viel Glück"); string name_Spieler = n;
int gpz = 0; string erneutZiehen = "";
do { Console.WriteLine(""); Console.WriteLine(""); gpz = gpz + Ziehung(gpz);
if (gpz == 21) { Console.WriteLine("!!! BLACK JACK !!! Sie haben gewonnen ;-) "); return; }
Console.WriteLine("Ihre aktuelle Punktzahl: {0}", gpz); if (gpz < 22) { Console.Write("Noch eine Karte ziehen? (J/N): "); erneutZiehen = Console.ReadLine().ToLower(); } else { Console.WriteLine("Leider Verloren! Die Bank hat gewonnen"); return; } } while (erneutZiehen == "j");
Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Nun zieht die Bank!"); Console.WriteLine();
int bankKartenwert = 0; do { bankKartenwert = bankKartenwert + Ziehung(bankKartenwert); } while (bankKartenwert < 17);
Console.WriteLine("Die Bank hat insgesamt {0} Punkte", bankKartenwert); Console.WriteLine();
if ((gpz <= 21) && (gpz > bankKartenwert)) { Console.WriteLine("{0} hat gewonnen", name_Spieler); } else { Console.WriteLine("Die Bank hat gewonnen :-("); } }
private static int KartenwertZZ() { return new Random().Next(1, 13); }
private static int KartenfarbeZZ() { return new Random().Next(1, 4); }
private static int Ziehung(int aktuellerWert) { int punkteWert; Thread.Sleep(1000); int kartenWert = KartenwertZZ(); int kartenFarbe = KartenfarbeZZ(); string kartenwert_ausgabe = "";
if (kartenWert == 1) { kartenwert_ausgabe = "Ass"; if (aktuellerWert <= 10) { punkteWert = 11; } else { punkteWert = 1; } } else if (kartenWert == 11) { kartenwert_ausgabe = "Bube"; punkteWert = 10; } else if (kartenWert == 12) { kartenwert_ausgabe = "Dame"; punkteWert = 10; } else if (kartenWert == 13) { kartenwert_ausgabe = "König"; punkteWert = 10; } else { kartenwert_ausgabe = Convert.ToString(kartenWert); punkteWert = kartenWert; }
string kartenfarbe_ausgabe = "";
switch (kartenFarbe) { case 1: kartenfarbe_ausgabe = "Karo"; break; case 2: kartenfarbe_ausgabe = "Herz"; break; case 3: kartenfarbe_ausgabe = "Pik"; break; case 4: kartenfarbe_ausgabe = "Kreuz"; break; }
Console.WriteLine("Gezogenen Karte: {0} {1}", kartenfarbe_ausgabe, kartenwert_ausgabe); return punkteWert; } } } |
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Do 29.04.10 09:30
Na also. Übrigens meinte ich nicht, dass du zu doof bist, sondern dass ich nicht vernünftig erklären kann.
Ich hab jetzt keine Zeit für ausführlichere Hinweise, deshalb nur kurz zu deiner letzten Frage: Die Begrüßung macht ein paar WriteLine-Anweisungen. Dann kommt das nächste Spiel (genauer: das erste), und als erste Anweisung kommt Console.Clear. Du musst also noch in die Begrüßung eine Art Pause einfügen, damit man die Begrüßung zur Kenntnis nehmen kann; ich bevorzuge dafür ReadKey.
Gruß Jürgen
|
|
benni1902 
Hält's aus hier
Beiträge: 11
|
Verfasst: Do 29.04.10 16:17
So habe jetzt an einer Stelle nen Console.ReadLine(); eingefügt.
Damit ist immerhin die Begrüßung da. ABer nach wie vor macht er meine Altersprüfung net mehr......
Bin Ratlos gerade. Habe es versucht mit Console.ReadKey(); Aber macht er nix. Kann mir bitte jmd nomma genau die Stelle zeigen ??
Greetz
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: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218:
| using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading;
namespace BlackJack.Benjamin_Radtke_1 { class BlackJackGame { static void Main(string[] args) { Begruessung(); do { Spiel("BR"); Console.WriteLine(); Console.Write("Nochmal spielen (J/N): "); } while (Console.ReadLine().ToLower() == "j"); }
private static void Begruessung() { Console.WriteLine("*******************************************"); Console.WriteLine("Willkommen im Black-Jack-Paradise!"); Console.WriteLine("Bitte geben Sie zuerst Ihre Daten ein"); Console.WriteLine("*******************************************"); Console.WriteLine(""); Console.WriteLine(""); Console.ReadLine(); }
public static string daten_Aufnahme()
{ Console.ReadKey(); string _Vorname; string _Nachname; Console.Write("Vorname: "); _Vorname = Console.ReadLine();
Console.Write("Nachname: "); _Nachname = Console.ReadLine();
Console.Write("Geburtsdatum (dd.mm.yyyy): "); string datum = Console.ReadLine(); Console.WriteLine(""); Console.WriteLine("");
DateTime date = DateTime.Parse(datum); TimeSpan span = DateTime.Now - date; int jahre = span.Days / 365;
if (jahre >= 18) { Console.WriteLine("Hallo {0} {1}, bitte drücken Sie die ENTER-Taste um fortzufahren", _Vorname, _Nachname); Console.ReadLine(); } else { Console.WriteLine(" Sie müssen mindestens 18 Jahre alt sein. Das Spiel wird nun automatische geschlossen!"); Console.ReadLine(); Environment.Exit(0); } string voller_Name = _Vorname + " " + _Nachname; return voller_Name;
} public static void Spiel(string n) { Console.Clear(); Console.WriteLine("Das Spiel beginnt"); Console.WriteLine("Sie gegen das Haus"); Console.WriteLine("Viel Glück"); string name_Spieler = n;
int gpz = 0; string erneutZiehen = "";
do { Console.WriteLine(""); Console.WriteLine(""); gpz = gpz + Ziehung(gpz);
if (gpz == 21) { Console.WriteLine("!!! BLACK JACK !!! Sie haben gewonnen ;-) "); return; }
Console.WriteLine("Ihre aktuelle Punktzahl: {0}", gpz); if (gpz < 22) { Console.Write("Noch eine Karte ziehen? (J/N): "); erneutZiehen = Console.ReadLine().ToLower(); } else { Console.WriteLine("Leider Verloren! Die Bank hat gewonnen"); return; } } while (erneutZiehen == "j");
Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Nun zieht die Bank!"); Console.WriteLine();
int bankKartenwert = 0; do { bankKartenwert = bankKartenwert + Ziehung(bankKartenwert); } while (bankKartenwert < 17);
Console.WriteLine("Die Bank hat insgesamt {0} Punkte", bankKartenwert); Console.WriteLine();
if ((gpz <= 21) ) { Console.WriteLine("{0} hat gewonnen", name_Spieler); } else { Console.WriteLine("Die Bank hat gewonnen :-("); if (bankKartenwert > 21) { Console.WriteLine("Die Bank hat gewonnen :-("); } } }
private static int KartenwertZZ() { return new Random().Next(1, 13); }
private static int KartenfarbeZZ() { return new Random().Next(1, 4); }
private static int Ziehung(int aktuellerWert) { int punkteWert; Thread.Sleep(1000); int kartenWert = KartenwertZZ(); int kartenFarbe = KartenfarbeZZ(); string kartenwert_ausgabe = "";
if (kartenWert == 1) { kartenwert_ausgabe = "Ass"; if (aktuellerWert <= 10) { punkteWert = 11; } else { punkteWert = 1; } } else if (kartenWert == 11) { kartenwert_ausgabe = "Bube"; punkteWert = 10; } else if (kartenWert == 12) { kartenwert_ausgabe = "Dame"; punkteWert = 10; } else if (kartenWert == 13) { kartenwert_ausgabe = "König"; punkteWert = 10; } else { kartenwert_ausgabe = Convert.ToString(kartenWert); punkteWert = kartenWert; }
string kartenfarbe_ausgabe = "";
switch (kartenFarbe) { case 1: kartenfarbe_ausgabe = "Karo"; break; case 2: kartenfarbe_ausgabe = "Herz"; break; case 3: kartenfarbe_ausgabe = "Pik"; break; case 4: kartenfarbe_ausgabe = "Kreuz"; break; }
Console.WriteLine("Gezogenen Karte: {0} {1}", kartenfarbe_ausgabe, kartenwert_ausgabe); return punkteWert; } } } |
|
|
danielf
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: Do 29.04.10 16:26
Weißt du was eine Methode ist?
Weißt du was ein Kommentar ist?
Weißt du was ein Einstiegspunkt ist?
Ich kann mir nicht vorstellen, das euer Prof euch ohne Grundlagen oder Nachschlagewerk lost geschickt hat. Das führt so zu nichts :/
|
|
benni1902 
Hält's aus hier
Beiträge: 11
|
Verfasst: Do 29.04.10 16:33
Also.... Wir haben kein Skript und kein gar nix. Habe nur das Entwicklerhandbuch und die Codes aus der Übung. Damit habe ich das Ding ja geschrieben......
|
|
benni1902 
Hält's aus hier
Beiträge: 11
|
Verfasst: Do 29.04.10 16:52
Soooooo,
und sorry das war echt billig ! Geht jetzt !! ABER ..... Er spricht den Spieler jetzt nicht mit Namen an wenn er gewonnen hat ....... Ziehe echt den Hut vor euch Atzen, die ihr das könnt mit dem programmieren......
Ist wirklich mein letztes Prob !!!
Greetz
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: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220:
| using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading;
namespace BlackJack.Benjamin_Radtke_1 { class BlackJackGame { static void Main(string[] args) { Begruessung(); string name = daten_Aufnahme(); do { Spiel(""); Console.WriteLine(); Console.Write("Nochmal spielen (J/N): "); } while (Console.ReadLine().ToLower() == "j"); }
private static void Begruessung() { Console.WriteLine("*******************************************"); Console.WriteLine("Willkommen im Black-Jack-Paradise!"); Console.WriteLine("Bitte geben Sie zuerst Ihre Daten ein"); Console.WriteLine("*******************************************"); Console.WriteLine(""); Console.WriteLine(""); Console.ReadKey(); }
public static string daten_Aufnahme()
{ string _Vorname; string _Nachname; Console.Write("Vorname: "); _Vorname = Console.ReadLine();
Console.Write("Nachname: "); _Nachname = Console.ReadLine();
Console.Write("Geburtsdatum (dd.mm.yyyy): "); string datum = Console.ReadLine(); Console.WriteLine(""); Console.WriteLine(""); Console.ReadLine();
DateTime date = DateTime.Parse(datum); TimeSpan span = DateTime.Now - date; int jahre = span.Days / 365;
if (jahre >= 18) { Console.WriteLine("Hallo {0} {1}, bitte drücken Sie die ENTER-Taste um fortzufahren", _Vorname, _Nachname); Console.ReadLine(); } else { Console.WriteLine(" Sie müssen mindestens 18 Jahre alt sein. Das Spiel wird nun automatische geschlossen!"); Console.ReadLine(); Environment.Exit(0); } string voller_Name = _Vorname + " " + _Nachname; return voller_Name;
} public static void Spiel(string n) { Console.Clear(); Console.WriteLine("Das Spiel beginnt"); Console.WriteLine("Sie gegen das Haus"); Console.WriteLine("Viel Glück"); string name_Spieler = n;
int gpz = 0; string erneutZiehen = "";
do { Console.WriteLine(""); Console.WriteLine(""); gpz = gpz + Ziehung(gpz);
if (gpz == 21) { Console.WriteLine("!!! BLACK JACK !!! Sie haben gewonnen ;-) "); return; }
Console.WriteLine("Ihre aktuelle Punktzahl: {0}", gpz); if (gpz < 22) { Console.Write("Noch eine Karte ziehen? (J/N): "); erneutZiehen = Console.ReadLine().ToLower(); } else { Console.WriteLine("Leider Verloren! Die Bank hat gewonnen"); return; } } while (erneutZiehen == "j");
Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Nun zieht die Bank!"); Console.WriteLine();
int bankKartenwert = 0; do { bankKartenwert = bankKartenwert + Ziehung(bankKartenwert); } while (bankKartenwert < 17);
Console.WriteLine("Die Bank hat insgesamt {0} Punkte", bankKartenwert); Console.WriteLine();
if ((gpz <= 21) ) { Console.WriteLine("{0} hat gewonnen", name_Spieler); } else { Console.WriteLine("Die Bank hat gewonnen :-("); if (bankKartenwert > 21) { Console.WriteLine("Die Bank hat gewonnen :-("); } } }
private static int KartenwertZZ() { return new Random().Next(1, 13); }
private static int KartenfarbeZZ() { return new Random().Next(1, 4); }
private static int Ziehung(int aktuellerWert) { int punkteWert; Thread.Sleep(1000); int kartenWert = KartenwertZZ(); int kartenFarbe = KartenfarbeZZ(); string kartenwert_ausgabe = "";
if (kartenWert == 1) { kartenwert_ausgabe = "Ass"; if (aktuellerWert <= 10) { punkteWert = 11; } else { punkteWert = 1; } } else if (kartenWert == 11) { kartenwert_ausgabe = "Bube"; punkteWert = 10; } else if (kartenWert == 12) { kartenwert_ausgabe = "Dame"; punkteWert = 10; } else if (kartenWert == 13) { kartenwert_ausgabe = "König"; punkteWert = 10; } else { kartenwert_ausgabe = Convert.ToString(kartenWert); punkteWert = kartenWert; }
string kartenfarbe_ausgabe = "";
switch (kartenFarbe) { case 1: kartenfarbe_ausgabe = "Karo"; break; case 2: kartenfarbe_ausgabe = "Herz"; break; case 3: kartenfarbe_ausgabe = "Pik"; break; case 4: kartenfarbe_ausgabe = "Kreuz"; break; }
Console.WriteLine("Gezogenen Karte: {0} {1}", kartenfarbe_ausgabe, kartenwert_ausgabe); return punkteWert; } } } |
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Do 29.04.10 16:52
Was meinst du mit dem Entwicklerhandbuch? Die SDK-Doku/MSDN/Hilfe oder ein spezielles Buch? Du könntest auch mal in ein Online-Buch reinschauen, z.B. openbook visual_csharp. Ergänzend: Hast du den Debugger schon entdeckt und ausprobiert? Setze auf die erste Programmzeile einen Breakpoint (Haltepunkt) und gehe Schritt für Schritt durch; dann wirst du schon sehen, was er ausführt und was nicht.
Auf Daniels Fragen hast du kaum geantwortet. Deshalb etwas konkreter:
Du willst das Alter prüfen. Wo wird das gemacht? Wann wird dieser Programmteil ausgeführt?
Die verschiedenen Kartenprüfungen könnten statt in if-else if in eine switch-Konstruktion mit Wiederholung gepackt werden:
C#-Quelltext 1: 2: 3:
| switch(...) case 1: case 2: case 3: ... case 10: mach was; break; case 11: mach was; break; |
Das Kartenziehen würde ich eine eigene Methode auslagern. Worin unterscheiden sich denn das Spiel des Spielers und das der Bank? Nur in der Art der Entscheidung über eine neue Karte: automatisch bis zu 17 oder durch Console. In dieser Art gibt es sicherlich noch weitere Vorschläge.
Dein Hauptfehler ist aber:
danielf hat folgendes geschrieben : | ... dass ich sehe das du die Random-Klasse jedes mal neu in der Methode erzeugst (new Random()) wird. Deshalb bekommst du keine Zufallszahlen.
Du musst das Objekt (Instanz der Klasse) als Klassenmember von Program anlegen (den Namen Program solltest du vlt. noch anpassen). |
Du benutzt bei jeder Ziehung ein neues Random. Das ist falsch!!!
Auch die anderen Vorschläge mit einer eigenen Klasse hast du missachtet. Deshalb kann ich auch nicht sehen, wo Name usw. nochmals benutzt werden.
Gruß Jürgen
/Nachtrag
Ob das Alter von 18 Jahren erreicht ist, kann leichter geprüft werden statt über TimeSpan. (Übrigens interessiert dich nicht DateTime.Now, sondern DateTime.Today):
C#-Quelltext 1: 2:
| DateTime birthday = DateTime.Parse(input); if ( birthday.AddYears(18) >= DateTime.Today ) ... |
/ Edit2
Schaltjahre sind bei dir überhaupt nicht berücksichtigt.
/ Edit3
Eine j/n-Abfrage geht direkter über ReadKey (das erspart dem Spieler auch noch die Return-Taste).
/ Edit4
Fehler im Nachtrag korrigiert: nicht DateTime.Date, sondern DateTime.Today benutzen.
|
|