UNPKG

ngx-snake

Version:

Snake game as an angular component, its only the core of the game... you need to add everything around it (controls, score...) yourself :)

58 lines 6.14 kB
import { Component, Input, Output } from '@angular/core'; import { GameManagerService } from './services/game-manager.service'; import * as i0 from "@angular/core"; import * as i1 from "./services/game-manager.service"; import * as i2 from "./components/board/board.component"; import * as i3 from "@angular/common"; export class NgxSnakeComponent { constructor(_manager) { this._manager = _manager; this.boardHeight = 10; this.boardWidth = 10; this.foodEaten = this._manager.foodEaten$; this.gameOver = this._manager.gameOver$; this.grid$ = this._manager.grid$; } ngOnInit() { this._manager.initialize(this.boardHeight, this.boardWidth); } actionUp() { this._manager.up(); } actionRight() { this._manager.right(); } actionDown() { this._manager.down(); } actionLeft() { this._manager.left(); } actionStart() { this._manager.start(); } actionStop() { this._manager.pause(); } actionReset() { this._manager.reset(); } } NgxSnakeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: NgxSnakeComponent, deps: [{ token: i1.GameManagerService }], target: i0.ɵɵFactoryTarget.Component }); NgxSnakeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: NgxSnakeComponent, selector: "ngx-snake", inputs: { boardHeight: "boardHeight", boardWidth: "boardWidth" }, outputs: { foodEaten: "foodEaten", gameOver: "gameOver" }, providers: [GameManagerService], ngImport: i0, template: ` <ngx-snake-board [data]="grid$ | async"></ngx-snake-board> `, isInline: true, components: [{ type: i2.BoardComponent, selector: "ngx-snake-board", inputs: ["data"] }], pipes: { "async": i3.AsyncPipe } }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: NgxSnakeComponent, decorators: [{ type: Component, args: [{ selector: 'ngx-snake', template: ` <ngx-snake-board [data]="grid$ | async"></ngx-snake-board> `, styles: [], providers: [GameManagerService] }] }], ctorParameters: function () { return [{ type: i1.GameManagerService }]; }, propDecorators: { boardHeight: [{ type: Input }], boardWidth: [{ type: Input }], foodEaten: [{ type: Output }], gameOver: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXNuYWtlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbmFrZS9zcmMvbGliL25neC1zbmFrZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDOzs7OztBQVduRSxNQUFNLE9BQU8saUJBQWlCO0lBUzFCLFlBQ1ksUUFBNEI7UUFBNUIsYUFBUSxHQUFSLFFBQVEsQ0FBb0I7UUFUL0IsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUV2QixjQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7UUFDckMsYUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBRXRDLFVBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUtuQyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTSxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEMsV0FBVyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLFVBQVUsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxVQUFVLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFHdEMsV0FBVztRQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLFVBQVU7UUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQixDQUFDOzs4R0FsQ1EsaUJBQWlCO2tHQUFqQixpQkFBaUIsaUtBRmYsQ0FBQyxrQkFBa0IsQ0FBQywwQkFMckI7OztLQUdUOzJGQUlRLGlCQUFpQjtrQkFUN0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsV0FBVztvQkFDckIsUUFBUSxFQUFFOzs7S0FHVDtvQkFDRCxNQUFNLEVBQUUsRUFBRTtvQkFDVixTQUFTLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDbEM7eUdBRVksV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtHYW1lTWFuYWdlclNlcnZpY2V9IGZyb20gJy4vc2VydmljZXMvZ2FtZS1tYW5hZ2VyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25neC1zbmFrZScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5neC1zbmFrZS1ib2FyZFxuICAgICAgICAgICAgW2RhdGFdPVwiZ3JpZCQgfCBhc3luY1wiPjwvbmd4LXNuYWtlLWJvYXJkPlxuICAgIGAsXG4gICAgc3R5bGVzOiBbXSxcbiAgICBwcm92aWRlcnM6IFtHYW1lTWFuYWdlclNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIE5neFNuYWtlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBib2FyZEhlaWdodDogbnVtYmVyID0gMTA7XG4gICAgQElucHV0KCkgYm9hcmRXaWR0aDogbnVtYmVyID0gMTA7XG5cbiAgICBAT3V0cHV0KCkgZm9vZEVhdGVuID0gdGhpcy5fbWFuYWdlci5mb29kRWF0ZW4kO1xuICAgIEBPdXRwdXQoKSBnYW1lT3ZlciA9IHRoaXMuX21hbmFnZXIuZ2FtZU92ZXIkO1xuXG4gICAgcHVibGljIGdyaWQkID0gdGhpcy5fbWFuYWdlci5ncmlkJDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9tYW5hZ2VyOiBHYW1lTWFuYWdlclNlcnZpY2VcbiAgICApIHtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbWFuYWdlci5pbml0aWFsaXplKHRoaXMuYm9hcmRIZWlnaHQsIHRoaXMuYm9hcmRXaWR0aCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGlvblVwKCkgeyB0aGlzLl9tYW5hZ2VyLnVwKCk7IH1cbiAgICBwdWJsaWMgYWN0aW9uUmlnaHQoKSB7IHRoaXMuX21hbmFnZXIucmlnaHQoKTsgfVxuICAgIHB1YmxpYyBhY3Rpb25Eb3duKCkgeyB0aGlzLl9tYW5hZ2VyLmRvd24oKTsgfVxuICAgIHB1YmxpYyBhY3Rpb25MZWZ0KCkgeyB0aGlzLl9tYW5hZ2VyLmxlZnQoKTsgfVxuXG5cbiAgICBwdWJsaWMgYWN0aW9uU3RhcnQoKSB7XG4gICAgICAgIHRoaXMuX21hbmFnZXIuc3RhcnQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWN0aW9uU3RvcCgpIHtcbiAgICAgICAgdGhpcy5fbWFuYWdlci5wYXVzZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhY3Rpb25SZXNldCgpIHtcbiAgICAgICAgdGhpcy5fbWFuYWdlci5yZXNldCgpO1xuICAgIH1cblxufVxuIl19