From fbe19ba35e77cfd498fc7424615701d0164a555f Mon Sep 17 00:00:00 2001 From: Sam Date: Tue, 12 Dec 2023 21:41:18 +0100 Subject: [PATCH] Added documentation and cleaned up code --- web/js/basicbullet.js | 111 +++++++++++++++++++++++------------------- 1 file changed, 60 insertions(+), 51 deletions(-) diff --git a/web/js/basicbullet.js b/web/js/basicbullet.js index 1ba2506..320cc5f 100644 --- a/web/js/basicbullet.js +++ b/web/js/basicbullet.js @@ -1,57 +1,66 @@ class bullet { - constructor(targetx, targety, radius, speed, shotPosX, shotPosY, hasMoved, angle) { // Add hasMoved parameter - this.angle = radians(angle); - this.targetx = targetx; - this.targety = targety; - this.x = shotPosX; - this.y = shotPosY; - this.radius = radius; - this.speed = speed; - this.bulletHit = false; - this.directionX = null; - this.directionY = null; - if ((this.directionX === null) || (this.directionY === null)) { - this.directionX = this.targetx; - this.directionY = this.targety; - } - this.hasMoved = hasMoved; // Set this.hasMoved to the value of hasMoved + constructor(targetx, targety, radius, speed, shotPosX, shotPosY, hasMoved, angle) { // Add hasMoved parameter + // add all incoming variables to the class + this.angle = radians(angle); + this.targetx = targetx; + this.targety = targety; + this.x = shotPosX; + this.y = shotPosY; + this.radius = radius; + this.speed = speed; + this.bulletHit = false; + this.directionX = null; + this.directionY = null; + this.hasMoved = hasMoved; + // Set a variable that cant be changed + if ((this.directionX === null) || (this.directionY === null)) { + this.directionX = this.targetx; + this.directionY = this.targety; + } + // create a vector for the projectile and the direction + this.projectile = createVector(this.x, this.y); + this.direction = createVector(this.targetx - this.projectile.x, this.targety - this.projectile.y); + this.direction.normalize(); + // rotate the direction towards the player + this.direction.rotate(this.angle); + } - this.projectile = createVector(this.x, this.y); - this.direction = createVector(this.targetx - this.projectile.x, this.targety - this.projectile.y); - this.direction.normalize(); + draw() { + //draw the bullet + push(); + fill(0, 255, 0); + circle(this.projectile.x, this.projectile.y, this.radius); + pop(); + } - this.direction.rotate(this.angle); - } + update(targetx, targety) { + // keeps the projetile updated so hit collision can be checked + this.targetx = targetx; + this.targety = targety; + // update the projectile + this.projectile.add(p5.Vector.mult(this.direction, this.speed)); - draw() { - push(); - fill(0, 255, 0); - circle(this.projectile.x, this.projectile.y, this.radius); - pop(); - } + let hit = false; + let shot = true; + // check if the projectile has hit the player + if (dist(this.projectile.x, this.projectile.y, this.targetx, this.targety) <= this.radius) { + hit = true; + shot = false; + // if the projectile has hit the player and the player has lives left, remove a life + if (this.hasMoved && lives != 0 && this.bulletHit == false) { + this.bulletHit = true; + lives -= 1; + } + //if the bullet hits one of the wall reset the shot variable so a new wave of bullets can be fired + } else if (this.projectile.x < 0 - 10 || this.projectile.x > width + 10 || this.projectile.y < 0 - 10 || this.projectile.y > height + 10) { + shot = false; + } + // check if the projectile is off screen so it can be removed + let isOffScreen = this.projectile.x < 0 || this.projectile.x > width || this.projectile.y < 0 || this.projectile.y > height; + //unused variable to check if the projetile passsed the original player position when it was fired + let originalPos = this.projectile.x == this.targetx || this.projectile.y == this.targety; - update(targetx, targety) { - this.targetx = targetx; - this.targety = targety; - this.projectile.add(p5.Vector.mult(this.direction, this.speed)); - - let hit = false; - let shot = true; - - if (dist(this.projectile.x, this.projectile.y, this.targetx, this.targety) <= this.radius) { - hit = true; - shot = false; - if (this.hasMoved && lives != 0 && this.bulletHit == false) { - this.bulletHit = true; - lives -= 1; - } - } else if (this.projectile.x < 0 - 10 || this.projectile.x > width + 10 || this.projectile.y < 0 - 10 || this.projectile.y > height + 10) { - shot = false; - } - let isOffScreen = this.projectile.x < 0 || this.projectile.x > width || this.projectile.y < 0 || this.projectile.y > height; - let originalPos = this.projectile.x == this.targetx || this.projectile.y == this.targety; - - - return { hit, shot, isOffScreen, originalPos}; - } + // return all the variables + return { hit, shot, isOffScreen, originalPos }; + } } \ No newline at end of file