Add Asteroid game
This commit is contained in:
88
CM2030 Graphics Programming/Topic 3/3.4.1/spaceship.js
Normal file
88
CM2030 Graphics Programming/Topic 3/3.4.1/spaceship.js
Normal file
@ -0,0 +1,88 @@
|
||||
class Spaceship {
|
||||
constructor(lives) {
|
||||
this.velocity = new createVector(0, 0);
|
||||
this.location = new createVector(width / 2, height / 2);
|
||||
this.acceleration = new createVector(0, 0);
|
||||
this.maxVelocity = 5;
|
||||
this.bulletSys = new BulletSystem();
|
||||
this.size = 50;
|
||||
this.lives = lives;
|
||||
this.score = 0;
|
||||
}
|
||||
|
||||
die() {
|
||||
this.lives -= 1;
|
||||
}
|
||||
|
||||
respawn() {
|
||||
this.velocity = new createVector(0, 0);
|
||||
this.location = new createVector(width / 2, height / 2);
|
||||
this.acceleration = new createVector(0, 0);
|
||||
this.bulletSys = new BulletSystem();
|
||||
}
|
||||
|
||||
run() {
|
||||
this.bulletSys.run();
|
||||
this.draw();
|
||||
this.move();
|
||||
this.edges();
|
||||
this.interaction();
|
||||
}
|
||||
|
||||
draw() {
|
||||
fill(125);
|
||||
triangle(
|
||||
this.location.x - this.size / 2,
|
||||
this.location.y + this.size / 2,
|
||||
this.location.x + this.size / 2,
|
||||
this.location.y + this.size / 2,
|
||||
this.location.x,
|
||||
this.location.y - this.size / 2
|
||||
);
|
||||
}
|
||||
|
||||
move() {
|
||||
let diff = this.velocity.add(this.acceleration);
|
||||
this.velocity.add(this.acceleration);
|
||||
this.velocity.limit(this.maxVelocity);
|
||||
this.location.add(this.velocity);
|
||||
this.acceleration.mult(0);
|
||||
}
|
||||
|
||||
applyForce(f) {
|
||||
this.acceleration.add(f);
|
||||
}
|
||||
|
||||
interaction() {
|
||||
if (keyIsDown(LEFT_ARROW)) {
|
||||
this.applyForce(createVector(-0.1, 0));
|
||||
}
|
||||
if (keyIsDown(RIGHT_ARROW)) {
|
||||
this.applyForce(createVector(0.1, 0));
|
||||
}
|
||||
if (keyIsDown(UP_ARROW)) {
|
||||
this.applyForce(createVector(0, -0.1));
|
||||
}
|
||||
if (keyIsDown(DOWN_ARROW)) {
|
||||
this.applyForce(createVector(0, 0.1));
|
||||
}
|
||||
}
|
||||
|
||||
fire() {
|
||||
this.bulletSys.fire(this.location.x, this.location.y);
|
||||
}
|
||||
|
||||
edges() {
|
||||
if (this.location.x < 0) this.location.x = width;
|
||||
else if (this.location.x > width) this.location.x = 0;
|
||||
else if (this.location.y < 0) this.location.y = height;
|
||||
else if (this.location.y > height) this.location.y = 0;
|
||||
}
|
||||
|
||||
setNearEarth() {
|
||||
//YOUR CODE HERE (6 lines approx)
|
||||
this.applyForce(new createVector(0, 0.05));
|
||||
let friction = this.velocity.copy().mult(-1/30);
|
||||
this.applyForce(friction);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user