const rechnungen = document.querySelector("#rechnungen"); //auf welcher höhe starten die Rechnungen? const rechnungenTopStart = -100; let rechnungenTop = rechnungenTopStart; rechnungen.style.top = rechnungenTop + "px"; //speed der Rechnungen, wie schnell sie fallen const speedRechnungen = 0.2; //maximale pixel Tiefe bis sie respawnen const maxTiefeRechunngen = 750; //Rechnungen und die 4er Rechenzeichen in unserem Spiel in einem Array const rechenzeichen = ['+','-','*',':']; const rechnung1Text = document.querySelector("#rechnung1Text"); const rechnung2Text = document.querySelector("#rechnung2Text"); //RechnungenSpawn Parameter const maxZahl = 100; const maxMal = 11; const maxDurch = 5; //wie viele Rechnungen sollen nacheinander spawnen let gesamtzahlRechnungen = 5; //Die Fuchszahl die dem Spieler angezeigt wird const fuchsZahl = document.querySelector("#fuchsZahl"); //Elemete für überlappungs Check const fuchsImg = document.querySelector("#fuchs img"); const rechnung1Hitbox = document.querySelector("#hitbox1"); const rechnung2Hitbox = document.querySelector("#hitbox2"); rechnungenSpawn(maxZahl,maxMal,maxDurch); //wie viele Rechnungen bisher gespawed sind let counterRechnungen = 1; //rechnung berührt? let bereitsEinmalOverlappt = false; //wie viele richtige Entscheidungen hat der Spieler zurzeit getroffen let richtigeEntscheidungen = 0; //Wie viele richtige entscheidungen braucht der Spieler um am ende, gegen das Müll monster, zu gewinnen let zielRichtigeEntscheidungen = 3; let gameWon = false; //returned den int in der Rechnung, nur die zahl ohne rechenzeichen function rechnung1Int(){ let text = rechnung1Text.innerText; //entfernen vom rechenzeichen (+,-,*,:) text = text.substring(1); let zahl = parseInt(text); return zahl; } //returned den int in der Rechnung, nur die zahl ohne rechenzeichen function rechnung2Int(){ let text = rechnung2Text.innerText; //entfernen vom rechenzeichen (+,-,*,:) text = text.substring(1); let zahl = parseInt(text); return zahl; } //returned das rechenzeichen der derzeitigen Rechnung ohne zahl function rechnung1Zeichen(){ let text = rechnung1Text.innerText; return text.charAt(0) } //returned das rechenzeichen der derzeitigen Rechnung ohne zahl function rechnung2Zeichen(){ let text = rechnung2Text.innerText; return text.charAt(0) } function rechnungMoven(speed,maxtiefe){ let nextTop = rechnungenTop + 10 * speed; rechnungen.style.top = nextTop + "px"; if(nextTop > maxtiefe){ rechnungen.style.top = rechnungenTopStart + "px"; rechnungenTop = rechnungenTopStart; rechnungenSpawn(maxZahl,maxMal,maxDurch); bereitsEinmalOverlappt = false; counterRechnungen++; }else{ rechnungenTop = nextTop; } } function rechnungenSpawn(maxzahl,maxMal,maxDurch){ let index = Math.floor(Math.random()*rechenzeichen.length); let randomZahl = 0; if(rechenzeichen[index] == '+' || rechenzeichen[index] == '-'){ randomZahl = Math.floor(Math.random()*maxzahl); } if(rechenzeichen[index] == '*'){ randomZahl = Math.floor(Math.random()*maxMal); } if(rechenzeichen[index] == ':'){ randomZahl = Math.floor(Math.random()*maxDurch) + 1; } rechnung1Text.innerText = rechenzeichen[index] + randomZahl.toString(); index = Math.floor(Math.random()*rechenzeichen.length); if(rechenzeichen[index] == '+' || rechenzeichen[index] == '-'){ randomZahl = Math.floor(Math.random()*maxzahl); } if(rechenzeichen[index] == '*'){ randomZahl = Math.floor(Math.random()*maxMal); } if(rechenzeichen[index] == ':'){ randomZahl = Math.floor(Math.random()*maxDurch) + 1; } rechnung2Text.innerText = rechenzeichen[index] + randomZahl.toString(); } function checkOverlap(objekt1, objekt2) { const rect1 = objekt1.getBoundingClientRect(); //sorgt dafür, dass man die position der grenzen des Elements bekommt const rect2 = objekt2.getBoundingClientRect(); return !(rect1.right < rect2.left || rect1.left > rect2.right || rect1.bottom < rect2.top || rect1.top > rect2.bottom); //true wenn die objekte überlappen } function rechne(){ if(checkOverlap(fuchsImg,rechnung1Hitbox)){ fuchsZahl.innerText = ergebnis(parseInt(fuchsZahl.innerText),rechnung1Int(),rechnung1Zeichen()); console.log("Rechnung 1"); bereitsEinmalOverlappt = true; if(ergebnis(parseInt(fuchsZahl.innerText),rechnung1Int(),rechnung1Zeichen()) >= ergebnis(parseInt(fuchsZahl.innerText),rechnung2Int(),rechnung2Zeichen())){ richtigeEntscheidungen++; } } if(checkOverlap(fuchs,rechnung2Hitbox)){ fuchsZahl.innerText = ergebnis(parseInt(fuchsZahl.innerText),rechnung2Int(),rechnung2Zeichen()); console.log("Rechnung 2"); bereitsEinmalOverlappt = true; if(ergebnis(parseInt(fuchsZahl.innerText),rechnung2Int(),rechnung2Zeichen()) >= ergebnis(parseInt(fuchsZahl.innerText),rechnung1Int(),rechnung1Zeichen())){ richtigeEntscheidungen++; } } } function ergebnis(zahl1,zahl2,rechenzeichen){ if(rechenzeichen == '+'){ return zahl1 + zahl2; } if(rechenzeichen == '-'){ return zahl1 - zahl2; } if(rechenzeichen == '*'){ return zahl1 * zahl2; } if(rechenzeichen == ':'){ return zahl1 / zahl2; } return 0; } setInterval(()=>{ if(counterRechnungen <= gesamtzahlRechnungen){ rechnungMoven(speedRechnungen,maxTiefeRechunngen); if(!bereitsEinmalOverlappt){ rechne(); } }else{ if(richtigeEntscheidungen >= zielRichtigeEntscheidungen){ gameWon = true; console.log("Müllmonster besiegt!!!"); }else{ gameWon = false; } } }, 10);