This commit is contained in:
Adrian Hinz 2017-11-19 23:00:52 +01:00
parent 27b4d153bf
commit abe4c65e18
1 changed files with 36 additions and 20 deletions

View File

@ -4,22 +4,25 @@ var myPuddle;
var myX; var myX;
var myY; var myY;
var mySpeed; var mySpeed;
var myMemo;
var sMemo = 'T';
class Substrate { class Substrate {
constructor(x, y, height, width, friction, ) { constructor(component, friction, maxSpeedReduction) {
this.height = height; this.component = component;
this.width = width; this.friction = friction;
this.maxSpeedReduction = maxSpeedReduction;
} }
} }
function startGame() { function startGame() {
firstCar = new component(30, 50, "blue", 25, 225, 'car'); firstCar = new component(30, 50, "#B800FF", 25, 225, 'car');
myPuddle = new component(100, 100, "#5FC4D8", 150, 225, 'substrate'); 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"); myX = new component("14px", "Consolas", "black", 180, 5, "text");
myY = new component("14px", "Consolas", "black", 180, 10, "text"); myY = new component("14px", "Consolas", "black", 180, 10, "text");
mySpeed = new component("30px", "Consolas", "red", 30, 15, "text"); mySpeed = new component("30px", "Consolas", "red", 30, 15, "text");
myMemo = new component("30px", "Consolas", "red", 400, 15, "text");
myGameArea.start(); myGameArea.start();
} }
@ -96,27 +99,28 @@ function component(width, height, color, x, y, type) {
} }
function accelerate(n, myGamePiece) { function accelerate(n, myGamePiece) {
divider = checkSubstrate(myGamePiece.x, myGamePiece.y);
if (n>0) { if (n>0) {
if (myGamePiece.speed < myGamePiece.maxForwardSpeed) { if (myGamePiece.speed < myGamePiece.maxForwardSpeed * divider.maxSpeedReduction) {
myGamePiece.speed = myGamePiece.speed + n; myGamePiece.speed = myGamePiece.speed + n;
if (myGamePiece.speed > myGamePiece.maxForwardSpeed) { if (myGamePiece.speed > myGamePiece.maxForwardSpeed * divider.maxSpeedReduction) {
myGamePiece.speed = myGamePiece.maxForwardSpeed; 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 // nothing to do in this case
} else { } else {
slowdown(myGameArea.friction, myGamePiece); slowdown(myGameArea.friction + divider.friction, myGamePiece);
} }
} else { } else {
if (myGamePiece.speed > myGamePiece.maxBackwardSpeed) { if (myGamePiece.speed > myGamePiece.maxBackwardSpeed * divider.maxSpeedReduction) {
myGamePiece.speed = myGamePiece.speed + n; myGamePiece.speed = myGamePiece.speed + n;
if (myGamePiece.speed < myGamePiece.maxBackwardSpeed) { if (myGamePiece.speed < myGamePiece.maxBackwardSpeed * divider.maxSpeedReduction) {
myGamePiece.speed = myGamePiece.maxBackwardSpeed; 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 // nothing to do in this case
} else { } else {
slowdown(myGameArea.friction, myGamePiece); slowdown(myGameArea.friction + divider.friction, myGamePiece);
} }
} }
} }
@ -144,7 +148,17 @@ function boosterOff(lmyGamePiece) {
} }
function checkSubstrate(x,y) { 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() { function updateGameArea() {
@ -176,6 +190,8 @@ function updateGameArea() {
myY.update(); myY.update();
mySpeed.text="SPEED: " + firstCar.speed.toFixed(2); mySpeed.text="SPEED: " + firstCar.speed.toFixed(2);
mySpeed.update(); mySpeed.update();
myMemo.text=sMemo;
myMemo.update();
myPuddle.update(); myPuddle.update();
firstCar.newPos(); firstCar.newPos();
firstCar.update(); firstCar.update();