54 lines
1.2 KiB
JavaScript
54 lines
1.2 KiB
JavaScript
class Engine {
|
|
constructor() {
|
|
this.ticks = 0;
|
|
this.current_asteroid = new Asteroid();
|
|
this.asteroids = [this.current_asteroid];
|
|
this.resources = {
|
|
dust: 0,
|
|
crystals: 0
|
|
}
|
|
}
|
|
|
|
tick() {
|
|
this.ticks++;
|
|
}
|
|
|
|
update() {
|
|
document.querySelector('#time').innerHTML = this.ticks + ' hours';
|
|
document.querySelector('#res-dust').innerHTML = this.resources.dust;
|
|
document.querySelector('#res-crystals').innerHTML = this.resources.crystals;
|
|
}
|
|
}
|
|
|
|
class Player {
|
|
constructor(engine) {
|
|
this.engine = engine;
|
|
}
|
|
|
|
mine() {
|
|
let type = this.engine.current_asteroid.mine_resource();
|
|
this.engine.resources[type]++;
|
|
}
|
|
}
|
|
|
|
class Asteroid {
|
|
mine_resource() {
|
|
return ['dust', 'dust', 'dust', 'crystals'][Helper.random_number(0, 4)];
|
|
}
|
|
}
|
|
|
|
var engine = new Engine();
|
|
var player = new Player(engine);
|
|
|
|
var bootstrap = function() {
|
|
setInterval(() => {
|
|
engine.tick();
|
|
engine.update();
|
|
}, 1000);
|
|
|
|
document.querySelector('#btn-mine').onclick = () => {
|
|
player.mine();
|
|
engine.update();
|
|
};
|
|
};
|