diff --git a/Where's Perry3/src/Frame.java b/Where's Perry3/src/Frame.java index 5e73722..1c0ee5e 100644 --- a/Where's Perry3/src/Frame.java +++ b/Where's Perry3/src/Frame.java @@ -1,7 +1,9 @@ import java.awt.Color; import java.awt.Dimension; +import java.awt.Font; import java.awt.Graphics; import java.awt.GridLayout; +import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; @@ -10,53 +12,76 @@ import java.awt.event.MouseListener; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.TimeUnit; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFrame; +import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.Timer; import imgs.Background; import imgs.Level; import imgs.Buttons; +import imgs.Door; import imgs.Gems; import imgs.Lava; import imgs.Levers; +import imgs.Platform; import imgs.RestartMenu; +import imgs.Candace; public class Frame extends JPanel implements ActionListener, MouseListener, KeyListener { + double start; + double finish; + double time; + double Tottime; Player p = new Player("Phin.png"); Player p2 = new Player("Ferb.png"); Background homepage = new Background(); boolean home = false; + //setting up homepage buttons that let user access levels 1-3 Buttons one = new Buttons("level1logo.png", 130, 275); Buttons two = new Buttons("level2logo.png", 230, 275); Buttons three = new Buttons("level3logo.png", 520, 270); + //pause button that appears in every level Buttons pause = new Buttons("pause.png", 730, 0); - Levers lev1 = new Levers("LeverUnchanged.png", 670, 75); + //two player objects + Player p = new Player("Phin.png"); + Player p2 = new Player("Ferb.png"); + + //levers + Levers lev1 = new Levers(670, 75); + Levers lev2 = new Levers(530, 370); + Platform pl = new Platform("platform.png", 50,480); + Platform pl2 = new Platform("platform2.png",200,410); //setting up the visual backgrounds and maze contents of levels Background back = new Background("background.png"); - Level first = new Level("level2.png"); + Level first = new Level("level1.png"); boolean firstStart = false; Level second = new Level("level2.png"); boolean secondStart = false; - Level third = new Level("level3v.png"); + Level third = new Level("level3.png"); boolean thirdStart = false; //attributes of the menu pop-up RestartMenu restartMenu = new RestartMenu(); + Candace candace = new Candace(); boolean canRestart = false; - Buttons restart = new Buttons("restart.png",330 ,420); + Buttons restart = new Buttons("restart.png", 330, 420); boolean tryagain = false; Buttons menu = new Buttons("menu.png", 460, 420); + //keep track of started or not + boolean started = false; + //setting up arrays that contain lava objects for each level int x1= 0; int y1 = 0; @@ -66,53 +91,87 @@ public class Frame extends JPanel implements ActionListener, MouseListener, KeyL ArrayList level2 = new ArrayList(); //level3 has 9 lavas ArrayList level3 = new ArrayList(); - //setting up arrays that contain gem objects for each level ArrayList level1Gems = new ArrayList(); ArrayList level2Gems = new ArrayList(); - - //for loop to set up gems ArrayList level3Gems = new ArrayList(); - //for loop to set up games - private long starttime; - - + //counter for gems collected (each type and each level) + + //doors in each level + Door d1 = new Door(-9,20); + boolean touchd1 = false; + Door d2 = new Door(-9, 554); + boolean touchd2 = false; + Door d3 = new Door(-9, 530); + boolean touchd3 = false; + + //perry in each level + Perry perry1 = new Perry(40,100); + Perry perry2 = new Perry(40,620); + Perry perry3 = new Perry(40,615); + public void paint(Graphics g) { super.paintComponent(g); + //level1 LAVAS - level1.add(new Lava("phineasLavat.gif", x1+90 , y1+50 )); - level1.add(new Lava("phineasLavat.gif", x1+350 , y1+280 )); - level1.add(new Lava("ferbLavat.gif", x1+500 , y1+50 )); - level1.add(new Lava("ferbLavat.gif", x1+200 , y1+280 )); - level1.add(new Lava("phineasLavat.gif", x1+80 , y1+640 )); - level1.add(new Lava("phineasLavat.gif", x1+125 , y1+640 )); - level1.add(new Lava("phineasLavat.gif", x1+155 , y1+640 )); - level1.add(new Lava("ferbLavat.gif", x1+340 , y1+640 )); - level1.add(new Lava("ferbLavat.gif", x1+375 , y1+640 )); - level1.add(new Lava("ferbLavat.gif", x1+415 , y1+640 )); + level1.add(new Lava("phineasLavat.gif", x1+90 , y1+51 )); + level1.add(new Lava("phineasLavat.gif", x1+350 , y1+281 )); + level1.add(new Lava("ferbLavat.gif", x1+500 , y1+51 )); + level1.add(new Lava("ferbLavat.gif", x1+200 , y1+281 )); + level1.add(new Lava("phineasLavat.gif", x1+80 , y1+655 )); + level1.add(new Lava("phineasLavat.gif", x1+125 , y1+655 )); + level1.add(new Lava("phineasLavat.gif", x1+155 , y1+655 )); + level1.add(new Lava("ferbLavat.gif", x1+340 , y1+655 )); + level1.add(new Lava("ferbLavat.gif", x1+375 , y1+655 )); + level1.add(new Lava("ferbLavat.gif", x1+415 , y1+655 )); + + Font plainFont = new Font ("Press Start 2P", Font.BOLD, 30); + g.setFont(plainFont); + g.setColor(Color.black); //level1 GEMS level1Gems.add(new Gems("gearGEM2t.gif", x1+170, y1+120)); level1Gems.add(new Gems("hammerGEM1t.gif", x1+580, y1+120)); - //level1Gems.add(new Gems("gearGEM2t.gif", x1+170, y1+120)); - //level1Gems.add(new Gems("hammerGEM1t.gif", x1+170, y1+120)); - //level1Gems.add(new Gems("gearGEM2t.gif", x1+170, y1+120)); - //level1Gems.add(new Gems("hammerGEM1t.gif", x1+170, y1+120)); + level1Gems.add(new Gems("gearGEM2t.gif", x1+430, y1+350)); + level1Gems.add(new Gems("hammerGEM1t.gif", x1+280, y1+350)); + level1Gems.add(new Gems("gearGEM2t.gif", x1+200, y1+724)); + level1Gems.add(new Gems("hammerGEM1t.gif", x1+460, y1+724)); //level2 LAVAS - //level2.add(new Lava("phineasLavat.gif", x1+ , y1+ )); - //level2.add(new Lava("ferbLavat.gif", x1+ , y1+ )); - + level2.add(new Lava("ferbLavat.gif", x1+630, y1+445)); + level2.add(new Lava("phineasLavat.gif", x1+460, y1+652)); + level2.add(new Lava("phineasLavat.gif", x1+500, y1+652)); + level2.add(new Lava("ferbLavat.gif", x1+590, y1+652)); + level2.add(new Lava("ferbLavat.gif", x1+630, y1+652)); + level2.add(new Lava("phineasLavat.gif", x1+140, y1+652)); + //level2 GEMS - + level2Gems.add(new Gems("gearGEM2t.gif", x1+170, y1+100)); + level2Gems.add(new Gems("hammerGEM1t.gif", x1+370, y1+100)); + level2Gems.add(new Gems("gearGEM2t.gif", x1+280, y1+264)); + level2Gems.add(new Gems("hammerGEM1t.gif", x1+430, y1+264)); + level2Gems.add(new Gems("gearGEM2t.gif", x1+550, y1+400)); + level2Gems.add(new Gems("hammerGEM1t.gif", x1+715, y1+510)); //level3 LAVAS - //level3.add(new Lava("phineasLavat.gif", x1+ , y1+ )); - //level3.add(new Lava("ferbLavat.gif", x1+ , y1+ )); - + level3.add(new Lava("phineasLavat.gif", x1+100 , y1+210 )); + level3.add(new Lava("ferbLavat.gif", x1+440 , y1+130)); + level3.add(new Lava("phineasLavat.gif", x1+370 , y1+260 )); + level3.add(new Lava("ferbLavat.gif", x1+130 , y1+652 )); + level3.add(new Lava("ferbLavat.gif", x1+170 , y1+652 )); + level3.add(new Lava("phineasLavat.gif", x1+260 , y1+652 )); + level3.add(new Lava("phineasLavat.gif", x1+300 , y1+652 )); + level3.add(new Lava("ferbLavat.gif", x1+390 , y1+652 )); + level3.add(new Lava("ferbLavat.gif", x1+430 , y1+652 )); + level3.add(new Lava("phineasLavat.gif", x1+620 , y1+652 )); + //level3 GEMS + level3Gems.add(new Gems("gearGEM2t.gif", x1+185, y1+275)); + level3Gems.add(new Gems("hammerGEM1t.gif", x1+525, y1+200)); + level3Gems.add(new Gems("gearGEM2t.gif", x1+455, y1+335)); + level3Gems.add(new Gems("hammerGEM1t.gif", x1+290, y1+630)); //setting up the homepage of the game homepage.paint(g); @@ -121,10 +180,24 @@ public void paint(Graphics g) { three.paint(g); if (firstStart) {//checking if button to play level 1 has been pressed/'hit' + + home = false;//homepage is erased + + //if button has been pressed, draw the corresponding level and its components back.paint(g); first.paint(g); pause.paint(g); - //lavas + + //perry is drawn + perry1.paint(g); + //door is drawn over perry + d1.paint(g); + + //set players at bottom left screen + p.paint(g); + p2.paint(g); + + //lavas are drawn level1.get(0).paint(g);//orange level1.get(1).paint(g);//orange level1.get(2).paint(g);//green @@ -135,226 +208,709 @@ public void paint(Graphics g) { level1.get(7).paint(g);//green level1.get(8).paint(g);//green level1.get(9).paint(g);//green - //gems + + //gems are drawn level1Gems.get(0).paint(g);//gear level1Gems.get(1).paint(g);//hammer - + level1Gems.get(2).paint(g);//gear + level1Gems.get(3).paint(g);//hammer + level1Gems.get(4).paint(g);//gear + level1Gems.get(5).paint(g);//hammer + //set players at bottom left screen p.paint(g); p2.paint(g); - //if button has been pressed, draw the corresponding level and its components - - if(first.getclr(p.getX() + 30,p.getY()+70) == true && first.getclr(p.getX() + 30,p.getY()+60) == false) { - p.setFlor(p.getY()); - } else { - p.setFlor(700); + + if(!started) { + start = System.currentTimeMillis(); + started = true; } + time = (System.currentTimeMillis() - start)/1000.0; + g.drawString("Time: " + time,300,40); + g.drawString("Stand at lever + press space to move",200,100); - if(first.getclr(p.getX() + 5,p.getY()+60) == true) { - p.setLwall(p.getX()); - + + //checking where phineas can walk (i.e. actual ground) and setting up his body's left and right bounds + if(first.getclr(p.getX() + 25,p.getY()+67) && first.getclr(p.getX()+25, p.getY()+62)==false /*|| first.getclr(p.getX()+15,p.getY()+30) || first.getclr(p.getX()+20, p.getY()+30)*/ ){ + p.setFlor(p.getY()); } else { - p.setLwall(10); + p.setFlor(795); } - g.drawRect(p.getX(), p.getY()+60, 10, 10); - - if(first.getclr(p.getX()+ 45,p.getY()+60) == true) { - p.setRwall(p.getX()); - } else { - p.setRwall(700); + if(first.getclr(p.getX()+15, p.getY()+60)) { + p.stop(); + } + if(first.getclr(p.getX()+50, p.getY()+60)) { + p.stop(); + } + if(first.getclr(p.getX()+15, p.getY())){ + p.setCeil(p.getY()); + }else { + p.setCeil(10); } - g.drawRect(p.getX()+ 10, p.getY()+60, 10, 10); + //checking when ferb can walk(i.e. actual ground) and setting up his body's left and right bounds + if(first.getclr(p2.getX() + 25,p2.getY()+67) && first.getclr(p2.getX()+25, p2.getY()+62)==false) { + p2.setFlor(p2.getY()); + } else { + p2.setFlor(795); + } + if(first.getclr(p2.getX()+15, p2.getY()+60)) { + p2.stop(); + } + if(first.getclr(p2.getX()+50, p2.getY()+60)) { + p2.stop(); + } + if(first.getclr(p2.getX()+15, p2.getY())){ + p2.setCeil(p2.getY()); + }else { + p2.setCeil(10); + } - //checking if phineas stepped into green + //checking if phineas stepped into green in level 1 if(p.crossedLava(level1.get(2)) || p.crossedLava(level1.get(3)) || p.crossedLava(level1.get(7)) || p.crossedLava(level1.get(8)) || p.crossedLava(level1.get(9))){ p.dissapear(null); - p.stop(); + p2.dissapear(null); canRestart = true; } - //checking if ferb stepped into orange - - - //did corresponding player collect their gem - if(p.grabbedGem(level1Gems.get(0))) { - level1Gems.get(0).collected(null); + //checking if ferb stepped into orange in level 1 + if(p2.crossedLava(level1.get(0)) || p2.crossedLava(level1.get(1)) || p2.crossedLava(level1.get(4)) || p2.crossedLava(level1.get(5)) || p2.crossedLava(level1.get(6))){ + p2.dissapear(null); + p.dissapear(null);; + canRestart = true; + } + + //did players reach the door together + if (p.touchDoor(d1) && p2.touchDoor(d1)) { + d1.changePicture(""); + touchd1 = true; + canRestart = true; } } if (secondStart) {//checking if button to play level 2 has been pressed/'hit' + + home = false;//homepage is erased + back.paint(g); second.paint(g); pause.paint(g); + + //perry is drawn + perry2.paint(g); + //door is drawn over perry + d2.paint(g); + + //characters are drawn p.paint(g); p2.paint(g); - //if button has been pressed, draw the corresponding level and its components + + //lavas are drawn + level2.get(0).paint(g);//green + level2.get(1).paint(g);//orange + level2.get(2).paint(g);//orange + level2.get(3).paint(g);//green + level2.get(4).paint(g);//green + level2.get(5).paint(g);//orange - if(second.getclr(p.getX() + 30,p.getY()+70) == true && second.getclr(p.getX() + 30,p.getY()+60) == false) { + //gems are drawn + level2Gems.get(0).paint(g);//gear + level2Gems.get(1).paint(g);//hammer + level2Gems.get(2).paint(g);//gear + level2Gems.get(3).paint(g);//hammer + level2Gems.get(4).paint(g);//gear + level2Gems.get(5).paint(g);//hammer + + pl2.paint(g); + lev2.paint(g); + if(!started) { + start = System.currentTimeMillis(); + started = true; + } + time = (System.currentTimeMillis() - start)/1000.0; + g.drawString("Time: " + time,300,40); + g.drawString("Stand at lever + press space to move",200,100); + //if button has been pressed, draw the corresponding level and its components + + //checking where phineas can walk (i.e. actual ground) and setting up his body's left and right bounds + if(second.getclr(p.getX() + 25,p.getY()+67) && second.getclr(p.getX()+25, p.getY()+62)==false){ p.setFlor(p.getY()); } else { - p.setFlor(700); + p.setFlor(795); } - if(second.getclr(p.getX() + 10,p.getY()+60) == true) { - p.setLwall(p.getX()); - + if(second.getclr(p.getX()+15, p.getY()+60)) { + p.stop(); + } + if(second.getclr(p.getX()+50, p.getY()+60)) { + p.stop(); + } + if(second.getclr(p.getX()+15, p.getY())){ + p.setCeil(p.getY()); + }else { + p.setCeil(10); + } + + //checking when ferb can walk(i.e. actual ground) and setting up his body's left and right bounds + if(second.getclr(p2.getX() + 25,p2.getY()+67) && second.getclr(p2.getX()+25, p2.getY()+62)==false) { + p2.setFlor(p2.getY()); } else { - p.setLwall(10); + p2.setFlor(795); + } + if(second.getclr(p2.getX()+15, p2.getY()+60)) { + p2.stop(); + } + if(second.getclr(p2.getX()+50, p2.getY()+60)) { + p2.stop(); + } + if(second.getclr(p2.getX()+15, p2.getY())){ + p2.setCeil(p2.getY()); + }else { + p2.setCeil(10); + } + + //checking if phineas stepped into green in level 2 + if(p.crossedLava(level2.get(0)) || p.crossedLava(level2.get(3)) || p.crossedLava(level2.get(4))){ + p.dissapear(null); + p2.dissapear(null); + canRestart = true; + } + //checking if ferb stepped into orange in level 2 + if(p2.crossedLava(level2.get(1)) || p2.crossedLava(level2.get(2)) || p2.crossedLava(level2.get(5))){ + p2.dissapear(null); + p.dissapear(null);; + canRestart = true; + } + + //did players reach the door together + if(p.touchDoor(d2) && p2.touchDoor(d2)) { + d2.changePicture(""); + touchd2 = true; + canRestart = true; } - if(second.getclr(p.getX()+ 50,p.getY()+60) == true) { - p.setRwall(p.getX()); - - } else { - p.setRwall(700); - } } if (thirdStart) {//checking if button to play level 3 has been pressed/'hit' + + home = false;//homepage is erased + back.paint(g); third.paint(g); pause.paint(g); + + //perry is drawn + perry3.paint(g); + //door is drawn over perry + d3.paint(g); + + //characters are drawn p.paint(g); p2.paint(g); + + //levers are drawn lev1.paint(g); + pl.paint(g); + //start = System.currentTimeMillis(); + //finish = System.currentTimeMillis(); + //long timeElapsed = finish - start; + if(!started) { + start = System.currentTimeMillis(); + started = true; + } + time = (System.currentTimeMillis() - start)/1000.0; + g.drawString("Time: " + time,300,40); //if button has been pressed, draw the corresponding level and its components - + + //lavas are drawn + level3.get(0).paint(g);//orange + level3.get(1).paint(g);//green + level3.get(2).paint(g);//orange + level3.get(3).paint(g);//green + level3.get(4).paint(g);//green + level3.get(5).paint(g);//orange + level3.get(6).paint(g);//orange + level3.get(7).paint(g);//green + level3.get(8).paint(g);//green + level3.get(9).paint(g);//orange - if(third.getclr(p.getX() + 30,p.getY()+70) == true && third.returnClr(p.getX() + 30,p.getY()+60) == 0) { + //gems are drawn + level3Gems.get(0).paint(g);//gear + level3Gems.get(1).paint(g);//hammer + level3Gems.get(2).paint(g);//gear + level3Gems.get(3).paint(g);//hammer - } - if(third.getclr(p.getX()+28,p.getY()+76) == true) { - //phineas/ferb objects search for the specific color that they're allowed to step on - + //checking where phineas can walk (i.e. actual ground) and setting up his body's left and right bounds + if(third.getclr(p.getX() + 25,p.getY()+67) && third.getclr(p.getX()+25, p.getY()+62)==false){ p.setFlor(p.getY()); } else { - p.setFlor(700); + p.setFlor(795); } - - if(third.getclr(p.getX()+20,p.getY()+60) == true) { - p.setLwall(p.getX()); - - } else { - p.setLwall(10); + if(third.getclr(p.getX()+15, p.getY()+60)) { + p.stop(); } - g.drawRect(p.getX() + 20, p.getY()+60, 10, 10); - - if(third.getclr(p.getX()+ 35,p.getY()+60) == true) { - p.setRwall(p.getX()); - - } else { - p.setRwall(700); + if(third.getclr(p.getX()+50, p.getY()+60)) { + p.stop(); } - g.drawRect(p.getX()+ 35, p.getY()+60, 10, 10); - - - /* - if(third.returnClr(p.getX() + 50,p.getY()) != 0) { - p.setCeil(p.getX()); - - } else { + if(third.getclr(p.getX()+15, p.getY())){ + p.setCeil(p.getY()); + }else { p.setCeil(10); } - /* - - - if(third.getclr(p2.getX() + 30,p2.getY()+70) == true && third.getclr(p2.getX() + 30,p2.getY()+60) == false) { + //checking when ferb can walk(i.e. actual ground) and setting up his body's left and right bounds + if(third.getclr(p2.getX() + 25,p2.getY()+67) && third.getclr(p2.getX()+25, p2.getY()+62)==false) { p2.setFlor(p2.getY()); } else { - p2.setFlor(700); + p2.setFlor(795); } - if(third.getclr(p2.getX() + 10,p2.getY()+60) == true) { - p2.setLwall(p2.getX()); - - } else { - p2.setLwall(10); + if(third.getclr(p2.getX()+15, p2.getY()+60)) { + p2.stop(); + } + if(third.getclr(p2.getX()+50, p2.getY()+60)) { + p2.stop(); } + if(third.getclr(p2.getX()+15, p2.getY())){ + p2.setCeil(p2.getY()); + }else { + p2.setCeil(10); + } + - if(third.getclr(p2.getX()+ 50,p2.getY()+60) == true) { - p2.setRwall(p2.getX()); - } else { - p2.setRwall(700); + //checking if phineas stepped into green in level 3 + if(p.crossedLava(level3.get(1)) || p.crossedLava(level3.get(3)) || p.crossedLava(level3.get(4)) || p.crossedLava(level3.get(7)) || p.crossedLava(level3.get(8))){ + p.dissapear(null); + p2.dissapear(null); + canRestart = true; } - */ - } - if (canRestart) {//checking if pause button was clicked - restartMenu.paint(g); - menu.paint(g); - restart.paint(g); - //pause menu components are drawn (menu button and restart the level button - } - if(home) {//player has hit the menu button on pause menu - homepage.paint(g); - one.paint(g); - two.paint(g); - three.paint(g); - home = false; - p.restart("Phineas.png"); - //players are returned to homepage, i.e. homepage is redrawn + //checking if ferb stepped into orange in level 3 + if(p2.crossedLava(level3.get(0)) || p2.crossedLava(level3.get(2)) || p2.crossedLava(level3.get(5)) || p.crossedLava(level3.get(6)) || p.crossedLava(level3.get(9))){ + p2.dissapear(null); + p.dissapear(null);; + canRestart = true; + } + + //did players reach the door together + if(p.touchDoor(d3) && p2.touchDoor(d3)) { + d3.changePicture(""); + touchd3 = true; + canRestart = true; + } } - if(tryagain) { + + if(tryagain) {//user chose to restart same level they were on before + canRestart = false; if (firstStart) {//checking if button to play level 1 has been pressed/'hit' - back.paint(g); first.paint(g); pause.paint(g); - p.restart("Phineas.png"); - level1Gems.get(0).restart("gearGEM2t.gif"); - level1Gems.get(0).paint(g); - //if button has been pressed, draw the corresponding level and its components - if(first.getclr(p.getX()+28,p.getY()+76) == true) { - //phineas/ferb objects search for the specific color that they're allowed to step on - - //System.out.println("yas"); + //perry is drawn + perry1.paint(g); + //door is drawn over perry + d1.paint(g); + + //characters are redrawn + p.paint(g); + p2.paint(g); + + //lavas are reset + level1.get(0).paint(g);//orange + level1.get(1).paint(g);//orange + level1.get(2).paint(g);//green + level1.get(3).paint(g);//green + level1.get(4).paint(g);//orange + level1.get(5).paint(g);//orange + level1.get(6).paint(g);//orange + level1.get(7).paint(g);//green + level1.get(8).paint(g);//green + level1.get(9).paint(g);//green + + //Gems are reset + level1Gems.get(0).paint(g);//gear + level1Gems.get(1).paint(g);//hammer + level1Gems.get(2).paint(g);//gear + level1Gems.get(3).paint(g);//hammer + level1Gems.get(4).paint(g);//gear + level1Gems.get(5).paint(g);//hammer + + + if(!started) { + start = System.currentTimeMillis(); + started = true; + } + time = (System.currentTimeMillis() - start)/1000.0; + g.drawString("Time: " + time,300,40); + g.drawString("Stand at lever + press space to move",200,100); + + + //checking where phineas can walk (i.e. actual ground) and setting up his body's left and right bounds + if(first.getclr(p.getX() + 25,p.getY()+67) && first.getclr(p.getX()+25, p.getY()+62)==false){ p.setFlor(p.getY()); - //p.setFlor(p.getY()); } else { - p.setFlor(695); + p.setFlor(795); + } + if(first.getclr(p.getX()+15, p.getY()+60)) { + p.stop(); + } + if(first.getclr(p.getX()+50, p.getY()+60)) { + p.stop(); + } + if(first.getclr(p.getX()+15, p.getY())){ + p.setCeil(p.getY()); + }else { + p.setCeil(10); + } + + //checking when ferb can walk(i.e. actual ground) and setting up his body's left and right bounds + if(first.getclr(p2.getX() + 25,p2.getY()+67) && first.getclr(p2.getX()+25, p2.getY()+62)==false ) { + p2.setFlor(p2.getY()); + } else { + p2.setFlor(795); + } + if(first.getclr(p2.getX()+15, p2.getY()+58)) { + p2.stop(); } + if(first.getclr(p2.getX()+50, p2.getY()+58)) { + p2.stop(); + } + if(first.getclr(p2.getX(), p2.getY())){ + p2.setCeil(p2.getY()); + }else { + p2.setCeil(10); + } + + + //checking if phineas stepped into green in level 1 + if(p.crossedLava(level1.get(2)) || p.crossedLava(level1.get(3)) || p.crossedLava(level1.get(7)) || p.crossedLava(level1.get(8)) || p.crossedLava(level1.get(9))){ + p.dissapear(null); + p2.dissapear(null); + canRestart = true; + } + //checking if ferb stepped into orange in level 1 + if(p2.crossedLava(level1.get(0)) || p2.crossedLava(level1.get(1)) || p2.crossedLava(level1.get(4)) || p2.crossedLava(level1.get(5)) || p2.crossedLava(level1.get(6))){ + p2.dissapear(null); + p.dissapear(null);; + canRestart = true; + } + + //did players reach the door together level 1 + if (p.touchDoor(d1) && p2.touchDoor(d1)) { + d1.changePicture(""); + touchd1=true; + canRestart = true; + } + + tryagain = false; + }else if (secondStart) {//checking if button to play level 2 has been pressed/'hit' back.paint(g); second.paint(g); pause.paint(g); - p.restart("Phineas.png"); //if button has been pressed, draw the corresponding level and its components + + //perry is drawn + perry2.paint(g); + //door is drawn over perry + d2.paint(g); - if(second.getclr(p.getX()+28,p.getY()+76) == true) { - //phineas/ferb objects search for the specific color that they're allowed to step on - - //System.out.println("yas"); + //characters are drawn + p.paint(g); + p2.paint(g); + + //lavas are dresetrawn + level2.get(0).paint(g);//green + level2.get(1).paint(g);//orange + level2.get(2).paint(g);//orange + level2.get(3).paint(g);//green + level2.get(4).paint(g);//green + level2.get(5).paint(g);//orange + + //gems are reset + level2Gems.get(0).paint(g);//gear + level2Gems.get(1).paint(g);//hammer + level2Gems.get(2).paint(g);//gear + level2Gems.get(3).paint(g);//hammer + level2Gems.get(4).paint(g);//gear + level2Gems.get(5).paint(g);//hammer + + pl2.paint(g); + lev2.paint(g); + if(!started) { + start = System.currentTimeMillis(); + started = true; + } + time = (System.currentTimeMillis() - start)/1000.0; + g.drawString("Time: " + time,300,40); + g.drawString("Stand at lever + press space to move",200,100); + //if button has been pressed, draw the corresponding level and its components + + + //checking where phineas can walk (i.e. actual ground) and setting up his body's left and right bounds + if(second.getclr(p.getX() + 25,p.getY()+67) && second.getclr(p.getX()+25, p.getY()+62)==false){ p.setFlor(p.getY()); - //p.setFlor(p.getY()); } else { - p.setFlor(695); + p.setFlor(795); + } + if(second.getclr(p.getX()+15, p.getY()+60)) { + p.stop(); + } + if(second.getclr(p.getX()+50, p.getY()+60)) { + p.stop(); + } + if(second.getclr(p.getX()+15, p.getY())){ + p.setCeil(p.getY()); + }else { + p.setCeil(10); + } + + //checking when ferb can walk(i.e. actual ground) and setting up his body's left and right bounds + if(second.getclr(p2.getX() + 25,p2.getY()+67) && second.getclr(p2.getX()+25, p2.getY()+62)==false ) { + p2.setFlor(p2.getY()); + } else { + p2.setFlor(795); + } + if(second.getclr(p2.getX()+15, p2.getY()+58)) { + p2.stop(); + } + if(second.getclr(p2.getX()+50, p2.getY()+58)) { + p2.stop(); + } + if(second.getclr(p2.getX(), p2.getY())){ + p2.setCeil(p2.getY()); + }else { + p2.setCeil(10); } + //checking if phineas stepped into green in level 1 + if(p.crossedLava(level2.get(0)) || p.crossedLava(level2.get(3)) || p.crossedLava(level2.get(4))){ + p.dissapear(null); + p2.dissapear(null); + canRestart = true; + } + //checking if ferb stepped into orange in level 1 + if(p2.crossedLava(level2.get(1)) || p2.crossedLava(level2.get(2)) || p2.crossedLava(level2.get(5))){ + p2.dissapear(null); + p.dissapear(null);; + canRestart = true; + } + + //did players reach door + if (p.touchDoor(d2) && p2.touchDoor(d2)) { + d2.changePicture(""); + touchd2 = true; + canRestart = true; + } + + tryagain = false; }else if (thirdStart) {//checking if button to play level 3 has been pressed/'hit' back.paint(g); third.paint(g); pause.paint(g); - p.restart("Phineas.png"); //if button has been pressed, draw the corresponding level and its components - if(third.getclr(p.getX()+28,p.getY()+76) == true) { - //phineas/ferb objects search for the specific color that they're allowed to step on - - //System.out.println("yas"); + //perry is drawn + perry3.paint(g); + //door is drawn over perry + d3.paint(g); + + //characters are drawn + p.paint(g); + p2.paint(g); + + + //lavas are reset + level3.get(0).paint(g);//orange + level3.get(1).paint(g);//green + level3.get(2).paint(g);//orange + level3.get(3).paint(g);//green + level3.get(4).paint(g);//green + level3.get(5).paint(g);//orange + level3.get(6).paint(g);//orange + level3.get(7).paint(g);//green + level3.get(8).paint(g);//green + level3.get(9).paint(g);//orange + + //gems are reset + level3Gems.get(0).paint(g);//gear + level3Gems.get(1).paint(g);//hammer + level3Gems.get(2).paint(g);//gear + level3Gems.get(3).paint(g);//hammer + + //levers are drawn + lev1.paint(g); + pl.paint(g); + //start = System.currentTimeMillis(); + //finish = System.currentTimeMillis(); + //long timeElapsed = finish - start; + if(!started) { + start = System.currentTimeMillis(); + started = true; + } + time = (System.currentTimeMillis() - start)/1000.0; + g.drawString("Time: " + time,300,40); + //if button has been pressed, draw the corresponding level and its components + + + //checking where phineas can walk (i.e. actual ground) and setting up his body's left and right bounds + if(third.getclr(p.getX() + 25,p.getY()+67) && third.getclr(p.getX()+25, p.getY()+62)==false){ p.setFlor(p.getY()); - //p.setFlor(p.getY()); } else { - p.setFlor(695); + p.setFlor(795); + } + if(third.getclr(p.getX()+15, p.getY()+60)) { + p.stop(); + } + if(third.getclr(p.getX()+50, p.getY()+60)) { + p.stop(); + } + if(third.getclr(p.getX()+15, p.getY())){ + p.setCeil(p.getY()); + }else { + p.setCeil(10); } - tryagain = false; - } - } + //checking when ferb can walk(i.e. actual ground) and setting up his body's left and right bounds + if(third.getclr(p2.getX() + 25,p2.getY()+67) && third.getclr(p2.getX()+25, p2.getY()+62)==false) { + p2.setFlor(p2.getY()); + } else { + p2.setFlor(795); + } + if(third.getclr(p2.getX()+15, p2.getY()+60)) { + p2.stop(); + } + if(third.getclr(p2.getX()+50, p2.getY()+60)) { + p2.stop(); + } + if(third.getclr(p2.getX()+15, p2.getY())){ + p2.setCeil(p2.getY()); + }else { + p2.setCeil(10); + } + + //checking if phineas stepped into green in level 3 + if(p.crossedLava(level3.get(1)) || p.crossedLava(level3.get(3)) || p.crossedLava(level3.get(4)) || p.crossedLava(level3.get(7)) || p.crossedLava(level3.get(8))){ + p.dissapear(null); + p2.dissapear(null); + canRestart = true; + } + + //checking if ferb stepped into orange in level 3 + if(p2.crossedLava(level3.get(0)) || p2.crossedLava(level3.get(2)) || p2.crossedLava(level3.get(5)) || p.crossedLava(level3.get(6)) || p.crossedLava(level3.get(9))){ + p2.dissapear(null); + p.dissapear(null);; + canRestart = true; + } + + //did players reach the door together + if(p.touchDoor(d3) && p2.touchDoor(d3)) { + d3.changePicture(""); + touchd3 = true; + canRestart = true; + } + + tryagain = false; + } + } + + + //did corresponding player collect their gem in level 1 + if(p.grabbedGem(level1Gems.get(0))) {//phineas collected + level1Gems.get(0).restart(""); + } + if(p2.grabbedGem(level1Gems.get(1))) {//ferb collected + level1Gems.get(1).restart(""); + } + if(p.grabbedGem(level1Gems.get(2))) {//phineas collected + level1Gems.get(2).restart(""); + } + if(p2.grabbedGem(level1Gems.get(3))) {//ferb collected + level1Gems.get(3).restart(""); + } + if(p.grabbedGem(level1Gems.get(4))) {//phineas collected + level1Gems.get(4).restart(""); + } + if(p2.grabbedGem(level1Gems.get(5))) {//ferb collected + level1Gems.get(5).restart(""); + } + + + //did corresponding player collect their gem in level 2 + if(p.grabbedGem(level2Gems.get(0))) {//phineas collected + level2Gems.get(0).restart(""); + } + if(p2.grabbedGem(level2Gems.get(1))) {//ferb collected + level2Gems.get(1).restart(""); + } + if(p.grabbedGem(level2Gems.get(2))) {//phineas collected + level2Gems.get(2).restart(""); + } + if(p2.grabbedGem(level2Gems.get(3))) {//ferb collected + level2Gems.get(3).restart(""); + } + if(p.grabbedGem(level2Gems.get(4))) {//phineas collected + level2Gems.get(4).restart(""); + } + if(p2.grabbedGem(level2Gems.get(5))) {//ferb collected + level2Gems.get(5).restart(""); + } + + //did corresponding player collect their gem in level 3 + if(p.grabbedGem(level3Gems.get(0))) {//phineas collected + level3Gems.get(0).restart(""); + } + if(p2.grabbedGem(level3Gems.get(1))) {//ferb collected + level3Gems.get(1).restart(""); + } + if(p.grabbedGem(level3Gems.get(2))) {//phineas collected + level3Gems.get(2).restart(""); + } + if(p2.grabbedGem(level3Gems.get(3))) {//ferb collected + level3Gems.get(3).restart(""); + } + + if (canRestart) {//checking if pause button was clicked + candace.paint(g); + restartMenu.paint(g); + menu.paint(g); + if (touchd1==false && touchd2==false && touchd3==false) { + restart.paint(g); + } + finish = time; + //g.drawString("Total time: " ,300,500); + started = false; + //pause menu components are drawn (menu button and restart the level button + if (touchd1 || touchd2 || touchd3) { + g.setColor( new Color(13, 169, 189)); + g.fillRect(315, 390, 220, 30); + g.setColor(Color.WHITE); + Font f1 = new Font("Times New Roman", Font.ITALIC , 16); + g.setFont(f1); + g.drawString("Congratulations you found Perry!", 320, 410); + } + + touchd1 = false; + touchd2 = false; + touchd3 = false; + } + + if(home) {//player has hit the menu button on pause menu + canRestart = false;//erasing restart menu + + homepage.paint(g); + one.paint(g); + two.paint(g); + three.paint(g); + + //user is returned to homepage, i.e. homepage is redrawn + } + + } public static void main(String[] arg) { Frame f = new Frame(); + } public Frame() { @@ -366,15 +922,19 @@ public Frame() { f.setLayout(new GridLayout(1,2)); f.addMouseListener(this); f.addKeyListener(this); - Timer t = new Timer(16, this); + Timer t = new Timer(13, this); t.start(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); + + } + + @Override public void mouseClicked(MouseEvent arg0) { // TODO Auto-generated method stub @@ -397,25 +957,120 @@ public void mouseExited(MouseEvent arig0) { public void mousePressed(MouseEvent arg0) { if(one.hit(arg0)) { + canRestart = false; firstStart = true; + secondStart = false; + thirdStart = false; + p.restart("Phin.png", 30,690);//30,690 + p2.restart("Ferb.png", 30,690);//30,690 + d1.changePicture("door.png"); } if(two.hit(arg0)) { + canRestart = false; secondStart = true; + firstStart = false; + thirdStart = false; + p.restart("Phin.png", 30, 20); + p2.restart("Ferb.png", 30, 20); + d2.changePicture("door.png"); } if(three.hit(arg0)) { + canRestart = false; thirdStart = true; + firstStart = false; + secondStart = false; + p.restart("Phin.png", 380, 20); + p2.restart("Ferb.png", 380, 20); + d3.changePicture("door.png"); } if(pause.hit(arg0)) { canRestart = true; } if(menu.hit(arg0)) { home = true; + canRestart = false; + + //restarting players + if(firstStart) { + p.restart("Phin.png", 30, 690); + p2.restart("Ferb.png", 30, 690); + d1.changePicture("door.png"); + }else if(secondStart) { + p.restart("Phin.png", 30, 20); + p2.restart("Ferb.png", 30, 20); + d2.changePicture("door.png"); + }else if(thirdStart) { + p.restart("Phin.png", 380, 20); + p2.restart("Ferb.png", 380, 20); + d3.changePicture("door.png"); + } + + //restarting all gems + level1Gems.get(0).restart("gearGEM2t.gif"); + level1Gems.get(1).restart("hammerGEM1t.gif"); + level1Gems.get(2).restart("gearGEM2t.gif"); + level1Gems.get(3).restart("hammerGEM1t.gif"); + level1Gems.get(4).restart("gearGEM2t.gif"); + level1Gems.get(5).restart("hammerGEM1t.gif"); + + //restarting all gems in level 2 + level2Gems.get(0).restart("gearGEM2t.gif"); + level2Gems.get(1).restart("hammerGEM1t.gif"); + level2Gems.get(2).restart("gearGEM2t.gif"); + level2Gems.get(3).restart("hammerGEM1t.gif"); + level2Gems.get(4).restart("gearGEM2t.gif"); + level2Gems.get(5).restart("hammerGEM1t.gif"); + + //restarting all gems in level 3 + level3Gems.get(0).restart("gearGEM2t.gif"); + level3Gems.get(1).restart("hammerGEM1t.gif"); + level3Gems.get(2).restart("gearGEM2t.gif"); + level3Gems.get(3).restart("hammerGEM1t.gif"); + firstStart = false; secondStart = false; thirdStart = false; - canRestart = false; } if(restart.hit(arg0)) { + + //restarting players + if(firstStart) { + p.restart("Phin.png", 30, 690); + p2.restart("Ferb.png", 30, 690); + d1.changePicture("door.png"); + } else if(secondStart) { + p.restart("Phin.png", 30, 20); + p2.restart("Ferb.png", 30, 20); + d2.changePicture("door.png"); + } else if(thirdStart) { + p.restart("Phin.png", 380, 20); + p2.restart("Ferb.png", 380, 20); + d3.changePicture("door.png"); + } + + + //restarting all gems in level 1 + level1Gems.get(0).restart("gearGEM2t.gif"); + level1Gems.get(1).restart("hammerGEM1t.gif"); + level1Gems.get(2).restart("gearGEM2t.gif"); + level1Gems.get(3).restart("hammerGEM1t.gif"); + level1Gems.get(4).restart("gearGEM2t.gif"); + level1Gems.get(5).restart("hammerGEM1t.gif"); + + //restarting all gems in level 2 + level2Gems.get(0).restart("gearGEM2t.gif"); + level2Gems.get(1).restart("hammerGEM1t.gif"); + level2Gems.get(2).restart("gearGEM2t.gif"); + level2Gems.get(3).restart("hammerGEM1t.gif"); + level2Gems.get(4).restart("gearGEM2t.gif"); + level2Gems.get(5).restart("hammerGEM1t.gif"); + + //restarting all gems in level 3 + level3Gems.get(0).restart("gearGEM2t.gif"); + level3Gems.get(1).restart("hammerGEM1t.gif"); + level3Gems.get(2).restart("gearGEM2t.gif"); + level3Gems.get(3).restart("hammerGEM1t.gif"); + tryagain = true; canRestart = false; } @@ -435,56 +1090,84 @@ public void actionPerformed(ActionEvent arg0) { public void keyPressed(KeyEvent arg0) { // TODO Auto-generated method stub - System.out.println(arg0.getKeyCode()); + //System.out.println(arg0.getKeyCode()); + + //phineas movements (up,right, and left keys) if (arg0.getKeyCode() == 39) { - p.moveLeft(); p.changePicture("Phin.png"); + p.moveLeft(); } if (arg0.getKeyCode() == 37) { + p.changePicture("Phinflip.png"); p.moveRight(); - p.changePicture("Phineasflip.png");; } if (arg0.getKeyCode() == 38) { p.jump(); } - + //ferb movements(A,D, and W keys) if (arg0.getKeyCode() == 68) { - p2.moveLeft(); p2.changePicture("Ferb.png"); + p2.moveLeft(); } if (arg0.getKeyCode() == 65) { - p2.moveRight(); p2.changePicture("Ferbflip.png"); + p2.moveRight(); } if (arg0.getKeyCode() == 87) { p2.jump(); } + //stoping characters from moving horizontally once they dissapear if(canRestart) { p.stop(); + p2.stop(); + + } + + if(p.touchLev() == true && arg0.getKeyCode() == 32 || p2.touchLev() == true && arg0.getKeyCode() == 32){ + if (lev1.getCt() == 0) { + lev1.changePicture(670,75); + pl.move(0,200); + lev1.setCt(1); + System.out.print(lev1.getCt()); + }else{ + lev1.changeBack(670,75); + pl.move(0,-200); + lev1.setCt(0); + System.out.print(lev1.getCt()); + } + + if (lev2.getCt() == 0) { + lev2.changePicture(530,370); + pl2.move(400,0); + lev2.setCt(1); + System.out.print(lev2.getCt()); + }else{ + lev2.changeBack(530,370); + pl2.move(-400,0); + lev2.setCt(0); + System.out.print(lev2.getCt()); + } + } + + + } @Override public void keyReleased(KeyEvent arg0) { // TODO Auto-generated method stub - - p.stop(); - p2.stop(); - /* - if (arg0.getKeyCode() == 39) { + if (arg0.getKeyCode() == 39 || arg0.getKeyCode() == 37) { p.stop(); } - if (arg0.getKeyCode() == 37) { - p.stop(); + if (arg0.getKeyCode() == 68 || arg0.getKeyCode() == 65) { + p2.stop(); } - */ - - } @Override diff --git a/Where's Perry3/src/Player.java b/Where's Perry3/src/Player.java index 728c488..feebb1b 100644 --- a/Where's Perry3/src/Player.java +++ b/Where's Perry3/src/Player.java @@ -12,114 +12,101 @@ import javax.imageio.ImageIO; +import imgs.Door; import imgs.Gems; import imgs.Lava; +import imgs.Levers; public class Player{ private Image img; private AffineTransform tx; private int x,y; - private double vx, vy; - private int floor= 700; - private int Lwall= 0; - private int Rwall= 700; + private double vx ,vy; + private int floor= 790; + private int Lwall= 15; + private int Rwall= 790; private int ceil= 10; private double gravity = 0.1; + private int gemAmt = 0; - public Player(String fileName) { img = getImage("/imgs/"+fileName); //load the image for Phineas + tx = AffineTransform.getTranslateInstance(x, y); + x = 0; y = 0; - tx = AffineTransform.getTranslateInstance(x, y); - + tx = AffineTransform.getTranslateInstance(x, y); + } - public void changePicture(String fileName) { //img = getImage("/imgs/Phinflip.png"); img = getImage("/imgs/"+fileName); } - public void paint(Graphics g) { //these are the 2 lines of code needed draw an image on the screen Graphics2D g2 = (Graphics2D) g; g2.drawImage(img, tx, null); update(); - g.drawRect((int) x, (int)y, 10, 10); + //g.drawRect((int) x, (int)y, 10, 10); - g.drawRect((int) x+15, (int) y, 20, 80); + //g.drawRect((int) x+25, (int) y, 25, 67); + + update(); } - private void init(double a, double b) { tx.setToTranslation(a,b); tx.scale(.05, .05); } + public void stop(){ + vx = 0; + } + public void restart(String filename) { dissapear(getImage("/imgs/"+filename)); x = 0; y = 0; + gemAmt = 0; } - - public void stop(){ - vx = 0; - - } - public int getX() { return x; } - public int getY() { return y; } - + public void stop(){ + vx = 0; + } public void moveRight(){ vx = -3; - - } - public void moveLeft(){ - vx = 3; - - + vx=3; } - public void jump() { if(y == floor) { - vy = -6; + vy = -7; } - - } - public void setFlor(int val) { floor = val; } - public void setLwall(int val) { Lwall = val; } - public void setRwall(int val) { Rwall = val; } - public void setCeil(int val) { ceil = val; } - public void update() { tx = AffineTransform.getTranslateInstance(x, y); - tx.scale(0.75,0.75); + tx.scale(0.65,0.65); x += vx; y += vy; vy += gravity; - - - if (y >= floor) { y = floor; vy =0; @@ -127,77 +114,116 @@ public void update() { vy+= gravity; } + if(y <= ceil) { + vy = 6; + + } + if(x <= Lwall) { x = Lwall; } if(x >= Rwall) { x = Rwall; } + + if (y >= 795) { + y = 690; + } + if (x <= 0) { + x = 15; + } + if(x >= 795) { + x = 770; - touchLev(); - } - public boolean touchLev() { //represent mouse as rectangle Rectangle p = new Rectangle(x,y,70,70); - // duck hit + //lever Rectangle l = new Rectangle (670,75,90,90); if(p.intersects(l)) { + // lever touched + Rectangle l = new Rectangle (670,75,70,70); + Rectangle l2 = new Rectangle (530,370,70,70); + //check hit + if(p.intersects(l) || p.intersects(l2)) { //if lever is touched, move it, each time it should change image System.out.println("hit"); return true; - } - return false; //System.out.println("X location " + getX() + ", Y location " + getY()); + } + public void restart(String filename, int initx, int inity) { + dissapear(getImage("/imgs/"+filename)); + x = initx; + y = inity; + Lwall = 15; + Rwall = 790; + update(); + } //when steps in wrong lava public void dissapear(Image image) { img = image; + vx = 0; } - public double getHeight() { return y; - } - + } //helper method to detect if player walked through wrong lava public boolean crossedLava(Lava l) { boolean crossed = false; - //represent the mouse as a rectangle object + //represent the lava as a rectangle object Rectangle lava = new Rectangle(l.getX()+60, l.getY()+105, 80, 20); - //level press box - Rectangle player = new Rectangle(x+15, y, 20, 80); + //player rectangle box + Rectangle player = new Rectangle(x+15, y, 20, 63); if(player.intersects(lava)) { crossed = true; } - - return crossed; } - + public int getGem() { + return gemAmt; + } //helper method to detect if player picked up correct gem public boolean grabbedGem(Gems gem) { boolean didGrab = false; - //represent the mouse as a rectangle object + + //represent the gem as a rectangle object Rectangle gems = new Rectangle(gem.getX(), gem.getY(), 35, 35); - //level press box - Rectangle player = new Rectangle(x+15, y, 20, 80); + //player rectangle box + Rectangle player = new Rectangle(x+15, y, 20, 63); if(player.intersects(gems)) { didGrab = true; + gemAmt ++; } - return didGrab; } + //helper method for detecting when both players are at the door + public boolean touchDoor(Door door) { + //represent the door as a rectangle object + Rectangle m = new Rectangle(door.getX()+50, door.getY()+50, 60, 60); + + //player rectangle + Rectangle p = new Rectangle(x+15,y, 20, 63); + + //check if the two boxes overlap + if(m.intersects(p)) { + return true; + } + + return false; + } + private Image getImage(String path) { Image tempImage = null; try { @@ -208,12 +234,4 @@ private Image getImage(String path) { } return tempImage; } - - - - - - - - } \ No newline at end of file diff --git a/Where's Perry3/src/imgs/Buttons.java b/Where's Perry3/src/imgs/Buttons.java index 37ddc6b..98e5da7 100644 --- a/Where's Perry3/src/imgs/Buttons.java +++ b/Where's Perry3/src/imgs/Buttons.java @@ -74,10 +74,10 @@ private Image getImage(String path) { //helper method for pressing button on home page public boolean hit(MouseEvent mouse) { //represent the mouse as a rectangle object - Rectangle m = new Rectangle(mouse.getX(), mouse.getY(), 50, 50); + Rectangle m = new Rectangle(mouse.getX(), mouse.getY(), 30, 30); //level press box - Rectangle d = new Rectangle(x,y, 75, 75); + Rectangle d = new Rectangle(x+20,y+20, 70, 70); //check if the two boxes overlap if(m.intersects(d)) { diff --git a/Where's Perry3/src/imgs/Candace.java b/Where's Perry3/src/imgs/Candace.java new file mode 100644 index 0000000..ba82b87 --- /dev/null +++ b/Where's Perry3/src/imgs/Candace.java @@ -0,0 +1,70 @@ +package imgs; + +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.Rectangle; +import java.awt.Toolkit; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.geom.AffineTransform; +import java.net.URL; + +public class Candace { + private int x,y; //location attributes + private Image img2; + private AffineTransform tx; + + //default constructor + public Candace() { + img2 = getImage("/imgs/Candace.png"); //load the image + tx = AffineTransform.getTranslateInstance(x,y); + //initialize the location of the image, use your variables + x = 300; + y = 100; + } + + //constructor that allows specifying the file name of the image + //sets fileName of the image to use + public Candace(String fileName) { + img2 = getImage("/imgs/" + fileName); + tx = AffineTransform.getTranslateInstance(x,y); + init(x,y); + } + + + public void changePicture(String newFileName) { + img2 = getImage(newFileName); + init(0, 0); + } + + public void paint(Graphics g) { + //these are the 2 lines of code needed draw an image on the screen + Graphics2D g2 = (Graphics2D) g; + update(); + g2.drawImage(img2, tx, null); + + } + + //update the picture variable location + private void update() { + tx.setToTranslation(x, y); + tx.scale(3, 3); + } + + private void init(double a, double b) { + tx.setToTranslation(a, b); + tx.scale(3, 3); + } + + private Image getImage(String path) { + Image tempImage = null; + try { + URL imageURL = RestartMenu.class.getResource(path); + tempImage = Toolkit.getDefaultToolkit().getImage(imageURL); + } catch (Exception e) { + e.printStackTrace(); + } + return tempImage; + } +} diff --git a/Where's Perry3/src/imgs/Door.java b/Where's Perry3/src/imgs/Door.java new file mode 100644 index 0000000..a514ff3 --- /dev/null +++ b/Where's Perry3/src/imgs/Door.java @@ -0,0 +1,82 @@ +package imgs; +import java.awt.image.BufferedImage; +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.Rectangle; +import java.awt.Toolkit; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.geom.AffineTransform; +import java.awt.image.BufferedImage; +import java.net.URL; + +import javax.imageio.ImageIO; + +public class Door { + private int x,y; //location attributes + private Image img2; + private AffineTransform tx; + + //default constructor + public Door(int x, int y) { + img2 = getImage("/imgs/door.png"); //load the image + tx = AffineTransform.getTranslateInstance(x,y); + //initialize the location of the image, use your variables + this.x = x; + this.y = y; + } + + public void changePicture(String newFileName) { + img2 = getImage(newFileName); + init(x,y); + } + + public void paint(Graphics g) { + //these are the 2 lines of code needed draw an image on the screen + Graphics2D g2 = (Graphics2D) g; + update(); + g2.drawImage(img2, tx, null); + + } + + //update the picture variable location + private void update() { + tx.setToTranslation(x, y); + tx.scale(2,2); + } + + private void init(double a, double b) { + tx.setToTranslation(a, b); + tx.scale(2,2); + } + + private Image getImage(String path) { + Image tempImage = null; + try { + URL imageURL = Level.class.getResource(path); + tempImage = Toolkit.getDefaultToolkit().getImage(imageURL); + } catch (Exception e) { + e.printStackTrace(); + } + return tempImage; + } + + public int getX() { + return x; + } + + public void setX(int x) { + this.x = x; + } + + public int getY() { + return y; + } + + public void setY(int y) { + this.y = y; + } + +} diff --git a/Where's Perry3/src/imgs/Gems.java b/Where's Perry3/src/imgs/Gems.java index 532ef5c..4f7ed02 100644 --- a/Where's Perry3/src/imgs/Gems.java +++ b/Where's Perry3/src/imgs/Gems.java @@ -41,17 +41,13 @@ public void paint(Graphics g) { update(); g2.drawImage(img, tx, null); - g.drawRect(x, y, 35, 35); + //g.drawRect(x, y, 35, 35); } + //when gems get collected public void restart(String filename) { img = getImage(filename); } - - //when gem gets collected - public void collected(Image img) { - this.img = img; - } public int getX() { return x; diff --git a/Where's Perry3/src/imgs/Lava.java b/Where's Perry3/src/imgs/Lava.java index a53f712..a1c4250 100644 --- a/Where's Perry3/src/imgs/Lava.java +++ b/Where's Perry3/src/imgs/Lava.java @@ -41,7 +41,7 @@ public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g; update(); g2.drawImage(img, tx, null); - g.drawRect(x+60, y+105, 80, 20); + //g.drawRect(x+60, y+105, 80, 20); } diff --git a/Where's Perry3/src/imgs/Level.java b/Where's Perry3/src/imgs/Level.java index 3983d12..f3d5fba 100644 --- a/Where's Perry3/src/imgs/Level.java +++ b/Where's Perry3/src/imgs/Level.java @@ -56,36 +56,35 @@ public boolean getclr(int x, int y) { boolean check = false; Color c = new Color(color.getRGB(x, y)); - + /*int clr = color.getRGB(x, y); + int red = (clr & 0x00ff0000) >> 16; + int green = (clr & 0x0000ff00) >> 8; + int blue = clr & 0x000000ff; + if(red == 48 && green == 31 && blue == 23) { + check = true; + }*/ + if (x >= 795 || y >= 795) { + return false; + } if(c.getRed() == 48 && c.getGreen() == 31 && c.getBlue() == 23) { + check = true; + } + + /*else if(c.getRed() == 51 && c.getGreen() == 30 && c.getBlue() == 22) { //return true; check = true; //return true; } + */ return check; } public int returnClr(int x, int y) { - boolean check = false; Color c = new Color(color.getRGB(x, y)); - - - if(c.getRed() == 48 && c.getGreen() == 31 && c.getBlue() == 23) { - //return true; - check = true; - //return true; - } - return (c.getRed() + c.getGreen() + c.getBlue()); - - /* - System.out.println("Red Color value = " + red); - System.out.println("Green Color value = " + green); - System.out.println("Blue Color value = " + blue); - */ - + return (c.getRed() + c.getGreen() + c.getBlue()); } diff --git a/Where's Perry3/src/imgs/Levers.java b/Where's Perry3/src/imgs/Levers.java index 2fbec27..f57fe78 100644 --- a/Where's Perry3/src/imgs/Levers.java +++ b/Where's Perry3/src/imgs/Levers.java @@ -16,23 +16,39 @@ public class Levers { private int x,y; //location attributes - private Image img; + private Image img; private AffineTransform tx; private BufferedImage color; + int ct = 0; //constructor that allows specifying the file name of the image //sets fileName of the image to use - public Levers(String fileName, int initx, int inity) { - img = getImage("/imgs/" + fileName);//load the image + public Levers(int initx, int inity) { + img = getImage("/imgs/" + "LeverUnchanged.png");//load the image tx = AffineTransform.getTranslateInstance(x,y); x = initx; y = inity; } - public void changePicture(String newFileName) { - img = getImage(newFileName); - init(x,y); + public void changePicture(int initx, int inity) { + img = getImage("/imgs/" + "LeverChanged.png"); + x = initx; + y = inity; + } + + public void changeBack(int initx, int inity) { + img = getImage("/imgs/" + "LeverUnchanged.png"); + x = initx; + y = inity; + } + + public int getCt() { + return ct; + } + + public void setCt(int val) { + ct = val; } public void paint(Graphics g) { diff --git a/Where's Perry3/src/imgs/Perry.java b/Where's Perry3/src/imgs/Perry.java new file mode 100644 index 0000000..70d7558 --- /dev/null +++ b/Where's Perry3/src/imgs/Perry.java @@ -0,0 +1,66 @@ +package imgs; + +import java.awt.image.BufferedImage; +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.Rectangle; +import java.awt.Toolkit; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.geom.AffineTransform; +import java.awt.image.BufferedImage; +import java.net.URL; + +public class Perry{ + + private Image img; + private AffineTransform tx; + private int x,y; + + + public Perry(int x, int y) { + img = getImage("/imgs/perry.png"); //load the image for Perry + this.x = x;//change for each level + this.y = y;//change for each level + tx = AffineTransform.getTranslateInstance(x, y); + + } + + public void changePicture(String fileName) { + //img = getImage("/imgs/Phinflip.png"); + img = getImage("/imgs/"+fileName); + } + + public void paint(Graphics g) { + //these are the 2 lines of code needed draw an image on the screen + Graphics2D g2 = (Graphics2D) g; + g2.drawImage(img, tx, null); + update(); + + } + + private void init(double a, double b) { + tx.setToTranslation(a,b); + tx.scale(1,1); + } + public void update() { + tx = AffineTransform.getTranslateInstance(x, y); + tx.scale(1,1); + + } + + private Image getImage(String path) { + Image tempImage = null; + try { + URL imageURL = Perry.class.getResource(path); + tempImage = Toolkit.getDefaultToolkit().getImage(imageURL); + } catch (Exception e) { + e.printStackTrace(); + } + return tempImage; + } + + +} \ No newline at end of file diff --git a/Where's Perry3/src/imgs/Platform.java b/Where's Perry3/src/imgs/Platform.java new file mode 100644 index 0000000..88445c5 --- /dev/null +++ b/Where's Perry3/src/imgs/Platform.java @@ -0,0 +1,96 @@ +package imgs; + +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.Toolkit; +import java.awt.geom.AffineTransform; +import java.awt.image.BufferedImage; +import java.net.URL; + +import javax.imageio.ImageIO; + +public class Platform { + private int x,y; //location attributes + private Image img; + private AffineTransform tx; + private BufferedImage color; + + //constructor that allows specifying the file name of the image + //sets fileName of the image to use + public Platform(String name, int initx, int inity) { + img = getImage("/imgs/" + name);//load the image + tx = AffineTransform.getTranslateInstance(x,y); + x = initx; + y = inity; + } + + + public void changePicture(String newFileName) { + img = getImage("/imgs/" + newFileName); + init(x,y); + } + + + public void move(int Xnum, int Ynum){ + y += Ynum; + x += Xnum; + } + + + public int getX() { + return x; + } + public int getY() { + return y; + } + + public void paint(Graphics g) { + //these are the 2 lines of code needed draw an image on the screen + Graphics2D g2 = (Graphics2D) g; + update(); + g2.drawImage(img, tx, null); + + } + + public boolean getPclr(int x, int y) { + boolean check = false; + Color c = new Color(color.getRGB(x, y)); + + + + if(c.getRed() == 3 && c.getGreen() == 169 && c.getBlue() == 244) { + //return true; + check = true; + //return true; + } + + //System.out.println(check); + return check; + } + + //update the picture variable location + private void update() { + tx.setToTranslation(x, y); + tx.scale(0.25,0.25); + } + + private void init(double a, double b) { + tx.setToTranslation(a, b); + tx.scale(1,1); + } + + private Image getImage(String path) { + Image tempImage = null; + try { + URL imageURL = Level.class.getResource(path); + color = ImageIO.read(imageURL); + tempImage = Toolkit.getDefaultToolkit().getImage(imageURL); + } catch (Exception e) { + e.printStackTrace(); + } + return tempImage; + } + +} diff --git a/Where's Perry3/src/imgs/lev3.png b/Where's Perry3/src/imgs/lev3.png deleted file mode 100644 index bc7811f..0000000 Binary files a/Where's Perry3/src/imgs/lev3.png and /dev/null differ diff --git a/Where's Perry3/src/imgs/leve3.png b/Where's Perry3/src/imgs/leve3.png new file mode 100644 index 0000000..e641b0d Binary files /dev/null and b/Where's Perry3/src/imgs/leve3.png differ diff --git a/Where's Perry3/src/imgs/level1.png b/Where's Perry3/src/imgs/level1.png index 47e5605..0bcbf25 100644 Binary files a/Where's Perry3/src/imgs/level1.png and b/Where's Perry3/src/imgs/level1.png differ diff --git a/Where's Perry3/src/imgs/level2.png b/Where's Perry3/src/imgs/level2.png index 0dd272e..ed47e88 100644 Binary files a/Where's Perry3/src/imgs/level2.png and b/Where's Perry3/src/imgs/level2.png differ diff --git a/Where's Perry3/src/imgs/level3.png b/Where's Perry3/src/imgs/level3.png index 7d32ac9..c2dda87 100644 Binary files a/Where's Perry3/src/imgs/level3.png and b/Where's Perry3/src/imgs/level3.png differ diff --git a/Where's Perry3/src/imgs/level3v.png b/Where's Perry3/src/imgs/level3v.png deleted file mode 100644 index c1ab05a..0000000 Binary files a/Where's Perry3/src/imgs/level3v.png and /dev/null differ diff --git a/Where's Perry3/src/imgs/platform.png b/Where's Perry3/src/imgs/platform.png new file mode 100644 index 0000000..ff9381d Binary files /dev/null and b/Where's Perry3/src/imgs/platform.png differ diff --git a/Where's Perry3/src/imgs/platform2.png b/Where's Perry3/src/imgs/platform2.png new file mode 100644 index 0000000..b30c1ce Binary files /dev/null and b/Where's Perry3/src/imgs/platform2.png differ