Announcement

Collapse
No announcement yet.

Problem bei der Erstellung einer Konsolenanwendung ( BLack Jack)

Collapse
This topic is closed.
X
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem bei der Erstellung einer Konsolenanwendung ( BLack Jack)

    Hey Leute,

    ich wende mich in der allergröten Not an euch. Mache derzeit ein Programmierparktikum bei uns an der FH ( Bin eigentlich BWLer).
    Haben als Hausarbeit auf eine Black-Jack Konsolenanwendung mit Altersprüfung zu schreiben. Das Programm läuft auch soweit. Es gibt nur das Problem das die Karten nicht so wirklich zufällig sind. Ich weiss auch ungefähr wo das Problem ist. Aber ich habe keine Ahnung wo ich was an meinem Code ändern muss. Kann mir bitte irgendwer helfen.

    Hier mein Code: Opti wäre wenn ihr mir zeigen würdet WO ich was ändern muss und WAS ! Es reicht leider nicht wenn Ihr mir sagt:"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. " Das checke ich nämlich net. H


    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);
    }
    }






    }





    }
    Zuletzt editiert von Jürgen Thomas; 28.04.2010, 13:20. Reason: Wegen Doppelpost geschlossen, zumal er dort Hilfe bekommen hat. Und ohne Code-Markierung geht's schon gar nicht.

  • #2
    Biete keine heimlichen Crossposts. Siehe dazu auch die Forenregeln.

    Sieh dir nochmal die Hilfe zur Random Klasse genau an. Insbesondere die Hinweise zu diesem überladenen Konstruktor.
    Zuletzt editiert von Ralf Jansen; 28.04.2010, 13:13. Reason: verdammte Rechtschreibung

    Comment

    Working...
    X