node-console-games/build/tanks.js

159 lines
3.0 KiB
JavaScript
Raw Normal View History

2019-05-16 18:18:59 +00:00
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function (i18n) {
loop(i18n);
};
var _tank = require('./classes/tank');
var _tank2 = _interopRequireDefault(_tank);
var _interface = require('./classes/interface');
var _interface2 = _interopRequireDefault(_interface);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var FRAME = 50;
var ui = new _interface2.default();
var immoblize = false;
var one = new _tank2.default(ui);
one.go(10, ui.rows);
var two = new _tank2.default(ui);
two.go(ui.columns - 10, ui.rows);
var stop = false;
function loop(i18n) {
if (stop) return;
ui.clear();
if (one.dead || two.dead) {
var num = one.dead ? '2' : '1';
var msg = i18n.t('tanks.playerWon', { num: num });
ui.cursor.red();
ui.cursor.bold();
ui.cursor.goto(ui.center.x - msg.length / 2, ui.center.y);
ui.write(msg);
stop = true;
return;
}
one.draw();
one.bullets.forEach(function (bullet, i) {
if (bullet.dead) {
immoblize = false;
one.bullets.splice(i, 1);
return;
}
bullet.move();
bullet.draw();
if (bullet.collides(two)) {
two.health -= 10;
bullet.dead = true;
}
});
ui.cursor.goto(0, 1);
if (turn() === one) ui.cursor.hex('#54ffff');
ui.write(i18n.t('tanks.player', { number: "1" }));
ui.cursor.reset();
ui.cursor.goto(0, 2);
ui.write(i18n.t('tanks.health', { value: one.health }));
ui.cursor.goto(0, 3);
ui.write(i18n.t('tanks.angle', { value: parseInt(one.angle) }));
two.draw();
two.bullets.forEach(function (bullet, i) {
if (bullet.dead) {
immoblize = false;
two.bullets.splice(i, 1);
return;
}
bullet.move();
bullet.draw();
if (bullet.collides(one)) {
one.health -= 10;
bullet.dead = true;
}
});
ui.cursor.goto(ui.output.columns - 10, 1);
if (turn() === two) ui.cursor.hex('#54ffff');
ui.write(i18n.t('tanks.player', { number: "2" }));
ui.cursor.reset();
ui.cursor.goto(ui.output.columns - 10, 2);
ui.write(i18n.t('tanks.health', { value: two.health }));
ui.cursor.goto(ui.output.columns - 10, 3);
ui.write(i18n.t('tanks.angle', { value: parseInt(two.angle) }));
setTimeout(loop, FRAME, i18n);
}
ui.onKey('down', function () {
if (immoblize) return;
turn().angle -= 1;
});
ui.onKey('up', function () {
if (immoblize) return;
turn().angle += 1;
});
ui.onKey('left', function () {
if (immoblize) return;
turn().x -= 1;
});
ui.onKey('right', function () {
if (immoblize) return;
turn().x += 1;
});
ui.onKey('space', function () {
if (immoblize) return;
turn().shoot();
immoblize = true;
TURN = !TURN;
});
ui.onKey(function () {
if (one.dead || two.dead) {
one.go(10, ui.rows);
two.go(ui.columns - 10, ui.rows);
one.health = 100;
two.health = 100;
one.dead = false;
two.dead = false;
stop = false;
loop();
}
});
var TURN = true;
function turn() {
if (TURN) return one;
return two;
}