package main; import processing.core.*; import graphic.*; import java.util.ArrayList; public class D104_Yiting_Long_Milestone1_301183087 extends PApplet{ float heightWhite; float widthWhite; float heightBlack; float widthBlack; int numOfWhite; int numOfBlack; float distanceBlack; PVector position; public ArrayList star = new ArrayList(); public ArrayList stones = new ArrayList(); public ArrayList enemyList = new ArrayList(); public ArrayList bonuss = new ArrayList(); public ArrayList twoenemies = new ArrayList(); public ArrayList bosss = new ArrayList(); PImage startScreenimg, tipsimg, playimg, stoneimg, starimg, enemyimg, bulletimg, bonusbimg, bonuseimg, enemytwoimg, boomimg, stoneboomimg, gameoverimg, bossimg, bossbulletimg, diamondimg, finalenemyimg, finalscreenimg; //define image float speed = 2; PFont font; // control player PVector upForce = new PVector(0, -speed); PVector downForce = new PVector(0, speed); PVector backForce = new PVector(-speed, 0); PVector forwardForce = new PVector(speed, 0); boolean up, down, forward, back, fire, outScreen; int showTime; public void setup(){ size(800,500); background(255); heightWhite = 200; widthWhite = 50; heightBlack = 150; widthBlack = 5; numOfWhite = 8; distanceBlack = 5; position = new PVector(200,250); for(int i = 0; i < numOfWhite; i++){ position.x += widthWhite ; enemyList.add(new BasicEnemy(this, position)); } imageMode(CENTER); // loading image startScreenimg = loadImage("startScreen.png"); tipsimg = loadImage("tips.png"); playimg = loadImage("ship.png"); stoneimg = loadImage("stone.png"); starimg = loadImage("star.png"); enemyimg = loadImage("enemy.png"); bulletimg = loadImage("bullet.png"); bonusbimg = loadImage("bonusb.png"); bonuseimg = loadImage("bonuse.png"); enemytwoimg = loadImage("enemytwo.png"); boomimg = loadImage("boom.png"); stoneboomimg = loadImage("stoneboom.png"); gameoverimg = loadImage("gameover.png"); bossimg = loadImage("boss.png"); bossbulletimg = loadImage("bossbullet.png"); diamondimg = loadImage("diamond.png"); finalenemyimg = loadImage("finalenemy.png"); finalscreenimg = loadImage("finalscreen.png"); } public void draw(){ switch(state){ case 0: startScreen(); break; case 1: level1(); break; case 2: level2(); break; case 3: level3(); break; case 4: gameoverScreen(); break; case 5: interim(); break; case 6: win(); break; } } void startScreen() { background(12, 17, 140); for (int i = 0; i < star.size(); i++) { star.get(i).update(); }// make a new object // arguments passed to the constructor set the initial values sky = new Sky(new PVector(random(height), random(width))); if (frameCount %30 == 0 &&star.size()<20) { star.add(sky); //add the new object to the arraylist } image(startScreenimg, width/2, 150, 480, 250); image(tipsimg, width/2, 380); if (mousePressed == true && (mouseButton == LEFT)) { state=1; } } void level1() { background(12, 17, 140); text("Level: 1", 500, 40); if (up) player.move(upForce); if (down) player.move(downForce); if (back) player.move(backForce); if (forward) player.move(forwardForce); if (fire)player.fireBullet(); for (int i = 0; i < star.size(); i++) { star.get(i).update(); } sky = new Sky(new PVector(random(height), random(width))); if (frameCount %30 == 0 &&star.size()<20) { star.add(sky); } for (int i = 0; i < bonuss.size(); i++) { bonuss.get(i).update(); } bonus = new Bonus(new PVector(800, random(100, 400))); if (player.score > 800 && frameCount %50 == 0 && bonuss.size()<1) { bonuss.add(bonus); } player.update(); player.draw(); if (frameCount %120 == 0 && stones.size()<5) { stones.add(new Stone(new PVector(800, random(100, 400)))); } for (int i = 0; i < stones.size(); i++) { Stone s = stones.get(i); s.update(); if (s.outScreen == true) { stones.remove(i);//remove the object which out of screen } if (s.collision(player)) { player.hit();//check collision collisionstone.play(120); //play sounds of effect stones.remove(i).getboom(); } } if (frameCount %120 == 0 && enemies.size()<10) { enemies.add(new Enemy(new PVector(800, random(100, 250)))); enemies.add(new Enemy(new PVector(800, random(250, 450)))); } for (int i = 0; i < enemies.size(); i++) { Enemy e = enemies.get(i); e.update(); if (e.outScreen == true) { enemies.remove(i); } if (e.collision(player)) { player.hit(); collisionenemy.play(0); enemies.remove(i); } } bloodBar(); getScore(); if (player.score >= 1300) { //above 1300 jump to level 2 levelup.play(); state = 2; } } void level2() { background(12, 17, 120); text("Level: 2", 500, 40); if (up) player.move(upForce); if (down) player.move(downForce); if (back) player.move(backForce); if (forward) player.move(forwardForce); if (fire)player.fireBullet(); for (int i = 0; i < star.size(); i++) { star.get(i).update(); } sky = new Sky(new PVector(random(height), random(width))); if (frameCount %30 == 0 &&star.size()<20) { star.add(sky); } if (frameCount %120 == 0 && stones.size()<5) { stones.add(new Stone(new PVector(800, random(100, 400)))); } for (int i = 0; i < stones.size(); i++) { Stone s = stones.get(i); s.update(); if (s.outScreen == true) { stones.remove(i); } if (s.collision(player)) { player.hit(); collisionstone.play(120); stones.remove(i).getboom(); } } if (player.score > 800 && frameCount %50 == 0 && bonuss.size()<1) { bonuss.add(bonus); } for (int i = 0; i < bonuss.size(); i++) { bonuss.get(i).update(); } bonus = new Bonus(new PVector(800, random(100, 400))); if (frameCount %120== 0 && enemies.size()<3) { enemies.add(new Enemy(new PVector(800, random(100, 400)))); } for (int i = 0; i < enemies.size(); i++) { Enemy e = enemies.get(i); e.update(); if (e.outScreen == true) { enemies.remove(i); } if (e.collision(player)) { player.hit(); collisionenemy.play(0); enemies.remove(i); } } if (frameCount %240 == 0 && twoenemies.size()<8) { twoenemies.add(new Enemytwo(new PVector(800, random(100, 400)))); } for (int i = 0; i < twoenemies.size(); i++) { Enemytwo t = twoenemies.get(i); t.update(); if (t.outScreen == true) { twoenemies.remove(i); } if (t.collision(player)) { player.hit(); collisionenemy.play(0); twoenemies.remove(i); } } player.update(); player.draw(); bloodBar(); getScore(); } void interim() { background(0, 0, 0); text("Level: 2", 500, 40); if (up) player.move(upForce); if (down) player.move(downForce); if (back) player.move(backForce); if (forward) player.move(forwardForce); if (fire)player.fireBullet(); for (int i = 0; i < star.size(); i++) { star.get(i).update(); } sky = new Sky(new PVector(random(height), random(width))); if (frameCount %30 == 0 &&star.size()<20) { star.add(sky); } if (frameCount %120 == 0 && stones.size()<5) { stones.add(new Stone(new PVector(800, random(100, 400)))); } for (int i = 0; i < stones.size(); i++) { Stone s = stones.get(i); s.update(); if (s.outScreen == true) { stones.remove(i); } if (s.collision(player)) { player.hit(); collisionstone.play(120); stones.remove(i).getboom(); } image(diamondimg, 700, 250); levelup.play(); if ( dist(player.pos.x, player.pos.y, 700, 250) < player.radius + 25) { state = 6; } } player.update(); player.draw(); bloodBar(); getScore(); } void level3() { background(0, 0, 0); text("Level: 3", 500, 40); if (up) player.move(upForce); if (down) player.move(downForce); if (back) player.move(backForce); if (forward) player.move(forwardForce); if (fire)player.fireBullet(); for (int i = 0; i < star.size(); i++) { star.get(i).update(); } sky = new Sky(new PVector(random(height), random(width))); if (frameCount %30 == 0 &&star.size()<20) { star.add(sky); } if (frameCount %120 == 0 && stones.size()<5) { stones.add(new Stone(new PVector(800, random(100, 400)))); } for (int i = 0; i < stones.size(); i++) { Stone s = stones.get(i); s.update(); if (s.outScreen == true) { stones.remove(i); } if (s.collision(player)) { player.hit(); collisionstone.play(120); stones.remove(i).getboom(); } } if (frameCount %50 == 0 && bonuss.size()<1) { bonuss.add(bonus); } for (int i = 0; i < bonuss.size(); i++) { bonuss.get(i).update(); } bonus = new Bonus(new PVector(800, random(100, 400))); if (frameCount %120== 0 && finalenemies.size()<4) { finalenemies.add(new Finalenemy(new PVector(800, random(100, 250)))); finalenemies.add(new Finalenemy(new PVector(800, random(250, 450)))); } for (int i = 0; i < finalenemies.size(); i++) { Finalenemy e = finalenemies.get(i); e.update(); if (e.outScreen == true) { finalenemies.remove(i); } if (e.collision(player)) { player.hit(); collisionenemy.play(0); finalenemies.remove(i); } } if (frameCount %240 == 0 && twoenemies.size()<5) { twoenemies.add(new Enemytwo(new PVector(800, random(100, 400)))); } for (int i = 0; i < twoenemies.size(); i++) { Enemytwo t = twoenemies.get(i); t.update(); if (t.outScreen == true) { twoenemies.remove(i); } if (t.collision(player)) { player.hit(); collisionenemy.play(0); twoenemies.remove(i); } } if (player.hit >10) { // hit 10 enemies call boss out if (bosss.size()<1) { bosss.add( new Boss(new PVector(700, 250))); } for (int i = 0; i < bosss.size(); i++) { Boss b = bosss.get(i); b.update(); } } player.update(); player.draw(); bloodBar(); getScore(); } void gameoverScreen() { background(12, 17, 140); for (int i = 0; i < star.size(); i++) { star.get(i).update(); } sky = new Sky(new PVector(random(height), random(width))); if (frameCount %30 == 0 &&star.size()<20) { star.add(sky); } image(gameoverimg, width/2, height/2); text(player.score, 480, 275); if (mousePressed == true && (mouseButton == RIGHT)) { restart(); state = 1; } } void win() { background(0, 0, 0); for (int i = 0; i < star.size(); i++) { star.get(i).update(); } sky = new Sky(new PVector(random(height), random(width))); if (frameCount %30 == 0 &&star.size()<20) { star.add(sky); } image(finalscreenimg, width/2, height/2); winner.play(); text("score: "+player.score, 355, 370); if (mousePressed == true && (mouseButton == RIGHT)) { restart(); state = 1; } } void keyPressed() { //control if (key == 'w'|| key== 'W') up = true; else if (key=='s' || key== 'S') down = true; else if (key=='a' || key == 'A') back = true; else if (key=='d'|| key== 'D') forward = true; else if (key=='j'|| key=='J')fire = true; } void keyReleased() { if (key == 'w'|| key== 'W') up = false; else if (key=='s' || key== 'S') down = false; else if (key=='a' || key == 'A') back = false; else if (key=='d'|| key== 'D') forward = false; else if (key=='j'|| key=='J')fire = false; } void getScore() { //display the score in the screen text("Score: " + player.score, 650, 40); } void bloodBar() { int bloodBarWidth = 200; pushMatrix(); fill(0, 40); translate(40, 20); rect(0, 0, bloodBarWidth, 20); //container for health fill(255, 0, 0, 255); text("HP: ",-25,20); rect(0, 0, bloodBarWidth * player.bloodPercentage, 20); //health bar popMatrix(); } }