snake-cli-ts
Version:
Nodejs cli snake game
69 lines (68 loc) • 2.46 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var chalk_1 = __importDefault(require("chalk"));
var Point_1 = __importDefault(require("../helpers/Point"));
var Food_1 = __importDefault(require("./Food"));
var getRandomInt = function (min, max) { return min + Math.floor(Math.random() * (max - min + 1)); };
var FoodManager = (function () {
function FoodManager(game) {
this.game = game;
this.foods = [];
}
FoodManager.prototype.find = function (x, y) {
return this.foods.find(function (_a) {
var point = _a.point;
return point.x === x && point.y === y;
});
};
FoodManager.prototype.findIndex = function (x, y) {
return this.foods.findIndex(function (_a) {
var point = _a.point;
return point.x === x && point.y === y;
});
};
FoodManager.prototype.remove = function (x, y) {
var index = this.findIndex(x, y);
return this.foods.splice(index, 1)[0];
};
FoodManager.prototype.add = function () {
var point = this.getRandomPoint(this.game.snake.body);
if (!point) {
return;
}
var food = new Food_1.default({
point: point,
symbol: chalk_1.default.green('@'),
}, this);
this.foods.push(food);
};
FoodManager.prototype.getRandomPoint = function (exceptions) {
if (exceptions === void 0) { exceptions = []; }
var lottery = [];
var _loop_1 = function (y) {
var _loop_2 = function (x) {
if (exceptions.some(function (e) { return e.x === x && e.y === y; })) {
return "continue";
}
lottery.push(new Point_1.default(x, y));
};
for (var x = 0; x < this_1.game.width; x++) {
_loop_2(x);
}
};
var this_1 = this;
for (var y = 0; y < this.game.height; y++) {
_loop_1(y);
}
return lottery[getRandomInt(0, lottery.length - 1)];
};
FoodManager.prototype.reset = function () {
this.foods.length = 0;
this.add();
};
return FoodManager;
}());
exports.default = FoodManager;