Roulettespiel

Status
Nicht offen für weitere Antworten.

Becka

Mitglied
Hallo Ihr Lieben
Ich bastle seit drei Tagen an dem Programm und wenn ein Fehler beseitigt ist taucht der nächste auf... Morgen muss ich das ganze abgeben und ich zweifle langsam ob das
Programm von Grund auf überhaupt so funktionieren kann.
Ich bitte um Hilfe.
Spielregeln sind wie folgt:
vereinfachten Spielregeln. Man beginnt mit einer bestimmten Spielsumme (z.B. 1000 €) und man soll eine Reihe von Runden spielen können.
Jede Runde kann man eine Spielart und einen Einsatz wählen.
Der Gewinnchancen sind wie folgt:
Einfache Chancen: 1 : 1
Zahl: 1 : 35
Der Einsatz ist bei den Spielen begrenzt (und nie höher als das aktuelle Kapital):
Zahl: Minimum 1 €, Maximum 100 €
Zufallszahlengenerator. zwischen 0 und 36:int nr = (int)(Math.random() * 37);

Java:
class roulette {
  public static void main(String[] args){
    int rouge;		// rot - Rouge
	int noir;  	// schwarz - Noir
	int pair;		// Gerade - Pair
	int impair;		// Ungerade - Impair
	int manque;		// niedrig - Manque
	int passe;		// hoch - Passe
	int plein; // Zahl - Plein
	double kapital;
	kapital = 1000;
	boolean e; // Spielart Einfach = E
	boolean z; // Spielart Zahl = Z
	//int e, z;
	
	// Spielart bestimmen
	Out.println("			 -------------- ");
	Out.println("			 | ROUTLETTE  | ");
	Out.println(" 			 -------------- ");
	Out.println("Bitte bestimmen Sie die Spielart ( e - Einfache / z - Zahl):  \n");
	
	e = In.readBoolean();
	z = In.readBoolean();
	
	Out.println(" Geben Sie ein auf was Sie setzten. \n\n");
	int x;
	Out.println("R - Rouge, N - Noir, P - Pair, I - Impair, M - Manque, S - Passe: \n");
	int R, N, P, I, M, S;
	R = In.read();
	N = In.read();
	P= In.read();
	I= In.read();
	M= In.read();
	S= In.read();
	rouge = R;
	noir = N;
	pair = P;
	impair = I;
	manque = M;
	passe = P;
	Out.println("Wieviel wollen Sie setzten (>=1, <=100, <=Kapital): \n");
	int Summe;	// Einsatz
	int nr;
	nr = In.readInt();
	switch (nr = (int) (Math.random() * 37)){
	case 1:
	Out.println("Die Zahl ist 1");
	Out.println("Manque, Rouge, Impair");
	case 2:
	Out.println("Die Zahl ist 2");
	Out.println("Manque, Noir, Pair");
	case 3:
	Out.println("Die Zahl ist 3");
    Out.println("Manque, Rouge, Impair");
	case 4:
	Out.println("Die Zahl ist 4");
    Out.println("Manque, Noir, Pair");
	case 5:
    Out.println("Die Zahl ist 5");
	Out.println("Manque, Impair, Rouge");
	case 6:
	Out.println("Die Zahl ist 6");
    Out.println("Manque, Pair, Noir");
	case 7:
	Out.println("Die Zahl ist 7");
	Out.println("Manque, Impair, Rouge");
	case 8:
	Out.println("Die Zahl ist 8");
	Out.println("Manque, Pair, Noir");
	case 9:
	Out.println("Die Zahl ist 9");
	Out.println("Manque, Impair, Rouge");
	case 10:
	Out.println("Die Zahl ist 10");
	Out.println("Manque, Pair, Noir");
	case 11:
	Out.println("Die Zahl ist 11");
	Out.println("Manque, Impair, Noir");
	case 12:
	Out.println("Die Zahl ist 12");
	Out.println("Manque, Pair, Rouge");
	case 13:
	Out.println("Die Zahl ist 13");
	Out.println("Manque, Impair, Noir");
	case 14:
	Out.println("Die Zahl ist 14");
	Out.println("Manque, Pair, Rouge");
	case 15:
	Out.println("Die Zahl ist 15");
	Out.println("Manque, Impair, Noir");
	case 16:
	Out.println("Die Zahl ist 16");
	Out.println("Manque, Pair, Rouge");
	case 17:
	Out.println("Die Zahl ist 17");
	Out.println("Manque, Impair, Noir");
	case 18:
	Out.println("Die Zahl ist 18");
	Out.println("Manque, Pair, Rouge");
	case 19:
	Out.println("Die Zahl ist 19");
	Out.println("Passe, Impair, Rouge");
	case 20:
	Out.println("Die Zahl ist 20");
	Out.println("Passe, Pair, Noir");
	case 21:
	Out.println("Die Zahl ist 21");
	Out.println("Passe, Impair, Rouge");
	case 22:
	Out.println("Die Zahl ist 22");
	Out.println("Passe, Pair, Noir");
	case 23:
	Out.println("Die Zahl ist 23");
	Out.println("Passe, Impair, Rouge");
	case 24:
	Out.println("Die Zahl ist 24");
	Out.println("Passe, Pair, Noir");
	case 25:
	Out.println("Die Zahl ist 25");
	Out.println("Passe, Impair, Rouge");
	case 26:
	Out.println("Die Zahl ist 26");
	Out.println("Passe, Pair, Noir");
	case 27:
	Out.println("Die Zahl ist 27");
	Out.println("Passe, Impair, Rouge");
	case 28:
	Out.println("Die Zahl ist 28");
	Out.println("Passe, Pair, Noir");
	case 29:
	Out.println("Die Zahl ist 29");
	Out.println("Passe, Impair, Noir");
	case 30:
	Out.println("Die Zahl ist 30");
	Out.println("Passe, Pair, Rouge");
	case 31:
	Out.println("Die Zahl ist 31");
	Out.println("Passe, Impair, Noir");
	case 32:
	Out.println("Die Zahl ist 32");
	Out.println("Passe, Pair, Rouge");
	case 33:
	Out.println("Die Zahl ist 33");
	Out.println("Passe, Impair, Noir");
	case 34:
	Out.println("Die Zahl ist 34");
	Out.println("Passe, Pair, Rouge");
	case 35:
	Out.println("Die Zahl ist 35");
	Out.println("Passe, Impair, Noir");
	case 36:
	Out.println("Die Zahl ist 36");
	Out.println("Passe, Pair, Rouge");
	}
	
	if ((nr == x) && (e)){
	 
	 kapital = kapital + Summe;
	 Out.println("Sie haben gewonnen. Ihr neues Kapital: "+kapital+" EUR");
	 }else if ((nr == x) && z){
	 kapital = kapital + (Summe*35);
	 Out.println("Sie haben gewonnen. Ihr neues Kapital: "+kapital+" EUR");
	 }else{
	//(nr != x)
	 kapital = kapital - Summe;
	 Out.println("Sie haben verloren. Ihr neues Kapital: "+kapital+" EUR");
	 }
	 Out.println("Wollen Sie Weiterspielen? (ja oder nein): ");
	 int ja;
	 ja = In.read();
	 int nein;
	 nein = In.read();
	 while (In.done()){
	 return;
	 if (nein){
	 break;
	 
	  }
	  }
	}
}
 

Becka

Mitglied
danke sehr aufbauend....
also kann ich davon ausgehen das der Code von grundauf Falsch ist....
;(
ich glaub ich lerns nie....
 

javimka

Top Contributor
Und was genau funktioniert nicht? So auf die Schnelle fällt mir nur auf, dass deine Klasse nicht public und klein geschrieben ist und dass sowas "if (nein)" nicht funktionieren, wenn nein ein int ist. "if (nein!=0)" wäre das wohl eher.

//EDIT
und deine switch musst du doch sicher mit break wieder verlassen, sonst arbeitest du bei einer kleinen Zahl ja alle case Fälle ab. Hast du den Code von einem Freund kopiert oder so, so viele Fehler programmiert man doch nicht ohne es jemals erfolgreich kompiliert zu haben.
 
Zuletzt bearbeitet:

icarus2

Top Contributor
Ich kann da auch keine Fehler erkennen in dem ganzen. Aber da fehlen sicher break-Anweisungen bei den case-of.

Ich glaube du solltest dir mal etwas genauer die Grundlagen erarbeiten. Dann unbedingt solche Dinge in eine Schleife packen, par Dinge in Methoden auslagern, so dass das ganze etwas übersichtlicher wird.

Wenn du bei switch(...) bis auf 36 kommst, dann denke ich stimmt etwas am Desing nicht.

Weisst du was eine Schleife ist, was eine Methode ist und all das Zeug? Falls nicht erst einmal die Dinge durchlesen, bevor man anfägt Spiele zu programmieren.
 

Becka

Mitglied
ich hab ein wenig was geändert jedoch sagt er mir unreachable statement bei
if (nein!=x)
als was muss ich denn das nein einlesen wenns mit int nicht funktioniert so dass ich wieder am Anfang beim
Spiel starten kann?
Bin leider ein blutiger Anfänger aber ich finds spannend und möcht es gern lernen!
 

javimka

Top Contributor
Gleich vor der If-Abfrage steht "return", d.h. die Methode wird verlassen und weil das hier die main-Methode ist, ist das Programm sogleich fertig. Wenn du wieder von vorne starten willst, solltest du eine while- oder for-Schleife und jenen Code-Abschnitt legen, der der mehrmals aufgerufen werden soll.
 

icarus2

Top Contributor
Unreachable statement bedeutet, dass der Code nach dem if niemals erreicht werden kann. Heisst die Variable nein kann nicht etwas anderes sein als x.

*Edit:
Wirklich... es ist ganz wichtig die Grundlagen verstanden zu haben bevor man solche Dinge programmiert. Ist am Anfang hart, aber wenn man durchbeisst lohnt es sich auf jeden Fall.
 

Becka

Mitglied
Super danke
die break's hab ich vergessen
wissen tu ich es eigentlich schon
Schleifen haben wir schon gelernt
Mit Methoden steh ich noch etwas auf Kriegsfuss glaub ich aber das wird schon.
Übung macht den Meister oder?
Ich danke auf jeden Fall für die schnelle Hilfe und für die Erklärungen!!!
Jetzt ist mir wieder etwas mehr klar geworden.
Danke und schönen Abend
 

icarus2

Top Contributor
Jap, Dinge wie Methoden muss man ein par mal geübt haben anhand von ganz eifachen Beispielen. Wenn man es dann wirklich verstanden hat kann man sich an neues, eventuell grösseres wagen.
 

Landei

Top Contributor
So ungefähr sollte es gehen:

Java:
public class Roulette {

    public static void main(String[] args) {
        Out.println("            -------------- ");
        Out.println("            | ROUTLETTE  | ");
        Out.println("            -------------- ");
        play(1000);
    }

    private static void play(int kapital) {
        String antwort;
        do {
            Out.println("Bitte bestimmen Sie die Spielart ( e - Einfache / z - Zahl):  \n");

            boolean einfach = In.read().equals("e");
            int nummer = -1;
            String chance = "";
            if (!einfach) {
                Out.println(" Geben Sie ein auf welche Zahl Sie setzen. \n\n");
                while (nummer < 0 || nummer > 36) {
                    nummer = In.readInt();
                }
            } else {
                Out.println("r - Rouge, n - Noir, p - Pair, i - Impair, m - Manque, s - Passe: \n");
                while ("rnpims".indexOf(chance) == -1 || chance.length() != 1) {
                    chance = In.read();
                }
            }
            Out.println("Wieviel wollen Sie setzten (>=1, <=100, <=Kapital): \n");
            int summe = 0;
            while (summe <= 0 || summe > 100 || summe > kapital) {
                summe = In.readInt();
            }
            int kugel = (int) (Math.random() * 37);
            Out.println("Es fällt die " + kugel);
            boolean manque = kugel <= 18;
            boolean rouge = "zrbrbrbrbrbbrbrbrbrrbrbrbrbrbbrbrbrbr".charAt(kugel) == 'r';
            boolean pair = kugel % 2 == 0;
            if (kugel == 0) {
                Out.print("Zero");
            } else {
                if (manque) {
                    Out.print("Manque, ");
                } else {
                    Out.print("Passe, ");
                }
                if (rouge) {
                    Out.print("Rouge, ");
                } else {
                    Out.print("Noir, ");
                }
                if (pair) {
                    Out.println("Pair");
                } else {
                    Out.println("Impair");
                }
            }

            if (!einfach && nummer == kugel) {
                kapital = kapital + (summe * 35);
                Out.println("Sie haben gewonnen. Ihr neues Kapital: " + kapital + " EUR");
            } else if (einfach && kugel == 0) {
                kapital = kapital - summe;
                Out.println("Sie haben verloren. Ihr neues Kapital: " + kapital + " EUR");
            } else if (einfach && kugel != 0 && 
                        ((chance.equals("r") && rouge) || 
                        (chance.equals("n") && !rouge) || 
                        (chance.equals("p") && pair) || 
                        (chance.equals("i") && !pair) || 
                        (chance.equals("m") && manque) || 
                        (chance.equals("s") && !manque))) {
                kapital = kapital + summe;
                Out.println("Sie haben gewonnen. Ihr neues Kapital: " + kapital + " EUR");
            } else {
                kapital = kapital - summe;
                Out.println("Sie haben verloren. Ihr neues Kapital: " + kapital + " EUR");
            }
            if (kapital == 0) {
                Out.println("Sie haben leider alles verspielt!");
                antwort = "nein";
            } else {
                Out.println("Wollen Sie Weiterspielen? (ja oder nein): ");
                antwort = In.read();
            }
        } while (antwort.startsWith("j"));
        Out.println("Auf Wiedersehen!");
    }
}

Sorry für den "aufbauenden" Kommentar, aber das switch-Statement hat mich einfach aus den Socken gehauen :-D
 
Zuletzt bearbeitet:

Becka

Mitglied
Das sieht ja gaaaanz anders aus :oops:
Vielen vielen Dank!!!!
Ich seh schon ich hab noch verdammt viel zu lernen!
Aber jetzt hab ich doch noch eine Frage:
Würde das mit case nicht funktionieren oder macht man das
einfach nicht??
 

Landei

Top Contributor
Na ja, normalerweise versucht man solche langen switch-Statements zu vermeiden. Funktionieren würde es natürlich schon, aber es nimmt viel Platz weg, und man vertippt sich auch leicht.

In diesem Fall konnte man alles einfach berechnen, nur das unregelmäßige Rot/Schwarz war ein Problem, wo man als Anfänger vielleicht nicht einfach draufkommt. Dafür gibt es mehrere Lösungsansätze, z.B. ein Array (ich habe stattdessen alles in einen String "zrbrbrbrbrbbrbrbrbrrbrbrbrbrbbrbrbrbr" gepackt, wobei z für zero, r für red und b für black steht, und schaue dann an der entsprechenden Stelle nach)
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben