UNPKG

snake-cli-ts

Version:
69 lines (68 loc) 2.46 kB
"use strict"; 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;