//PImage splat_field = createImage(1280,720, ARGB); PImage paper; ArrayList fleet; int gun; int can_draw; int spawncount; ArrayList ordinance; ship Hero; PVector jets; PFont hero; //key control datastructure boolean[] keys = new boolean[8]; final int w = 0; final int a = 1; final int s = 2; final int d = 3; final int up = 4; final int left = 5; final int down = 6; final int right = 7; PGraphics canvas; PImage canv; int score; int framecount; int shutterrate; void setup() { smooth(); size(500,500); //create the canvas canvas = createGraphics(1280,720,P2D); canv = canvas.get(0, 0, canvas.width, canvas.height); paper = loadImage("paper.png"); canvas.image(paper,0,0); score = 0; //create the heros ship Hero = new ship(new PVector(640,360),new PVector(0,0), 0, 3); //create our arraylist of shots ordinance = new ArrayList(); fleet = new ArrayList(); hero = loadFont("Heiti85.vlw"); //println("y "+Hero.loc.y); //println("x "+Hero.loc.x); gun=5; //ordinance.add(new shot(new PVector(Hero.loc.x, Hero.loc.y),new PVector(random(-2,2),random(-2,2)),100)); //ordinance.add(new shot(new PVector(Hero.loc.x, Hero.loc.y),new PVector(random(-2,2),random(-2,2)))); //ordinance.add(new shot(new PVector(Hero.loc.x, Hero.loc.y),new PVector(random(-2,2),random(-2,2)))); fleet.add(new ship(new PVector(random(1280),random(720)), new PVector(-1,-1),int(random(1,4)),2)); spawncount = 0; //println(ordinance.size()); textFont(hero,85); paper = loadImage("paper.png"); noStroke(); // Init all controller keys to "not pressed" for (int i = 0; i< 4; i++) { keys[i] = false; } //here we set up the image export framecount = 0; shutterrate=30; } void draw() { if(spawncount < 10+max(0,(60-(score/50) ) ) ) { spawncount++; //println(10+max(0,(60-(score/50) ) ) ); } else { fleet.add(new ship(new PVector(random(1280),random(720)), new PVector(-1,-1),int(random(1,4)),2)); spawncount=0; } float horizontal = 0; float vertical = 0; //take the keyboard input if(keys[up]) {vertical -= 3; } if(keys[down]) {vertical += 3;} if(keys[left]) {horizontal -= 3;} if(keys[right]) {horizontal += 3;} float shotx = 0; float shoty = 0; //take the keyboard input if(keys[w]) {shoty -= 10; } if(keys[s]) {shoty += 10;} if(keys[a]) {shotx -= 10;} if(keys[d]) {shotx += 10;} if(shotx!=0 || shoty != 0) { if(gun >= 5) { ordinance.add(new shot(new PVector(Hero.loc.x+shoty/2, Hero.loc.y-shotx/2),new PVector(shotx,shoty),30)); ordinance.add(new shot(new PVector(Hero.loc.x-shoty/2, Hero.loc.y+shotx/2),new PVector(shotx,shoty),30)); gun= 0; } else { gun++; } } //draw the scene background(215,227,234); pushMatrix(); translate((Hero.loc.x-(width/2))*-1,(Hero.loc.y-(height/2))*-1); //translate(-Hero.loc.x,-Hero.loc.y); text("$"+score,0,-30); image(paper, 0,0); //now we draw canvas if(can_draw >= 3) { canv = canvas.get(0, 0, canvas.width, canvas.height); can_draw = 0; } else { can_draw++; } image(canv, 0,0); //popMatrix(); noFill(); strokeWeight(10); stroke(0); rect(0,0,1280,720); strokeWeight(1); //for each of the shots in ordinance for(int i = ordinance.size()-1; i >= 0; i--) { shot S = (shot) ordinance.get(i); S.update(); pushMatrix(); translate(S.loc.x,S.loc.y); //println(i+" - X - "+S.loc.x+" : Y - "+S.loc.y); fill(0); ellipse(0,0,5,5); popMatrix(); S.age -= 1; } //kill the shots for(int i = ordinance.size()-1; i >= 0; i--) { shot S = (shot) ordinance.get(i); if(S.age<=0) { ordinance.remove(i); } } //for each of the enemy ships in the fleet for(int i = fleet.size()-1; i >= 0; i--) { ship E = (ship) fleet.get(i); E.collide(); if(PVector.dist(E.loc,Hero.loc) < 12) { Hero.health--; E.health = 0; canvas.beginDraw(); canvas.noStroke(); canvas.fill(0); for(int splat = 0; splat < 300; splat++) { canvas.ellipse(E.loc.x+random(-70,70),E.loc.y+random(-70,70),random(1,5),random(1,5)); } for(int splat = 0; splat < 300; splat++) { canvas.ellipse(E.loc.x+random(-30,30),E.loc.y+random(-30,30),random(1,7),random(1,7)); } canvas.endDraw(); if(Hero.health < 0) { Hero.health = 3; //if the hero dies //fill(0); //rect(100,100,200,200); //stop(); } } if(E.health <= 0) { canvas.beginDraw(); canvas.noStroke(); canvas.fill(E.col); for(int splat = 0; splat < 100; splat++) { canvas.ellipse(E.loc.x+random(-50,50),E.loc.y+random(-50,50),random(1,5),random(1,5)); } for(int splat = 0; splat < 100; splat++) { canvas.ellipse(E.loc.x+random(-20,20),E.loc.y+random(-20,20),random(1,7),random(1,7)); } canvas.endDraw(); fleet.remove(i); score += 10; } else { pushMatrix(); E.AI_mov(); translate(E.loc.x,E.loc.y); E.draw_ship(); popMatrix(); } } //here we draw the hero popMatrix(); pushMatrix(); canvas.beginDraw(); canvas.noStroke(); canvas.fill(0,50); canvas.ellipse(Hero.loc.x,Hero.loc.y,7,7); canvas.endDraw(); Hero.update(new PVector(horizontal,vertical)); translate(width/2,height/2); stroke(255); //draw trail pushMatrix(); translate(-(Hero.old2.x+Hero.old1.x),-(Hero.old2.y+Hero.old1.y)); fill(0,40); text("*",-20,50); popMatrix(); pushMatrix(); translate(-Hero.old1.x,-Hero.old1.y); fill(0,70); text("*",-20,50); popMatrix(); //draw avatar textFont(hero,92); fill(255); text("*",-21,53); textFont(hero,85); fill(0); text("*",-20,50); popMatrix(); translate(-width/2,-height/2); } void keyPressed() { if(key == 'w') { keys[w] = true; } else if(key == 'a') { keys[a] = true; } else if(key == 's') { keys[s] = true; } else if (key == 'd') { keys[d] = true; } else if (keyCode == UP){ keys[up] = true; } else if (keyCode == LEFT){ keys[left] =true; } else if (keyCode == DOWN){ keys[down] =true; } else if (keyCode == RIGHT){ keys[right] =true; } } void keyReleased() { if(key == 'w') { keys[w] = false; } else if(key == 'a') { keys[a] = false; } else if(key == 's') { keys[s] = false; } else if (key == 'd') { keys[d] = false; } else if (keyCode == UP){ keys[up] = false; } else if (keyCode == LEFT){ keys[left] =false; } else if (keyCode == DOWN){ keys[down] =false; } else if (keyCode == RIGHT){ keys[right] =false; } } /* //check to see if it is time to save another frame if(shutterrate >=30) { canv.save("canv_"+framecount+".png"); framecount++; shutterrate=0; } else { shutterrate++; } } */ //draw a splat to the splat buffer void stop() { //println("$"+score); canv.save("canvas.png"); int c = 0; exit(); }