Kniffel mit Javascript
Miggle
- javascript
0 ChrisB0 Miggle0 ChrisB0 Gunnar Bittersmann0 Brillo Agent Nr. 10 Miggle0 Felix Riesterer0 EKKi0 Don P
Hallo allerseits
in unsereem informatik-Anfängerkurs müssen wir als Schularbeit ein Kniffel mihilfe von Javascript programmieren.
Nachdem mir das mehr oder weniger gelungen ist, füge ich die Würfelbilder ein und siehe da. Die eingefügten Checkboxen werden einfach übergangen und ein Würfel nicht berücksichtigt.
Ansonsten wird alles einwandfrei ausgeführt.
Den Quelltext kann ich bei Bedarf zur Verfügung stellen
Vielen Dank für die Hilfe
Hi,
in unsereem informatik-Anfängerkurs müssen wir als Schularbeit ein Kniffel mihilfe von Javascript programmieren.
Nachdem mir das mehr oder weniger gelungen ist, füge ich die Würfelbilder ein und siehe da. Die eingefügten Checkboxen werden einfach übergangen und ein Würfel nicht berücksichtigt.
Dann arbeite bitte die Unterrichtsmaterialien aus den Stunden, die sich mit dem Thema logisches und durchdachtes Suchen von Fehlern beschäftigt haben, erneut durch.
Und lies die Tipps für Fragende [erneut].
MfG ChrisB
ich muss leider darauf aufmerksam machen, dass wir keinerlei Unterrichtsmaterialien erhalten haben und ich seit Stunden auf eigene Faust, ohne die nötigen Kenntnisse auf der Suche nach dem Fehler bin.
Wäre ich nicht völlig verzweifelt und hilflos, hätte ich mich nicht an die Community von Selfhtml gewandt.
Außerdem aheb ich mir die Tipps für Fragende aufmerksam durchgelesen und kam zu dem Entschluss, aufgrund meiner wirklich unzureichenden Kenntnisse, ausgelöst durch das Lehrpersonal, das Problem nicht weiter erläutern zu können.
Hi,
Außerdem aheb ich mir die Tipps für Fragende aufmerksam durchgelesen und kam zu dem Entschluss, aufgrund meiner wirklich unzureichenden Kenntnisse, ausgelöst durch das Lehrpersonal, das Problem nicht weiter erläutern zu können.
Du hast den dortigen Hinweis „Zeige den problematischen Quellcode!“ also weder verstanden, noch kannst du einsehen, dass wir, ohne deine Code zu kennen, kaum etwas zu deinem Problem sagen können?
MfG ChrisB
@@Miggle:
nuqneH
Außerdem aheb ich mir die Tipps für Fragende aufmerksam durchgelesen
Nicht nur durchlesen, auch befolgen!!
und kam zu dem Entschluss, aufgrund meiner wirklich unzureichenden Kenntnisse, ausgelöst durch das Lehrpersonal, das Problem nicht weiter erläutern zu können.
Ich kam zu dem Entschluss, aufgrund deiner wirklich unzureichenden Beschreibung, ausgelöst durch dich, das Problem nicht weiter bearbeiten zu können.
Qapla'
Miggle,
"..völlig verzweifelt und hilflos.."
Wo befindest du dich gerade? In der Sahelzone?
Poste doch mal den Quellcode. _NUR_ die relevanten Teile.
Brillo
<script language="JavaScript"> <!--
wuerfel1 = new Image(); wuerfel1.src = "w1.jpg"; wuerfel2 = new Image(); wuerfel2.src = "w2.jpg"; wuerfel3 = new Image(); wuerfel3.src = "w3.jpg"; wuerfel4 = new Image(); wuerfel4.src = "w4.jpg"; wuerfel5 = new Image(); wuerfel5.src = "w5.jpg"; wuerfel6 = new Image(); wuerfel6.src = "w6.jpg";
WuerfelWert = new Object; // 5 Wuerfel: WuerfelWert[0]..WuerfelWert[4] ZahlWert = new Object; // 6 gleiche Werte: ZahlWert[1]..ZahlWert[6] for(i = 1; i < 7; i++) ZahlWert[i] = -1; var DreiPasch = -1; var VierPasch = -1; var FullWert = -1; var KleinStrass = -1; var GrossStrass = -1; var KniffelWert = -1; var ChanceWert = -1; var Zustand = 0; // 1: 1-mal gewuerfelt, 2: 2-mal gewuerfelt, 3: 3-mal gewuerfelt, 0: bewertet var Summe1 = 0; var Summe2 = 0;
function Zufall(faktor) { return Math.floor(Math.random() * faktor + 1); }
function WuerfelAnzeige(WuerfelWert) { var i; for(i = 0; i < 5; i++) switch(WuerfelWert[i]) { case 1: { document.images[i+1].src = wuerfel1.src; break; } case 2: { document.images[i+1].src = wuerfel2.src; break; } case 3: { document.images[i+1].src = wuerfel3.src; break; } case 4: { document.images[i+1].src = wuerfel4.src; break; } case 5: { document.images[i+1].src = wuerfel5.src; break; } case 6: { document.images[i+1].src = wuerfel6.src; } } }
function AlleWerteAnzeigen() { var i; var ende = true; if (ZahlWert[1] == -1) { document.Formular.WertB1.value = " "; ende = false; Summe1 = 0; } else { document.Formular.WertB1.value = ZahlWert[1]; Summe1 = ZahlWert[1]; } if (ZahlWert[2] == -1) { document.Formular.WertB2.value = " "; ende = false; } else { document.Formular.WertB2.value = ZahlWert[2]; Summe1 += ZahlWert[2]; } if (ZahlWert[3] == -1) { document.Formular.WertB3.value = " "; ende = false; } else { document.Formular.WertB3.value = ZahlWert[3]; Summe1 += ZahlWert[3]; } if (ZahlWert[4] == -1) { document.Formular.WertB4.value = " "; ende = false; } else { document.Formular.WertB4.value = ZahlWert[4]; Summe1 += ZahlWert[4]; } if (ZahlWert[5] == -1) { document.Formular.WertB5.value = " "; ende = false; } else { document.Formular.WertB5.value = ZahlWert[5]; Summe1 += ZahlWert[5]; } if (ZahlWert[6] == -1) { document.Formular.WertB6.value = " "; ende = false; } else { document.Formular.WertB6.value = ZahlWert[6]; Summe1 += ZahlWert[6]; }
if (DreiPasch == -1) { document.Formular.WertP3.value = " "; ende = false; Summe2 = 0; } else { document.Formular.WertP3.value = DreiPasch; Summe2 = DreiPasch; } if (VierPasch == -1) { document.Formular.WertP4.value = " "; ende = false; } else { document.Formular.WertP4.value = VierPasch; Summe2 += VierPasch; } if (FullWert == -1) { document.Formular.WertFH.value = " "; ende = false; } else { document.Formular.WertFH.value = FullWert; Summe2 += FullWert; } if (KleinStrass == -1) { document.Formular.WertKS.value = " "; ende = false; } else { document.Formular.WertKS.value = KleinStrass; Summe2 += KleinStrass; } if (GrossStrass == -1) { document.Formular.WertGS.value = " "; ende = false; } else { document.Formular.WertGS.value = GrossStrass; Summe2 += GrossStrass; } if (KniffelWert == -1) { document.Formular.WertKN.value = " "; ende = false; } else { document.Formular.WertKN.value = KniffelWert; Summe2 += KniffelWert; } if (ChanceWert == -1) { document.Formular.WertCH.value = " "; ende = false; } else { document.Formular.WertCH.value = ChanceWert; Summe2 += ChanceWert; }
if (Summe1 > 62) Bonus = 35; else Bonus = 0; document.Formular.WertBO.value = Bonus; document.Formular.WertS1.value = Summe1 + Bonus; document.Formular.WertS2.value = Summe2; document.Formular.WertTotal.value = Summe1 + Bonus + Summe2;
for(i = 0; i < 5; i++) document.Formular.elements[i].checked = false; if (ende) { alert("Du hast das Spiel beendet!"); } }
function PruefungOK(Wert) { if (Wert == 0) { alert("Das hast du schon angewählt!") return false; } else { if (Wert > 0) { alert("Dieser Wert wurde schon vergeben."); return false; } else { if (Zustand == 0) { alert("Du hast schon gewählt. Bitte würfel!"); return false; } else { // OK-Fall Zustand = 0; return true; } } } }
function BubbleSort() { var i, j; var merker; for(i = 4; i > -1; i--) for(j = 0; j < i; j++) if (WuerfelWert[j] > WuerfelWert[j + 1]) { merker = WuerfelWert[j]; WuerfelWert[j] = WuerfelWert[j + 1]; WuerfelWert[j + 1] = merker; } }
function Augen(Zahl) { var ergebnis = 0; var i; if (PruefungOK(ZahlWert[Zahl])) { for(i = 0; i < 5; i++) if (WuerfelWert[i] == Zahl) ergebnis += WuerfelWert[i]; ZahlWert[Zahl] = ergebnis; AlleWerteAnzeigen(); } }
function DreierPasch() { var ergebnis = 0; var OK = false; if (PruefungOK(DreiPasch)) { BubbleSort(); if ((WuerfelWert[0] == WuerfelWert[1]) && (WuerfelWert[1] == WuerfelWert[2])) OK = true; if ((WuerfelWert[1] == WuerfelWert[2]) && (WuerfelWert[2] == WuerfelWert[3])) OK = true; if ((WuerfelWert[2] == WuerfelWert[3]) && (WuerfelWert[3] == WuerfelWert[4])) OK = true; if (OK) for(i = 0; i < 5; i++) ergebnis += WuerfelWert[i]; DreiPasch = ergebnis; AlleWerteAnzeigen(); } }
function ViererPasch() { var ergebnis = 0; var OK = false; if (PruefungOK(VierPasch)) { BubbleSort(); if ((WuerfelWert[0] == WuerfelWert[1]) && (WuerfelWert[1] == WuerfelWert[2]) && (WuerfelWert[2] == WuerfelWert[3])) OK = true; if ((WuerfelWert[1] == WuerfelWert[2]) && (WuerfelWert[2] == WuerfelWert[3]) && (WuerfelWert[3] == WuerfelWert[4])) OK = true; if (OK) for(i = 0; i < 5; i++) ergebnis += WuerfelWert[i]; VierPasch = ergebnis; AlleWerteAnzeigen(); } }
function FullHouse() { var ergebnis = 0; if (PruefungOK(FullWert)) { BubbleSort(); if ((WuerfelWert[0] == WuerfelWert[1]) && (WuerfelWert[1] == WuerfelWert[2]) && (WuerfelWert[3] == WuerfelWert[4])) ergebnis = 25; if ((WuerfelWert[0] == WuerfelWert[1]) && (WuerfelWert[2] == WuerfelWert[3]) && (WuerfelWert[3] == WuerfelWert[4])) ergebnis = 25; FullWert = ergebnis; AlleWerteAnzeigen(); } }
function KleineStr() { w = new Object; // 6 Wuerfelwerte: w[1]..w[6] var ergebnis = 0; var i; if (PruefungOK(KleinStrass)) { for(i = 1; i < 7; i++) w[i] = false; for(i = 0; i < 5; i++) w[WuerfelWert[i]] = true; if ((w[1] && w[2] && w[3] && w[4]) || (w[2] && w[3] && w[4] && w[5]) || (w[3] && w[4] && w[5] && w[6])) ergebnis = 30; KleinStrass = ergebnis; AlleWerteAnzeigen(); } }
function GrosseStr() { var ergebnis = 0; if (PruefungOK(GrossStrass)) { BubbleSort(); if ((WuerfelWert[0] == WuerfelWert[1] - 1) && (WuerfelWert[1] == WuerfelWert[2] - 1) && (WuerfelWert[2] == WuerfelWert[3] - 1) && (WuerfelWert[3] == WuerfelWert[4] - 1)) ergebnis = 40; GrossStrass = ergebnis; AlleWerteAnzeigen(); } }
function Kniffel() { var ergebnis = KniffelWert; if (KniffelWert == 0) { alert("Das hast du schon angewählt!") return false; } else { if (Zustand == 0) alert("Du hast schon gewählt. Bitte würfel!"); else { if ((WuerfelWert[0] == WuerfelWert[1]) && (WuerfelWert[1] == WuerfelWert[2]) && (WuerfelWert[2] == WuerfelWert[3]) && (WuerfelWert[3] == WuerfelWert[4])) if (KniffelWert == -1) ergebnis = 50; else ergebnis += 100; else ergebnis = 0; if (KniffelWert > 0 && ergebnis == 0) alert("Dieser Wert wurde schon vergeben."); else { Zustand = 0; KniffelWert = ergebnis; AlleWerteAnzeigen(); } } } }
function Chance() { var ergebnis = 0; var i; if (PruefungOK(ChanceWert)) { for(i = 0; i < 5; i++) ergebnis += WuerfelWert[i]; ChanceWert = ergebnis; AlleWerteAnzeigen(); } }
function Wuerfeln() { var i; if (Zustand == 3) alert("Du hast bereits drei mal gewürfelt."); else { Zustand++; for(i = 0; i < 5; i++) if(!document.Formular.elements[i].checked) WuerfelWert[i]=Zufall(6); WuerfelAnzeige(WuerfelWert); } }
//--> </script>
Liebe(r) Miggle,
<script language="JavaScript">
wie man ein JavaScript heute sinnvoll schreibt, steht in einem Artikel hier im SELF-Raum:
Kleiner Lehrgang zum vernünftigen Schreiben eines JavaScripts
Liebe Grüße,
Felix Riesterer.
Mahlzeit Miggle,
<script language="JavaScript">
Es fehlt das <http://de.selfhtml.org/html/referenz/attribute.htm#script@title=zwingend erforderliche "type"-Attribut>.
<!--
HTML-Kommentare haben dort, <http://de.selfhtml.org/html/referenz/elemente.htm#script@title=wo nur Javascript-Code stehen sollte>, nichts verloren.
wuerfel1 = new Image(); wuerfel1.src = "w1.jpg";
wuerfel2 = new Image(); wuerfel2.src = "w2.jpg";
wuerfel3 = new Image(); wuerfel3.src = "w3.jpg";
wuerfel4 = new Image(); wuerfel4.src = "w4.jpg";
wuerfel5 = new Image(); wuerfel5.src = "w5.jpg";
wuerfel6 = new Image(); wuerfel6.src = "w6.jpg";
Du willst ein http://de.selfhtml.org/javascript/objekte/array.htm@title=Array benutzen.
Anschließend kommen noch weitere lustige Variablendeklarationen samt initialer Wertzuweisung sowie ein Haufen Funktionsdeklarationen.
Wo und wie diese Variablen und Funktionen aber genutzt werden, verschweigst bzw. unterschlägst Du - ebenso eine sinnvolle Problembeschreibung und/oder Fehlermeldung.
Meine Schlussfolgerung: Du willst gar keine Hilfe.
MfG,
EKKi
Hallo,
Da lässt sich noch vieles vereinfachen, z.B. hier:
WuerfelWert = new Object; // 5 Wuerfel: WuerfelWert[0]..WuerfelWert[4]
Warum nimmst du ein Objekt für die Würfel 0 bis 4?
Ein Array wäre besser, weil dann auch das Sortieren einfacher wird. Arrays bringen nämlich eine Sortierfunktion mit => kein Bubblesort nötig:
WuerfelWert = new Array(5); // 5 Wuerfel: WuerfelWert[0]..WuerfelWert[4]
Auch die Würfelbilder wären besser in einem Array aufgehoben statt in einzelnen Variablen. Dann könntest du nämlich einfacher auf sie zugreifen und müsstest nicht viele Fallunterscheidungen machen wie
switch(WuerfelWert[i])
{
case 1:
{
document.images[i+1].src = wuerfel1.src;
break;
}
Wenn ein Würfel nicht berücksichtigt wird, wie du schreibst, dann liegt das vermutlich an einem falschen Index, z.B. 1..4 statt 0..4 oder so ähnlich.
Gruß, Don P