Moved classes his own files
This commit is contained in:
parent
c13c752716
commit
135f7d8a41
55
Bar.js
Normal file
55
Bar.js
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
class Bar {
|
||||||
|
constructor(ctx, key) {
|
||||||
|
this.ctx = ctx;
|
||||||
|
this.key = key;
|
||||||
|
|
||||||
|
this.w = 100;
|
||||||
|
this.h = 20;
|
||||||
|
this.speed = 10; // Target Speed
|
||||||
|
this._speed = 0; // Current Speed and direction
|
||||||
|
|
||||||
|
this.xLimit = (ctx.canvas.width - this.w);
|
||||||
|
this.reset();
|
||||||
|
}
|
||||||
|
reset() {
|
||||||
|
this.x = (this.ctx.canvas.width - this.w) / 2;
|
||||||
|
this.y = (this.ctx.canvas.height - this.h * 2);
|
||||||
|
|
||||||
|
this._y = this.ctx.canvas.height + 10;
|
||||||
|
}
|
||||||
|
update() {
|
||||||
|
this.move();
|
||||||
|
this.draw();
|
||||||
|
}
|
||||||
|
stop() {
|
||||||
|
this._speed = 0;
|
||||||
|
}
|
||||||
|
left() {
|
||||||
|
if (this._speed >= 0) this._speed = -this.speed;
|
||||||
|
this.x += this._speed;
|
||||||
|
if (this.x < 0) this.x = 0;
|
||||||
|
this._speed -= 0.5;
|
||||||
|
}
|
||||||
|
right() {
|
||||||
|
if (this._speed <= 0) this._speed = this.speed;
|
||||||
|
this.x += this._speed;
|
||||||
|
if (this.x > this.xLimit) this.x = this.xLimit;
|
||||||
|
this._speed += 0.5;
|
||||||
|
}
|
||||||
|
move() {
|
||||||
|
if (this.key.isDown('ArrowLeft')) this.left();
|
||||||
|
else
|
||||||
|
if (this.key.isDown('ArrowRight')) this.right();
|
||||||
|
else
|
||||||
|
this.stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
draw() {
|
||||||
|
if (this._y != this.y) this._y--;
|
||||||
|
if (this._y < this.ctx.canvas.height) {
|
||||||
|
this.ctx.fillStyle = 'black';
|
||||||
|
this.ctx.fillRect(this.x, this._y, this.w, this.h);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
17
Intro.js
Normal file
17
Intro.js
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
class Intro {
|
||||||
|
constructor(ctx) {
|
||||||
|
this.ctx = ctx;
|
||||||
|
this.x = ctx.canvas.width;
|
||||||
|
this.y = ctx.canvas.height / 2 - 48;
|
||||||
|
}
|
||||||
|
update() {
|
||||||
|
this.centerText('BreakOut', this.y, '48px', 'Consolas', 'Black');
|
||||||
|
this.centerText('JDG', this.y + 50, '24px', 'Consolas', 'Black');
|
||||||
|
}
|
||||||
|
centerText(txt, y, s, f, c) {
|
||||||
|
this.ctx.font = s + ' ' + f;
|
||||||
|
this.ctx.fillStyle = 'Black';
|
||||||
|
let x = (this.ctx.canvas.width - this.ctx.measureText(txt).width) / 2;
|
||||||
|
this.ctx.fillText(txt, x, y);
|
||||||
|
}
|
||||||
|
}
|
24
Key.js
Normal file
24
Key.js
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
class Key {
|
||||||
|
constructor(onKeydown) {
|
||||||
|
this._pressed = {};
|
||||||
|
this.cb_onKeydown = onKeydown;
|
||||||
|
|
||||||
|
window.addEventListener('keydown', e => this.onKeydown(e));
|
||||||
|
window.addEventListener('keyup', e => this.onKeyup(e));
|
||||||
|
}
|
||||||
|
|
||||||
|
setKeydown(fn) {
|
||||||
|
this.cb_onKeydown = fn;
|
||||||
|
}
|
||||||
|
|
||||||
|
isDown(keyCode) {
|
||||||
|
return this._pressed[keyCode];
|
||||||
|
}
|
||||||
|
onKeydown(event) {
|
||||||
|
this._pressed[event.code] = true;
|
||||||
|
if (this.cb_onKeydown) this.cb_onKeydown(event);
|
||||||
|
}
|
||||||
|
onKeyup(event) {
|
||||||
|
delete this._pressed[event.code];
|
||||||
|
}
|
||||||
|
}
|
25
Score.js
Normal file
25
Score.js
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
class Score {
|
||||||
|
constructor(ctx) {
|
||||||
|
this.ctx = ctx;
|
||||||
|
this.reset();
|
||||||
|
|
||||||
|
this.ctx.font = "30px Consolas";
|
||||||
|
let m = ctx.measureText('Score: 00000');
|
||||||
|
this.x = ctx.canvas.width - m.width;
|
||||||
|
this.y = -10;
|
||||||
|
}
|
||||||
|
reset() {
|
||||||
|
this.points = 0;
|
||||||
|
}
|
||||||
|
add(x) {
|
||||||
|
this.points += x;
|
||||||
|
}
|
||||||
|
update() {
|
||||||
|
if (this.y != 30) this.y++;
|
||||||
|
if (this.y > 0) {
|
||||||
|
this.ctx.font = "30px Consolas";
|
||||||
|
this.ctx.fillStyle = 'Black';
|
||||||
|
this.ctx.fillText('Score: ' + this.points, this.x, this.y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user