diff --git a/apps/pongclock/app.js b/apps/pongclock/app.js index 932c1f3d7..2a10bf6ed 100644 --- a/apps/pongclock/app.js +++ b/apps/pongclock/app.js @@ -1,119 +1,116 @@ class Ball { - constructor(collision) { - this.collision = collision; - this.w = 4; - this.h = this.w; - this.y = height / 2 - this.h / 2; - this.x = width / 2 - this.w / 2; + constructor(collision) { + this.collision = collision; + this.w = 4; + this.h = this.w; + this.y = height / 2 - this.h / 2; + this.x = width / 2 - this.w / 2; this.oldX = this.x; this.oldY = this.y; - this.velX = 6; - this.velY = 3.5 + Math.random(); - } + this.velX = 6; + this.velY = 3.5 + Math.random(); + } - reset() { - this.y = height / 2 - this.h / 2; - this.x = width / 2 - this.w / 2; - this.velX = 6; - this.velY = 3.5 + Math.random(); - } + reset() { + this.y = height / 2 - this.h / 2; + this.x = width / 2 - this.w / 2; + this.velX = 6; + this.velY = 3.5 + Math.random(); + } - checkCollision(that, isLeft) { + checkCollision(that, isLeft) { let test = false; if (isLeft) { test = this.x <= that.w + this.w && this.y > that.y && this.y < that.y + that.h; - } - else { + } else { test = this.x >= that.x + this.w && this.y > that.y && this.y < that.y + that.h; } - if (test) { - this.velX = -this.velX; + if (test) { + this.velX = -this.velX; this.velY = (3.5 + 2 * Math.random()) * this.velY / Math.abs(this.velY); if (isLeft) { - right.follow = this; + right.follow = this; left.follow = null; - } else { - left.follow = this; + } else { + left.follow = this; right.follow = null; - } - } - } + } + } + } - move() { - if (this.velX > 0) { - this.checkCollision(right, false); - } else { - this.checkCollision(left, true); + move() { + if (this.velX > 0) { + this.checkCollision(right, false); + } else { + this.checkCollision(left, true); } - this.x += this.velX; - this.y += this.velY; + this.x += this.velX; + this.y += this.velY; - if (this.y <= this.h) { - this.y = this.h; + if (this.y <= this.h) { + this.y = this.h; this.velY = -this.velY; - } + } - if (this.y >= height - this.h) { - this.y = height - this.h; + if (this.y >= height - this.h) { + this.y = height - this.h; this.velY = -this.velY; - } + } - if(this.x >= width) { - left.scored(); + if (this.x >= width) { + left.scored(); restart(); - } else if(this.x < 0) { - right.scored(); + } else if (this.x < 0) { + right.scored(); restart(); - } + } - } + } } class Paddle { - constructor(side) { - this.side = side; - this.w = 4;//15; - this.h = 30;//80; - this.y = height / 2 - this.h/2; - this.follow = null; - this.target = height / 2 - this.h/2; - this.score = 99; + constructor(side) { + this.side = side; + this.w = 4; //15; + this.h = 30; //80; + this.y = height / 2 - this.h / 2; + this.follow = null; + this.target = height / 2 - this.h / 2; + this.score = 99; this.hasLost = false; - } + } - reset() { - this.follow = null; + reset() { + this.follow = null; this.hasLost = false; - this.target = height / 2 - this.h/2; - this.y = height / 2 - this.h/2; - this.move(); - } + this.target = height / 2 - this.h / 2; + this.y = height / 2 - this.h / 2; + this.move(); + } - scored() { + scored() { let d = new Date(); let value = 0; if (this.side == "left") { - value = d.getHours(); + value = d.getHours(); } else { - value = d.getMinutes(); + value = d.getMinutes(); } if (this.score < value) { this.score++; - } - else { + } else { this.score = value; } - } + } - move() { + move() { - if (this.follow && ! this.hasLost) { + if (this.follow && !this.hasLost) { var dy = this.follow.y - this.y - this.h / 2; this.y += dy / 2; - } - else { + } else { this.y += (this.target - this.y) / 10; } if (this.y < 0) { @@ -122,25 +119,26 @@ class Paddle { if (this.y > height - this.h) { this.y = height - this.h; } - } + } } var updateTimeout = null; + function update() { - var d = new Date(); + var d = new Date(); var lastStep = Date.now(); - left.move(); - right.move(); - if(d.getHours() != left.score) { + left.move(); + right.move(); + if (d.getHours() != left.score) { right.follow = null; - right.hasLost = true; - } - if(d.getMinutes() != right.score) { + right.hasLost = true; + } + if (d.getMinutes() != right.score) { left.follow = null; - left.hasLost = true; - } - - ball.move(); + left.hasLost = true; + } + + ball.move(); redraw(); var nextStep = 40 - (Date.now() - lastStep); //console.log(nextStep); @@ -153,7 +151,7 @@ function redraw() { let fontTop = top + height / 11; let topHeight = top + height; g.reset(); - + if (settings.isInvers) { g.setColor(g.theme.bg); g.setBgColor(g.theme.fg); @@ -212,6 +210,7 @@ function stop() { } var pauseTimeout = null; + function pause() { stop(); left.scored(); @@ -235,7 +234,7 @@ Bangle.setUI("clock"); //setup play area var height = g.getHeight(), - width = g.getWidth(); + width = g.getWidth(); var top = 0; g.reset();