endlich funktioniert

This commit is contained in:
klikev 2024-09-01 12:58:17 +02:00
parent ecedf0d8c1
commit 47eb94aa4b
3 changed files with 57 additions and 8 deletions

View File

@ -21,6 +21,7 @@ body{
} }
#tom{ #tom{
position: fixed; position: fixed;
display: none;
} }
#fuchs { #fuchs {
position: relative; position: relative;
@ -36,11 +37,15 @@ body{
} }
#enemy{ #enemy{
position: fixed; position: fixed;
top: 20px;
right: 30px;
}
#enemyZahl{
text-align: center;
} }
.flexbox{ .flexbox{
display: flex; display: flex;
flex-direction: row; flex-direction: row;
justify-content: space-between;
} }
#rechnungen{ #rechnungen{
padding: 0px; padding: 0px;
@ -50,7 +55,7 @@ body{
width: 100%; width: 100%;
} }
#rechnung1, #rechnung2 { #rechnung1, #rechnung2 {
width: 10%; width: 20%;
padding: 20px; padding: 20px;
text-align: center; text-align: center;
z-index: 10; z-index: 10;

View File

@ -30,6 +30,7 @@
<img src="pics/fuchs_1.png" alt="fuchs"> <img src="pics/fuchs_1.png" alt="fuchs">
</div> </div>
<div id="enemy"> <div id="enemy">
<div id="enemyZahl">100</div>
<img src="pics/enemy_1.png" alt="Gegner"> <img src="pics/enemy_1.png" alt="Gegner">
</div> </div>

View File

@ -27,8 +27,6 @@ let gesamtzahlRechnungen = 5;
const fuchsZahl = document.querySelector("#fuchsZahl"); const fuchsZahl = document.querySelector("#fuchsZahl");
//Elemete für überlappungs Check //Elemete für überlappungs Check
const fuchsImg = document.querySelector("#fuchs img"); const fuchsImg = document.querySelector("#fuchs img");
const rechnung1Hitbox = document.querySelector("#hitbox1");
const rechnung2Hitbox = document.querySelector("#hitbox2");
rechnungenSpawn(maxZahl,maxMal,maxDurch); rechnungenSpawn(maxZahl,maxMal,maxDurch);
//wie viele Rechnungen bisher gespawed sind //wie viele Rechnungen bisher gespawed sind
@ -40,6 +38,18 @@ let richtigeEntscheidungen = 0;
//Wie viele richtige entscheidungen braucht der Spieler um am ende, gegen das Müll monster, zu gewinnen //Wie viele richtige entscheidungen braucht der Spieler um am ende, gegen das Müll monster, zu gewinnen
let zielRichtigeEntscheidungen = 3; let zielRichtigeEntscheidungen = 3;
let gameWon = false; let gameWon = false;
//Variabeln für die WinAnimation
const enemy = document.querySelector("#enemy");
const enemyZahl = document.querySelector("#enemyZahl");
let voreisntellungenFertig = false;
//auf welcher höhe startet der Enemy?
const enemyTopStart = -300;
let enemyTop = enemyTopStart;
enemy.style.top = enemyTop + "px";
//speed des Enemys, wie schnell er fallen soll
const speedEnemy = 0.2;
//maximale pixel Tiefe bis der Enemy aufhört zu fallen
const maxTiefeEnemy = 100;
//returned den int in der Rechnung, nur die zahl ohne rechenzeichen //returned den int in der Rechnung, nur die zahl ohne rechenzeichen
function rechnung1Int(){ function rechnung1Int(){
@ -114,7 +124,7 @@ function checkOverlap(objekt1, objekt2) {
return !(rect1.right < rect2.left || rect1.left > rect2.right || rect1.bottom < rect2.top || rect1.top > rect2.bottom); //true wenn die objekte überlappen return !(rect1.right < rect2.left || rect1.left > rect2.right || rect1.bottom < rect2.top || rect1.top > rect2.bottom); //true wenn die objekte überlappen
} }
function rechne(){ function rechne(){
if(checkOverlap(fuchsImg,rechnung1Hitbox)){ if(checkOverlap(fuchsImg,rechnung1Text)){
fuchsZahl.innerText = ergebnis(parseInt(fuchsZahl.innerText),rechnung1Int(),rechnung1Zeichen()); fuchsZahl.innerText = ergebnis(parseInt(fuchsZahl.innerText),rechnung1Int(),rechnung1Zeichen());
console.log("Rechnung 1"); console.log("Rechnung 1");
bereitsEinmalOverlappt = true; bereitsEinmalOverlappt = true;
@ -122,7 +132,7 @@ function rechne(){
richtigeEntscheidungen++; richtigeEntscheidungen++;
} }
} }
if(checkOverlap(fuchs,rechnung2Hitbox)){ if(checkOverlap(fuchsImg,rechnung2Text)){
fuchsZahl.innerText = ergebnis(parseInt(fuchsZahl.innerText),rechnung2Int(),rechnung2Zeichen()); fuchsZahl.innerText = ergebnis(parseInt(fuchsZahl.innerText),rechnung2Int(),rechnung2Zeichen());
console.log("Rechnung 2"); console.log("Rechnung 2");
bereitsEinmalOverlappt = true; bereitsEinmalOverlappt = true;
@ -146,7 +156,37 @@ function ergebnis(zahl1,zahl2,rechenzeichen){
} }
return 0; return 0;
} }
setInterval(()=>{ function playWinAnimation(){
if(gameWon){
if(!voreisntellungenFertig){
enemyZahl.innerText = "" + (parseInt(fuchsZahl.innerText) - Math.floor(Math.random()*50));
voreisntellungenFertig = true;
}
enemyMoven(speedEnemy,maxTiefeEnemy);
}
}
function playLoseAnimation(){
if(gameWon == false){
if(!voreisntellungenFertig){
enemyZahl.innerText = "" + (parseInt(fuchsZahl.innerText) + Math.floor(Math.random()*100));
voreisntellungenFertig = true;
}
enemyMoven(speedEnemy,maxTiefeEnemy);
}
}
function enemyMoven(speed,maxtiefe){
let nextTop = enemyTop + 10 * speed;
if(nextTop > maxtiefe){
}else{
enemy.style.top = nextTop + "px";
enemyTop = nextTop;
}
}
function gameloopRechnungen(){
if(counterRechnungen <= gesamtzahlRechnungen){ if(counterRechnungen <= gesamtzahlRechnungen){
rechnungMoven(speedRechnungen,maxTiefeRechunngen); rechnungMoven(speedRechnungen,maxTiefeRechunngen);
if(!bereitsEinmalOverlappt){ if(!bereitsEinmalOverlappt){
@ -156,9 +196,12 @@ setInterval(()=>{
}else{ }else{
if(richtigeEntscheidungen >= zielRichtigeEntscheidungen){ if(richtigeEntscheidungen >= zielRichtigeEntscheidungen){
gameWon = true; gameWon = true;
playWinAnimation();
console.log("Müllmonster besiegt!!!"); console.log("Müllmonster besiegt!!!");
}else{ }else{
gameWon = false; gameWon = false;
playLoseAnimation();
} }
} }
}, 10); }
setInterval(gameloopRechnungen, 10);