2d-gaming v2.1.0
2d-gaming
Description
This is an Angular package fo developing 2d games in angular. Please report issues/questions/any ideas to better help this package.
Installing
- Run npm instll 2d-gaming
- Import { TwoDGaming } from '2d-gaming'; Into your module
- Import { GameAreaObject, ObjectComponent, ObjectDesign, PositionObject } from '2d-gaming' into the file of your game.
Getting Started
Setup your game
- Setup your game area. Each area object will have a name, width, height and gravity.
First Create Your Game Object
// Create A New File gameArea.ts
import { GameAreaObject } from '2d-gaming';
export class GameArea implements OnInit{
component: GameAreaObject;
constructor() {
this.component = new GameAreaObject('myGame', '300px', '300px');
this.game.gravity = 0;
}
};
Then SetUp Your Object In Your Component
// Create A New File game.component.ts
import {GameAreaObject, ObjectComponent, ObjectDesign, PositionObject, ObjectArray } from '2d-gaming';
import {GameArea} from './gameArea.ts':
@Component({
selector: 'app-game',
templateUrl: './game.html'
})
export class GameComponent implements OnInit {
gameObject: GameArea
ngOnInit() {
this.gameObject = new GameArea();
this.gameObject.component.doEveryFrame = (() => this.doPerFrame());
}
start() {
this.gameObject.component.start(); // this starts the game
}
stop() {
this.gameObject.component.stop(); // this stops and resets the game
}
doPerFrame() {
// put code here you want to run everyFrame
}
}
<!--- In game.html Place This-->
<app-game-area></app-game-area>
<button (click)="start()">Start</button>
Now lets add a player.
// Create A New File player.ts import {GameAreaObject, ObjectComponent, ObjectDesign, PositionObject } from '2d-gaming' export class Player { component: ObjectComponent; position: PositionObject; design: ObjectDesign; constructor(public game: GameAreaObject) { this.design = new ObjectDesign(20, 20, 'square', 'green'); // create a design. we will add this to our player this.position = new PositionObject(150, 150); // create a position object. we will add this to our player this.component = new ObjectComponent(this.game, this.design, this.position) // add the design and position to the player. // we inject a gameObject into the constructor so the player can know what game it belongs to } }
Now SetUp the player in the component
// back in game.component.ts gameObject: GameArea; playerObject: Player; //Import Player from the previous file ngOnInit() { this.gameObject = new GameArea(); this.playerObject = new Player(this.gameObject.component); // Create a new Instance of it and inject the component of the gameObject in its constructor }
Lets give our player movement.
// Im using HostListener. You can use another event detection if you pefer @HostListener('document:keyup', ['$event']) onKeyup(e: KeyboardEvent) { const code = e.keyCode; this.playerObject.component.clearMovement(); } @HostListener('document:keydown', ['$event']) onkeydown(e: KeyboardEvent) { const code = e.keyCode; // D Key if (code === 68) { this.playerObject.component.moveRight(1.5); // move right } // A Key if (code === 65) { this.playerObject.component.moveLeft(1.5); //move left } // W Key if (code === 87) { this.playerObject.moveUp(1.5); // move up } // S Key if (code === 83) { this.playerObject.component.moveDown(1.5); // move down } }
Lets add an object that will move from one point to another. To do this we set object.path. The path object has a x and y value for the points you want your object to move to.
// Create a new file item.ts import {GameAreaObject, ObjectComponent, ObjectDesign, PositionObject, IPath } from '2d-gaming' export class item { component: ObjectComponent; position: PositionObject; design: ObjectDesign; constructor(public game: GameAreaObject) { this.design = new ObjectDesign(20, 20, 'square', 'red'); // create a design. we will add this to our object this.position = new PositionObject(100, 100); // create a position object. we will add this to our object this.component = new ObjectComponent(this.game, this.design, this.position) // add the design and position to the object. // we inject a gameObject into the constructor so the object can know what game it belongs to this.component.newPath = { x: 200, // New X Pos y: 200, // New Y Pos speed: 1, // Speed It Moves At infinit: false // If it stops at designated location or continue after } } }
add the object to our component
gameObject: GameArea; playerObject: Player; //Import Player from the previous file movingObject: item; //Import item from the previous file ngOnInit() { this.gameObject = new GameArea(); this.playerObject = new Player(this.gameObject.component); // Create a new Instance of it and inject the component of the gameObject in its constructor this.movingObject = new item(this.gameObject.component) }
Now Run And click Start
Objects In Package
Initialize each object like this
var Init = new Object();
ObjectComponent
Call | Description | Paramaters |
---|---|---|
draw() | draws the object on the canvas | none |
shoot() | shoots the bullets | none |
name | Description |
---|---|
game | the gameArea it belongs to |
design | a designObject |
position | a PositionObject |
movement | a Movement Object |
bullets | items your wanting to shoot |
score | how points stored in this object |
isBarrier | if object is a barrier |
DesignObject
Name | Description |
---|---|
shape | is type image, square, circle, text |
width | width of the connected object |
height | height of the connected Object |
color | is a color unless shape is image then is an image url |
text | the text of an text shape |
PositionObject
Name | Description |
---|---|
xPos | x position |
yPos | y position |
MovementObject
Name | Description |
---|---|
speedY | the speed of the object on the y axis |
speedX | speed of object on x axis |
gravity | gravity of object |
position | a PositionObject |
Name | Description | paramater |
---|---|---|
moveright() | moves object right | speed: number |
moveLeft() | moves object left | speed: number |
moveUp() | moves object up | speed: number |
moveDown() | moves object down | speed: number |
newPos | moves object to new location | xPos: number, yPos: number, speed: number, infinit: boolean |
GameComponent
call | Description | Paramaters |
---|---|---|
.start() | starts the game | none |
stop() | stops the game | none |
.clear() | clears the game area | none |
.doEveryFrame() | runs every frame | function |
.everyinterval() | returns true or false. Do somthing every interval | number for when you want the interval to be set at |
name | Description |
---|---|
frame | the current frame your on |
area | The element container of the game |
gravity | the gravity of the game |
crashHandler | handles collides in game |
height | height of the game |
width | width of the game |
gameObjects | all objects in game |
name | name of the game |
ObjectArray
This is a object that lets have multiple objects in one. Its main purpose is to create multiple intances of one object.
call | Description | Paramaters |
---|---|---|
add() | Adds an Object | item: ObjectComponent |
addMulti() | Adds array of objects | items: ObjectComponent[] |
multiply() | adds multiple instances of one object | item: ObjectComponent, howMany: number |
removeFromGame() | removes its items from the game | none |
name | Description |
---|---|
items | array of objectcomponents |
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago