From abe4c65e1868779b82e3b895e5c1b82500ce9fdc Mon Sep 17 00:00:00 2001 From: Adrian Hinz Date: Sun, 19 Nov 2017 23:00:52 +0100 Subject: [PATCH] Puddel --- js/main.js | 56 +++++++++++++++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/js/main.js b/js/main.js index 2c5e205..57aaac7 100644 --- a/js/main.js +++ b/js/main.js @@ -4,22 +4,25 @@ var myPuddle; var myX; var myY; var mySpeed; +var myMemo; +var sMemo = 'T'; class Substrate { - constructor(x, y, height, width, friction, ) { - this.height = height; - this.width = width; + constructor(component, friction, maxSpeedReduction) { + this.component = component; + this.friction = friction; + this.maxSpeedReduction = maxSpeedReduction; } - } - - +} function startGame() { - firstCar = new component(30, 50, "blue", 25, 225, 'car'); - myPuddle = new component(100, 100, "#5FC4D8", 150, 225, 'substrate'); + firstCar = new component(30, 50, "#B800FF", 25, 225, 'car'); + myPuddle = new component(100, 250, "#68471A", 350, 225, 'substrate'); + myPuddleSubstrate = new Substrate(myPuddle, 0.3, 0.5); myX = new component("14px", "Consolas", "black", 180, 5, "text"); myY = new component("14px", "Consolas", "black", 180, 10, "text"); mySpeed = new component("30px", "Consolas", "red", 30, 15, "text"); + myMemo = new component("30px", "Consolas", "red", 400, 15, "text"); myGameArea.start(); } @@ -96,27 +99,28 @@ function component(width, height, color, x, y, type) { } function accelerate(n, myGamePiece) { + divider = checkSubstrate(myGamePiece.x, myGamePiece.y); if (n>0) { - if (myGamePiece.speed < myGamePiece.maxForwardSpeed) { + if (myGamePiece.speed < myGamePiece.maxForwardSpeed * divider.maxSpeedReduction) { myGamePiece.speed = myGamePiece.speed + n; - if (myGamePiece.speed > myGamePiece.maxForwardSpeed) { - myGamePiece.speed = myGamePiece.maxForwardSpeed; + if (myGamePiece.speed > myGamePiece.maxForwardSpeed * divider.maxSpeedReduction) { + myGamePiece.speed = myGamePiece.maxForwardSpeed * divider.maxSpeedReduction; } - } else if (myGamePiece.speed == myGamePiece.maxForwardSpeed) { + } else if (myGamePiece.speed == myGamePiece.maxForwardSpeed * divider.maxSpeedReduction) { // nothing to do in this case } else { - slowdown(myGameArea.friction, myGamePiece); + slowdown(myGameArea.friction + divider.friction, myGamePiece); } } else { - if (myGamePiece.speed > myGamePiece.maxBackwardSpeed) { + if (myGamePiece.speed > myGamePiece.maxBackwardSpeed * divider.maxSpeedReduction) { myGamePiece.speed = myGamePiece.speed + n; - if (myGamePiece.speed < myGamePiece.maxBackwardSpeed) { - myGamePiece.speed = myGamePiece.maxBackwardSpeed; + if (myGamePiece.speed < myGamePiece.maxBackwardSpeed * divider.maxSpeedReduction) { + myGamePiece.speed = myGamePiece.maxBackwardSpeed * divider.maxSpeedReduction; } - } else if (myGamePiece.speed == myGamePiece.maxBackwardSpeed) { + } else if (myGamePiece.speed == myGamePiece.maxBackwardSpeed * divider.maxSpeedReduction) { // nothing to do in this case } else { - slowdown(myGameArea.friction, myGamePiece); + slowdown(myGameArea.friction + divider.friction, myGamePiece); } } } @@ -144,7 +148,17 @@ function boosterOff(lmyGamePiece) { } function checkSubstrate(x,y) { - + divider = new Substrate(null, 0, 1); + console.log("X: " + x + " ("+ myPuddleSubstrate.component.x +" - " + myPuddleSubstrate.component.height / 2 + ") Y: " + y + " ("+ myPuddleSubstrate.component.y +" - " + myPuddleSubstrate.component.width / 2 + ") "); + if ((x > myPuddleSubstrate.component.x - myPuddleSubstrate.component.height / 2 && x < myPuddleSubstrate.component.x + myPuddleSubstrate.component.height / 2) && (y > myPuddleSubstrate.component.y - myPuddleSubstrate.component.width / 2 && y < myPuddleSubstrate.component.y + myPuddleSubstrate.component.width / 2)) { + divider.maxSpeedReduction = myPuddleSubstrate.maxSpeedReduction; + divider.friction = myPuddleSubstrate.friction; + sMemo = 'IN'; + } else { + myPuddleSubstrate.component.color = '#5FC4D8'; + sMemo = 'OUT'; + } + return divider; } function updateGameArea() { @@ -175,7 +189,9 @@ function updateGameArea() { myY.text="Y: " + firstCar.y.toFixed(2); myY.update(); mySpeed.text="SPEED: " + firstCar.speed.toFixed(2); - mySpeed.update(); + mySpeed.update(); + myMemo.text=sMemo; + myMemo.update(); myPuddle.update(); firstCar.newPos(); firstCar.update();