Wie kann ich meinen Fehler beheben?
Hallo,
ich habe ein Problem mit meinem Code. Meine Simulation eines kleinen Roulette Spiels funktioniert nicht . Wenn man zwei mal auf eine Farbe wettet gewinnt man ab dem zweiten mal immer auch wenn man verlieren müsste. Man bekomt drotzdem Geld zugeschrieben die erste Runde funktioniert aber.
Ich bin noch am Anfang mit dem Programmieren und arbeite mit studio.code.org.
Der Code:
onEvent("btn_Roulette_drehen", "click", function() {
var wettbetrag_roulette = getText("tinput_wettbetrag");
if (wettbetrag_roulette > points || 0 >= wettbetrag_roulette) {
wettbetrag_roulette = -1;
setText("lbl_status_r.", "Du hast zu viel oder garnichst gewettet!");
setText("tinput_wettbetrag", "");
} else if ((points >= wettbetrag_roulette)) {
if (getText("dr_user_game_color") !== "Keine" || getText("dr_user_game_number") !== "Keine") {
if (getText("dr_user_game_color") != "Keine" && getText("dr_user_game_number") != "Keine") {
setText("lbl_status_r.", "Nur eine Sache Wetten!");
} else {
setText("lbl_status_r.", "Dreht");
user_number_game_input = getText("dr_user_game_number");
user_color_game_input = getText("dr_user_game_color");
var roulette_gewinnzahl = randomNumber(1, 36);
var rote_zahlen = [1, 3, 5, 7, 9, 12, 14, 16, 18, 19, 21, 23, 25, 27, 30, 32, 34, 36];
var ist_rot = false;
for (var i = 1; i < rote_zahlen.length; i++) {
if (roulette_gewinnzahl === rote_zahlen[i]) {
ist_rot = true;
roulette_gewinnfarbe = "rot";
break;
}
}
if (ist_rot) {
setText("lbl_status_r.", "Es gewinnt rot und die Zahl " + roulette_gewinnzahl);
} else {
setText("lbl_status_r.", "Es gewinnt schwarz und die Zahl " + roulette_gewinnzahl);
}
if (roulette_gewinnfarbe != "rot") {
roulette_gewinnfarbe = "schwarz";
}
if (roulette_gewinnzahl == user_number_game_input) {
money = money +wettbetrag_roulette*36;
points = points-wettbetrag_roulette;
setText("lbl_status_r.", "Du hast gewonnen!!!!(" + roulette_gewinnzahl + roulette_gewinnfarbe +")");
setText("lbl_money_counter", "Money:" + money);
setText("lbl_score_counter", "Score" + points);
} else if ((roulette_gewinnfarbe == user_color_game_input)) {
points = points-wettbetrag_roulette;
money = money + wettbetrag_roulette*2;
setText("lbl_money_counter", "Money:" + money);
setText("lbl_score_counter", "Score:" + points);
} else {
points = points-wettbetrag_roulette;
setText("lbl_score_counter", "Score:" + points);
}
}
} else {
setText("lbl_status_r.", "Nichts ausgewählt!");
}
}
});
1 Antwort
Der Fehler liegt in der Logik deines Codes, die bestimmt, ob der Spieler bei einer Farbwette gewinnt oder verliert. Du vergleichst die Variable roulette_gewinnfarbe mit user_color_game_input, aber roulette_gewinnfarbe wird immer entweder auf "rot" oder "schwarz" gesetzt, unabhängig davon, welche Zahl tatsächlich gewonnen hat.
Hier ist der problematische Codeabschnitt:
if (ist_rot) {
setText("lbl_status_r.", "Es gewinnt rot und die Zahl " + roulette_gewinnzahl);
} else {
setText("lbl_status_r.", "Es gewinnt schwarz und die Zahl " + roulette_gewinnzahl);
}
if (roulette_gewinnfarbe != "rot") { // HIER LIEGT DER FEHLER
roulette_gewinnfarbe = "schwarz";
}
Erläuterung:
- Du setzt ist_rot korrekt basierend darauf, ob die Gewinnzahl in rote_zahlen enthalten ist.
- Du gibst die Gewinnfarbe korrekt aus.
- Der Fehler: Die Bedingung if (roulette_gewinnfarbe != "rot") ist immer wahr, wenn ist_rot falsch ist. Das bedeutet, dass roulette_gewinnfarbe immer auf "schwarz" gesetzt wird, wenn ist_rot falsch ist, auch wenn die Gewinnzahl eigentlich rot ist.
Lösung:
Entferne die Zeile if (roulette_gewinnfarbe != "rot") { roulette_gewinnfarbe = "schwarz"; } komplett. Du hast roulette_gewinnfarbe bereits korrekt innerhalb der if (ist_rot) Bedingung gesetzt.
Verbesserter Code:
onEvent("btn_Roulette_drehen", "click", function() {
// ... (restlicher Code)
if (ist_rot) {
setText("lbl_status_r.", "Es gewinnt rot und die Zahl " + roulette_gewinnzahl);
roulette_gewinnfarbe = "rot";
} else {
setText("lbl_status_r.", "Es gewinnt schwarz und die Zahl " + roulette_gewinnzahl);
roulette_gewinnfarbe = "schwarz";
}
// ... (restlicher Code)
});