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 @@
-
+