Question
I have a program as shown below with different files to be solved please read all the files to understand who it work to complete
I have a program as shown below with different files to be solved please read all the files to understand who it work to complete my homework exercise.
to solve the exercise read the instruction in each function to know what to add to make the whole game works properly. So inside each function there is an instruction to follow and solve
Thank you
Asteroids.js
class AsteroidSystem {
//creates arrays to store each asteroid's data
constructor(){
this.locations = [];
this.velocities = [];
this.accelerations = [];
this.diams = [];
}
run(){
this.spawn();
this.move();
this.draw();
}
// spawns asteroid at random intervals
spawn(){
if (random(1)<0.01){
this.accelerations.push(new createVector(0,random(0.1,1)));
this.velocities.push(new createVector(0, 0));
this.locations.push(new createVector(random(width), 0));
this.diams.push(random(30,50));
}
}
//moves all asteroids
move(){
for (var i=0; i this.velocities[i].add(this.accelerations[i]); this.locations[i].add(this.velocities[i]); this.accelerations[i].mult(0); } } applyForce(f){ for (var i=0; i this.accelerations[i].add(f); } } //draws all asteroids draw(){ noStroke(); fill(200); for (var i=0; i ellipse(this.locations[i].x, this.locations[i].y, this.diams[i], this.diams[i]); } } //function that calculates effect of gravity on each asteroid and accelerates it calcGravity(centerOfMass){ for (var i=0; i var gravity = p5.Vector.sub(centerOfMass, this.locations[i]); gravity.normalize(); gravity.mult(.001); this.applyForce(gravity); } } //destroys all data associated with each asteroid destroy(index){ this.locations.splice(index,1); this.velocities.splice(index,1); this.accelerations.splice(index,1); this.diams.splice(index,1); } } _________________________________________________________________________ Bullets.js file class BulletSystem { constructor(){ this.bullets = []; this.velocity = new createVector(0, -5); this.diam = 10; } run(){ this.move(); this.draw(); this.edges(); } fire(x, y){ this.bullets.push(createVector(x,y)); } //draws all bullets draw(){ fill(255); for (var i=0; i ellipse(this.bullets[i].x, this.bullets[i].y, this.diam, this.diam); } } //updates the location of all bullets move(){ for (var i=0; i this.bullets[i].y += this.velocity.y; } } //check if bullets leave the screen and remove them from the array edges(){ // YOUR CODE HERE (3 lines approx) complete the function edges() by looping over the bullets array and for each bullet check if it has left the screen. If it has, remove the specific bullet from the array. (Hint: Use splice() to remove the bullet from the array and think about how you splice from an array correctly). Remember: If you want to call a function or use any variable that belongs to the class you'll need to prefix it with the word "this". So in this case it would be: this.bullets.myFunction(); } } __________________________________________________________________ spaceship.js file class Spaceship { constructor(){ 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; } 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(){ // YOUR CODE HERE (4 lines) this.velocity.add(this.acceleration); this.location.add(this.velocity); this.acceleration.mult(0); this.velocity.limit(5); } applyForce(f){ this.acceleration.add(f); } interaction(){ if (keyIsDown(LEFT_ARROW)){ this.applyForce(createVector(-0.1, 0)); } if (keyIsDown(RIGHT_ARROW)){ // YOUR CODE HERE (1 line) this.applyForce(createVector(0.1, 0)); } if (keyIsDown(UP_ARROW)){ // YOUR CODE HERE (1 line) this.applyForce(createVector(0, -0.1)); } if (keyIsDown(DOWN_ARROW)){ // YOUR CODE HERE (1 line) 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) complete the setNearEarth() function. When the spaceship enters the earth's atmosphere it's affected by the earth's gravity. Create a "downwards-pointing" vector of strength 0.05 which pulls the spaceship towards the earth. The atmosphere also introduces friction and the spaceship can't move forever like in empty space. It will decelerate unless it fires its engines. Create a force called friction that's 30 times smaller than the velocity of the spaceship, points the opposite direction to velocity and is then applied in the the opposite direction. } } ____________________________________________________________________ sketch.js file var spaceship; var asteroids; var atmosphereLoc; var atmosphereSize; var earthLoc; var earthSize; var starLocs = []; ////////////////////////////////////////////////// function setup() { createCanvas(1200,800); spaceship = new Spaceship(); asteroids = new AsteroidSystem(); //bulletSystem = new BulletSystem(); //location and size of earth and its atmosphere atmosphereLoc = new createVector(width/2, height*2.9); atmosphereSize = new createVector(width*3, width*3); earthLoc = new createVector(width/2, height*3.1); earthSize = new createVector(width*3, width*3); } ////////////////////////////////////////////////// function draw() { background(0); sky(); spaceship.run(); asteroids.run(); //bulletSystem.run(); drawEarth(); checkCollisions(spaceship, asteroids); // function that checks collision between various elements } ////////////////////////////////////////////////// //draws earth and atmosphere function drawEarth(){ noStroke(); //draw atmosphere fill(0,0,255, 50); ellipse(atmosphereLoc.x, atmosphereLoc.y, atmosphereSize.x, atmosphereSize.y); //draw earth fill(100,255); ellipse(earthLoc.x, earthLoc.y, earthSize.x, earthSize.y); } ////////////////////////////////////////////////// //checks collisions between all types of bodies function checkCollisions(spaceship, asteroids){ //spaceship-2-asteroid collisions //YOUR CODE HERE (2-3 lines approx) complete the checkCollisions() function so that you check collisions between the spaceship and all asteroids. Hint: You'll need to loop over all the asteroids and use the inInside() function you just programmed. If it returns true then you'll call the gameOver() function. If you've done things right, if the spaceship is hit by an asteroid the game will end. Check before proceeding. //asteroid-2-earth collisions //YOUR CODE HERE (2-3 lines approx) add more functionality to the checkCollisions() function to check if an asteroid has crashed onto earth. If you do things right then the game should end when that happens. Check before proceeding. //spaceship-2-earth //YOUR CODE HERE (1-2 lines approx) add more functionality to the checkCollisions() function to check if the spaceship has collided with the earth and if it has it ends the game. Check before proceeding. //spaceship-2-atmosphere //YOUR CODE HERE (1-2 lines approx) add more functionality to the checkCollisions() function to check if the spaceship is inside the atmosphere. If it is, the spaceship's setNearEarth() function is called. //bullet collisions //YOUR CODE HERE (3-4 lines approx) add more functionality to the checkCollisions() function to check if any of the bullets of the spaceship have hit any asteroids. If they have, then call the destroy() function of the asteroid object, passing it the index of the asteroid to destroy. } ////////////////////////////////////////////////// //helper function checking if there's collision between object A and object B function isInside(locA, sizeA, locB, sizeB){ // YOUR CODE HERE (3-5 lines approx) complete the isInside() function that takes the location of two circles and their diameters and returns true if they overlap, false otherwise. You could check it works, by creating a dummy circle around the mouse and checking if isInside() returns true. } ////////////////////////////////////////////////// function keyPressed(){ if (keyIsPressed && keyCode === 32){ // if spacebar is pressed, fire! spaceship.fire(); } } ////////////////////////////////////////////////// // function that ends the game by stopping the loops and displaying "Game Over" function gameOver(){ fill(255); textSize(80); textAlign(CENTER); text("GAME OVER", width/2, height/2) noLoop(); } ////////////////////////////////////////////////// // function that creates a star lit sky function sky(){ push(); while (starLocs.length<300){ starLocs.push(new createVector(random(width), random(height))); } fill(255); for (var i=0; i rect(starLocs[i].x, starLocs[i].y,2,2); } if (random(1)<0.3) starLocs.splice(int(random(starLocs.length)),1); pop(); } ____________________________________________________________________________________
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started