diff --git a/webdev/basicbullet.js b/webdev/basicbullet.js index 8d10a8d..a3629ce 100644 --- a/webdev/basicbullet.js +++ b/webdev/basicbullet.js @@ -1,70 +1,66 @@ class bullet { - //Een constructor voert eerst de code uit die er in staat voordat de rest van de class wordt uitgevoerd. - constructor(targetx, targety, radius, speed, angle) { - //"This" moet gebruikt worden om de variabelen aan te maken in de class en het zorgt er voor dat de variabelen niet alleen in de constructor gebruikt kunnen worden, - //maar ook in de rest van de class - this.angle = radians(angle); - this.targetx = targetx; - this.targety = targety; - this.x = 500; - this.y = 100; - this.radius = 10; - this.speed = 5; - - - this.directionX = null; - this.directionY = null; - if ((this.directionX === null) || (this.directionY === null)) { - this.directionX = this.targetx; - this.directionY = this.targety; - } - - this.projectile = createVector(600, 100); - // Calculate the initial direction - this.direction = createVector(this.targetx - this.projectile.x, this.targety - this.projectile.y); - this.direction.normalize(); - - this.direction.rotate(this.angle); - + 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); } - - - draw() { - //push en pop zorgen er voor dat de code tussen push en pop een eigen canvas heeft. Dus dat er meerdere projectielen tegelijk kunnen zijn. - push(); - fill(0, 255, 0); - circle(this.projectile.x, this.projectile.y, this.radius); - pop(); - - // Set the initial position of the projectile to the player's position - - - - - + //draw the bullet + push(); + fill(0, 255, 0); + circle(this.projectile.x, this.projectile.y, this.radius); + pop(); } - // // Move the projectile towards the movable circle update(targetx, targety) { - this.targetx = targetx; - this.targety = targety; - this.projectile.add(p5.Vector.mult(this.direction, this.speed)); + // 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)); - let hit = false; - let shot = true; + 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; - if (dist(this.projectile.x, this.projectile.y, this.targetx, this.targety) <= this.radius) { - hit = true; - } - else if (this.projectile.x < 0 - 10 || this.projectile.x > width + 10 || this.projectile.y < 0 - 10 || this.projectile.y > height + 10) { - bounceX = this.projectile.x; - bounceY = this.projectile.y; - shot = false; - } - return { hit, shot }; + // return all the variables + return { hit, shot, isOffScreen, originalPos }; } - - } \ No newline at end of file diff --git a/webdev/index.html b/webdev/index.html index 59ae5bd..7a96678 100644 --- a/webdev/index.html +++ b/webdev/index.html @@ -8,7 +8,7 @@ - +