Advertisement
Guest User

Untitled

a guest
Jan 19th, 2020
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 46.53 KB | None | 0 0
  1. /* Anne Hua
  2.  * Jan 2, 2020
  3.  * Trash Quest
  4.  * Main map moving character
  5.  */
  6.  
  7. //Graphics &GUI imports
  8. import javax.swing.JFrame;
  9. import javax.swing.JPanel;
  10. import java.awt.Toolkit;
  11. import java.awt.Graphics;
  12. import java.awt.Color;
  13. import java.awt.Image;
  14. import java.awt.Font;
  15. import javax.swing.ImageIcon;
  16. import javax.swing.border.EmptyBorder;
  17. import java.awt.image.BufferedImage;
  18. import java.io.File;
  19. import java.io.IOException;
  20. import javax.imageio.ImageIO;
  21.  
  22. //Keyboard imports
  23. import java.awt.event.KeyEvent;
  24. import java.awt.event.KeyListener;
  25.  
  26. //Mouse imports
  27. import java.awt.event.MouseListener;
  28. import java.awt.event.MouseEvent;
  29.  
  30. import java.awt.Rectangle;
  31.  
  32. class GameFrameTwo extends JFrame {
  33.  
  34.     // Class variable (non-static)
  35.     static GameAreaPanel gamePanel;
  36.     Clock clock;
  37.     boolean direction[];
  38.     boolean space;
  39.     int lastPressed;
  40.     int num;
  41.     String mapImage;
  42.     int houseNameNum;
  43.  
  44.  
  45.  
  46.     boolean done = false;
  47.  
  48.  
  49.     // Images
  50.     BufferedImage map;
  51.     BufferedImage mainCharacter;
  52.  
  53.     BufferedImage pocketImage;
  54.  
  55.     BufferedImage bulletSprite;
  56.     BufferedImage bulletSprite2;
  57.     BufferedImage bulletSprite3;
  58.     BufferedImage bulletSprite4;
  59.  
  60.     //food buffered images
  61.     BufferedImage lemonadeImage;
  62.     BufferedImage chocolateImage;
  63.     BufferedImage appleImage;
  64.     BufferedImage sandwichImage;
  65.  
  66.     //key buffered images
  67.     BufferedImage peanutButterImage;
  68.     BufferedImage bookImage;
  69.     BufferedImage cookiesImage;
  70.     BufferedImage keyImage;
  71.  
  72.     BufferedImage paperSprite;
  73.     BufferedImage bananaSprite;
  74.  
  75.     Image newMainCharacter;
  76.     Image newMap;
  77.     Image newBulletSprite;
  78.     Image newPocketImage;
  79.  
  80.     Image newItem;
  81.  
  82.     //Character
  83.     Character character;
  84.  
  85.     Pocket pocket;
  86.     boolean pocketOpen;
  87.     int pocketNum;
  88.     boolean itemUsed;
  89.     Item item;
  90.     int keyNum;
  91.  
  92.     // Arrays//
  93.  
  94.     // Bullet array
  95.     Bullet bullet[];
  96.     EnemyBullet enemyBullets[];
  97.     int shootSprite;
  98.  
  99.     // Door hitboxes array
  100.     Rectangle insideDoor[];
  101.     Rectangle outsideDoor[];
  102.    
  103.     Rectangle walls1[];
  104.     Rectangle walls2[];
  105.     Rectangle walls3[];
  106.     Rectangle walls4[];
  107.     Rectangle walls5[];
  108.  
  109.     // Grass hitbox array
  110.     Hitbox grassHitbox[];
  111.  
  112.     // Image name array
  113.     /*
  114.      * String houseName[] = { "House1Battle.png", "House2Battle.png",
  115.      * "House3Battle.png", "House4Battle.png", "House5Battle.png", "World.png" };
  116.      */
  117.     String houseName[] = { "C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\House1Battle.png",
  118.         "C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\House2Battle.png",
  119.         "C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\House3Battle.png",
  120.         "C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\House4Battle.png",
  121.         "C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\House5Battle.png",
  122.         "C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\World.png" };
  123.  
  124.     // Character hitbox
  125.     Rectangle characterBox;
  126.  
  127.     // Villagers
  128.     Villager villager1;
  129.     Villager villager2;
  130.     Villager villager3;
  131.     Villager villager4;
  132.  
  133.     Food lemonade;
  134.     Food chocolate;
  135.     Food apple;
  136.     Food sandwich;
  137.  
  138.     Key peanutButter;
  139.     Key book;
  140.     Key cookies;
  141.     Key key;
  142.  
  143.     // Enemies
  144.     Paper paper1;
  145.     Banana banana1;
  146.     TrashCan trashCan1;
  147.     SodaCan sodaCan1;
  148.     SodaCan sodaCan2;
  149.     Skunkoon skunkoon;
  150.     // Start game from beginning
  151.     boolean begin = false;
  152.  
  153.     // Inside house maps
  154.     boolean houseOneMap = false;
  155.     boolean houseTwoMap = false;
  156.     boolean houseThreeMap = false;
  157.     boolean houseFourMap = false;
  158.     boolean houseFiveMap = true;
  159.  
  160.     // Main map
  161.     boolean mainMap = false;
  162.  
  163.     // Comeplete level or not
  164.     boolean houseOneComplete = false;
  165.     boolean houseTwoComplete = false;
  166.     boolean houseThreeComplete = false;
  167.     boolean houseFourComplete = false;
  168.     boolean houseFiveComplete = false;
  169.  
  170.     // Constructor - this runs first
  171.     GameFrameTwo() {
  172.  
  173.         super("My Game");
  174.         // Set the frame to full screen
  175.         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  176.         // this.setLocationRelativeTo(null); //start the frame in the center of the
  177.         // screen
  178.         this.setSize(900, 900);
  179.         this.setLocationRelativeTo(null); // start the frame in the center of the screen
  180.         this.setUndecorated(false); // Set to true to remove title bar
  181.         this.setBackground(new Color(255, 255, 255));
  182.  
  183.         clock = new Clock();
  184.         direction = new boolean[4];
  185.         character = new Character(400, 400, null, 100, 100, 100);
  186.         bullet = new Bullet[1000];
  187.         enemyBullets = new EnemyBullet[1000];
  188.         num = 0;
  189.         houseNameNum = 0;
  190.         shootSprite = 0;
  191.  
  192.         // Character box size??
  193.         characterBox = new Rectangle(412, 478, 26, 10); // (400, 477, 30, 10);
  194.  
  195.         // Hitbox arrays//
  196.  
  197.         // Door hitbox arrays
  198.         insideDoor = new Rectangle[6];
  199.         outsideDoor = new Rectangle[5];
  200.        
  201.         //wall hitbox arrays
  202.         walls1 = new Rectangle[4];
  203.         walls2 = new Rectangle[5];
  204.         walls3 = new Rectangle[7];
  205.         walls4 = new Rectangle[6];
  206.         walls5 = new Rectangle[7];
  207.  
  208.         // Grass hitbox array
  209.         grassHitbox = new Hitbox[32];
  210.  
  211.         // Inside door hitboxes
  212.         //Inside door hitboxes    
  213.         insideDoor[0] = new Rectangle(505, 590, 75, 10);
  214.         insideDoor[1] = new Rectangle(420, 650, 75, 10);
  215.         insideDoor[2] = new Rectangle(350, 660, 200, 50);
  216.         //left
  217.         insideDoor[3] = new Rectangle(265, 775, 65, 50);
  218.         //right
  219.         insideDoor[4] = new Rectangle(570, 775, 65, 50);    
  220.         insideDoor[5] = new Rectangle(320, 780, 260, 50);
  221.  
  222.         // Outside door hitboxes
  223.         outsideDoor[0] = new Rectangle(520, 610, 90, 50);
  224.         outsideDoor[1] = new Rectangle(520, 610, 90, 50);
  225.         outsideDoor[2] = new Rectangle(520, 610, 90, 50);
  226.         outsideDoor[3] = new Rectangle(520, 610, 90, 50);
  227.         outsideDoor[4] = new Rectangle(520, 610, 90, 50);
  228.        
  229.         //wall hitboxes
  230.         walls3[0] = new Rectangle(110, 660, 240, 10);
  231.         walls3[1] = new Rectangle(550, 660, 240, 10);
  232.         walls3[2] = new Rectangle(120, 380, 10, 280);
  233.         walls3[3] = new Rectangle(770, 380, 10, 280);
  234.         walls3[4] = new Rectangle(120, 150, 160, 240);
  235.         walls3[5] = new Rectangle(620, 150, 160, 240);
  236.         walls3[6] = new Rectangle(280, 170, 340, 10);    
  237.        
  238.         walls4[0] = new Rectangle(150, 775, 115, 10);
  239.         walls4[1] = new Rectangle(635, 775, 115, 10);
  240.         walls4[2] = new Rectangle(330, 775, 240, 240);
  241.         walls4[3] = new Rectangle(140, 80, 10, 695);
  242.         walls4[4] = new Rectangle(750, 80, 10, 695);
  243.         walls4[5] = new Rectangle(150, 70, 600, 10);
  244.        
  245.         walls5[0] = new Rectangle(80, 780, 240, 10);
  246.         walls5[1] = new Rectangle(580, 780, 240, 10);
  247.         walls5[2] = new Rectangle(80, 220, 10, 560);
  248.         walls5[3] = new Rectangle(805, 220, 10, 560);
  249.         walls5[4] = new Rectangle(80, 60, 180, 200);
  250.         walls5[5] = new Rectangle(640, 60, 180, 200);
  251.         walls5[6] = new Rectangle(200, 70, 480, 10);  
  252.  
  253.         // Grass hitboxes
  254.  
  255.         grassHitbox[0] = new Hitbox(-1000, -125, 846, 50);
  256.         grassHitbox[1] = new Hitbox(-1000, 5, 2000, 10);
  257.         grassHitbox[2] = new Hitbox(-76, -275, 554, 200);
  258.         grassHitbox[3] = new Hitbox(555, -511, 112, 437);
  259.         grassHitbox[4] = new Hitbox(745, -200, 10, 210);
  260.         grassHitbox[5] = new Hitbox(430, -511, 50, 156);
  261.         grassHitbox[6] = new Hitbox(255, -585, 185, 231);
  262.         grassHitbox[7] = new Hitbox(600, -585, 10, 75);
  263.         grassHitbox[8] = new Hitbox(-28, -556, 280, 10);
  264.         grassHitbox[9] = new Hitbox(-340, -466, 510, 10);
  265.         grassHitbox[10] = new Hitbox(160, -466, 10, 200);
  266.         grassHitbox[11] = new Hitbox(-341, -1007, 10, 552);
  267.         grassHitbox[12] = new Hitbox(-28, -1147, 665, 136);
  268.         grassHitbox[13] = new Hitbox(-240, -1018, 117, 10);
  269.         grassHitbox[14] = new Hitbox(-28, -933, 750, 10);
  270.         grassHitbox[15] = new Hitbox(-28, -933, 10, 380);
  271.         grassHitbox[16] = new Hitbox(-249, -868, 138, 320);
  272.         grassHitbox[17] = new Hitbox(715, -1145, 10, 240);
  273.  
  274.         grassHitbox[18] = new Hitbox(728, -1157, 10, 10);
  275.         grassHitbox[19] = new Hitbox(734, -1167, 10, 10);
  276.         grassHitbox[20] = new Hitbox(740, -1177, 10, 10);
  277.         grassHitbox[21] = new Hitbox(746, -1187, 10, 10);
  278.         grassHitbox[22] = new Hitbox(752, -1197, 10, 10);
  279.         grassHitbox[23] = new Hitbox(758, -1207, 10, 10);
  280.         grassHitbox[24] = new Hitbox(764, -1217, 10, 10);
  281.  
  282.         grassHitbox[25] = new Hitbox(624, -1157, 10, 10);
  283.         grassHitbox[26] = new Hitbox(618, -1167, 10, 10);
  284.         grassHitbox[27] = new Hitbox(612, -1177, 10, 10);
  285.         grassHitbox[28] = new Hitbox(606, -1187, 10, 10);
  286.         grassHitbox[29] = new Hitbox(600, -1197, 10, 10);
  287.         grassHitbox[30] = new Hitbox(594, -1207, 10, 10);
  288.         grassHitbox[31] = new Hitbox(588, -1217, 10, 10);
  289.  
  290.         try {  
  291.            
  292.             /*
  293.              * lemonadeImage = ImageIO.read(new File("Lemonade.png"));
  294.       chocolateImage = ImageIO.read(new File("Chocolate.png"));
  295.       appleImage = ImageIO.read(new File("Apple.png"));
  296.       sandwichImage = ImageIO.read(new File("Sandwich.png"));
  297.  
  298.       peanutButterImage = ImageIO.read(new File("Peanut Butter.png"));
  299.       bookImage = ImageIO.read(new File("Book.png"));
  300.       cookiesImage = ImageIO.read(new File("Cookies.png"));
  301.       keyImage = ImageIO.read(new File("Key.png"));
  302.              */
  303.             lemonadeImage = ImageIO.read(new File("C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\Lemonade.png"));
  304.             chocolateImage = ImageIO.read(new File("C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\Chocolate.png"));
  305.             appleImage = ImageIO.read(new File("C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\Apple.png"));
  306.             sandwichImage = ImageIO.read(new File("C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\Sandwich.png"));
  307.  
  308.             peanutButterImage = ImageIO.read(new File("C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\Peanut Butter.png"));
  309.             bookImage = ImageIO.read(new File("C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\Book.png"));
  310.             cookiesImage = ImageIO.read(new File("C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\Cookies.png"));
  311.             keyImage = ImageIO.read(new File("C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\Key.png"));
  312.            
  313.             //Get main character image
  314.             String mainImage = "C:\\\\Users\\\\Jeffray\\\\eclipse-workspace\\\\Final Project\\\\src\\\\CharacterHouse2.png";
  315.             mainCharacter = ImageIO.read(new File(mainImage));
  316.             character.setImage(mainCharacter);
  317.  
  318.             /*bulletSprite = ImageIO.read(new File("Bullet1.png"));
  319.             bulletSprite2 = ImageIO.read(new File("Bullet2.png"));
  320.             bulletSprite3 = ImageIO.read(new File("Bullet3.png"));
  321.             bulletSprite4 = ImageIO.read(new File("Bullet4.png"));*/
  322.             paperSprite = ImageIO.read(new File("C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\paper.png"));
  323.             bananaSprite = ImageIO.read(new File("C:\\Users\\Jeffray\\Documents\\School Java Projects\\Final Project\\TrashBanana.png"));
  324.  
  325.             bulletSprite = ImageIO.read(new File("C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\Bullet1.png"));
  326.             bulletSprite2 = ImageIO.read(new File("C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\Bullet2.png"));
  327.             bulletSprite3 = ImageIO.read(new File("C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\Bullet3.png"));
  328.             bulletSprite4 = ImageIO.read(new File("C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\Bullet4.png"));
  329.  
  330.             pocketImage = ImageIO.read(new File("C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\PocketWithDescription.png"));
  331.  
  332.         } catch (IOException ex) {
  333.             ex.printStackTrace();
  334.         }
  335.  
  336.         // Pocket
  337.         pocket = new Pocket();
  338.  
  339.         // teletubby names
  340.         villager1 = new Villager(0, 0, null, 10, 10, "Tinky-Winky");
  341.         villager2 = new Villager(0, 0, null, 10, 10, "Dipsy");
  342.         villager3 = new Villager(0, 0, null, 10, 10, "Laa Laa");
  343.         villager4 = new Villager(0, 0, null, 10, 10, "Po");
  344.  
  345.         lemonade = new Food(0, 0, lemonadeImage, "Lemonade", "Drink to gain +5 health.", 5);
  346.         chocolate = new Food(0, 0, chocolateImage, "Chocolate", "Eat to gain +10 health.", 10);
  347.         apple = new Food(0, 0, appleImage, "Apple", "Eat to gain +15 health.", 15);
  348.         sandwich = new Food(0, 0, sandwichImage, "Sandwich", "Eat to gain +20 health.", 20);
  349.  
  350.         peanutButter = new Key(0, 0, peanutButterImage, "Peanut Butter", "Bring this to the purple house. to unlock the next level.", 1);
  351.         book = new Key(0, 0, bookImage, "Book", "Bring this to the pink house to. unlock the next level.", 2);
  352.         cookies = new Key(0, 0, cookiesImage, "Cookies", "Bring this to the orange house. to unlock the next level.", 3);
  353.         key = new Key(0, 0, keyImage, "Key", "Bring this to your house to. unlock the next level.", 4);
  354.  
  355.         villager1.setFood(lemonade);
  356.         villager2.setFood(chocolate);
  357.         villager3.setFood(apple);
  358.         villager4.setFood(sandwich);
  359.  
  360.         villager1.setKey(peanutButter);
  361.         villager2.setKey(book);
  362.         villager3.setKey(cookies);
  363.         villager4.setKey(key);
  364.  
  365.         //Pocket
  366.         pocket = new Pocket();
  367.         pocketOpen = false;
  368.         pocketNum = 0;
  369.         itemUsed = false;
  370.         pocket.addItem(lemonade);
  371.         pocket.addItem(chocolate);
  372.         pocket.addItem(apple);
  373.         pocket.addItem(sandwich);
  374.         pocket.addItem(peanutButter);
  375.         pocket.addItem(book);
  376.         pocket.addItem(cookies);
  377.         pocket.addItem(key);
  378.  
  379.         // Enemies
  380.         paper1 = new Paper(200, 200, null, 50, 50, 30, 5);
  381.         banana1 = new Banana(0, 0, null, 50, 50, 30, 10);
  382.         trashCan1 = new TrashCan(300, 300, null, 50, 50, 30, 5);
  383.         sodaCan1 = new SodaCan(300, 300, null, 50, 50, 30, 10);
  384.         sodaCan2 = new SodaCan(500, 500, null, 50, 50, 30, 10);
  385.         skunkoon = new Skunkoon(500, 500, null, 200, 200, 30, 10);
  386.  
  387.         // Set up the game panel (where we put our graphics)
  388.         gamePanel = new GameAreaPanel();
  389.         gamePanel.setBackground(new Color(87, 65, 200, 150));
  390.  
  391.         this.add(new GameAreaPanel());
  392.  
  393.         MyKeyListener keyListener = new MyKeyListener();
  394.         this.addKeyListener(keyListener);
  395.  
  396.         MyMouseListener mouseListener = new MyMouseListener();
  397.         this.addMouseListener(mouseListener);
  398.  
  399.         this.requestFocusInWindow(); // make sure the frame has focus
  400.  
  401.         this.setResizable(true);
  402.         this.setVisible(true);
  403.  
  404.  
  405.         // Start the game loop in a separate thread
  406.         Thread t = new Thread(new Runnable() {
  407.             public void run() {
  408.                 animate();
  409.             }
  410.         }); // start the gameLoop
  411.         t.start();
  412.  
  413.     } // End of Constructor
  414.  
  415.     // the main gameloop - this is where the game state is updated
  416.     public void animate() {
  417.  
  418.         while (true) {
  419.             this.repaint();
  420.         }
  421.     }
  422.  
  423.     /** --------- INNER CLASSES ------------- **/
  424.  
  425.     // Inner class for the the game area - This is where all the drawing of the
  426.     // screen occurs
  427.     private class GameAreaPanel extends JPanel {
  428.  
  429.         public void paintComponent(Graphics g) {
  430.  
  431.             clock.update();
  432.             character.updateSprites();
  433.  
  434.             // Move main map when main map is true
  435.             if (mainMap) {
  436.                 if (lastPressed == 0 && direction[0]) {
  437.                     character.setPositionY(character.getPositionY() + 1 * clock.getElapsedTime() * 100);
  438.                     character.move(0);
  439.                 } else if (lastPressed == 1 && direction[1]) {
  440.                     character.setPositionY(character.getPositionY() + -1 * clock.getElapsedTime() * 100);
  441.                     character.move(1);
  442.                 } else if (lastPressed == 2 && direction[2]) {
  443.                     character.setPositionX(character.getPositionX() + -1 * clock.getElapsedTime() * 100);
  444.                     character.move(2);
  445.                 } else if (lastPressed == 3 && direction[3]) {
  446.                     character.setPositionX(character.getPositionX() + 1 * clock.getElapsedTime() * 100);
  447.                     character.move(3);
  448.                 } else {
  449.                     character.move(5);
  450.                 }
  451.                 // Move character
  452.             } else {
  453.                 if (lastPressed == 0 && direction[0]) {
  454.                     character.setPositionY(character.getPositionY() + -1 * clock.getElapsedTime() * 100);
  455.                     character.move(0);
  456.                 } else if (lastPressed == 1 && direction[1]) {
  457.                     character.setPositionY(character.getPositionY() + 1 * clock.getElapsedTime() * 100);
  458.                     character.move(1);
  459.                 } else if (lastPressed == 2 && direction[2]) {
  460.                     character.setPositionX(character.getPositionX() + 1 * clock.getElapsedTime() * 100);
  461.                     character.move(2);
  462.                 } else if (lastPressed == 3 && direction[3]) {
  463.                     character.setPositionX(character.getPositionX() + -1 * clock.getElapsedTime() * 100);
  464.                     character.move(3);
  465.                 } else {
  466.                     character.move(5);
  467.                 }
  468.             }
  469.  
  470.             if (mainMap) {
  471.                 // Grass array hitboxes
  472.                 for (int i = 0; i < grassHitbox.length; i++) {
  473.                     Rectangle temp = new Rectangle((int) (character.getPositionX() + grassHitbox[i].getPositionX()),
  474.                             (int) (character.getPositionY() + grassHitbox[i].getPositionY()), grassHitbox[i].getWidth(),
  475.                             grassHitbox[i].getHeight());
  476.                     if (characterBox.intersects(temp)) {
  477.                         if (lastPressed == 0) {
  478.                             character.setPositionY(character.getPositionY() + -1 * clock.getElapsedTime() * 100);
  479.                         } else if (lastPressed == 1) {
  480.                             character.setPositionY(character.getPositionY() + 1 * clock.getElapsedTime() * 100);
  481.                         } else if (lastPressed == 2) {
  482.                             character.setPositionX(character.getPositionX() + 1 * clock.getElapsedTime() * 100);
  483.                         } else if (lastPressed == 3) {
  484.                             character.setPositionX(character.getPositionX() + -1 * clock.getElapsedTime() * 100);
  485.                         }
  486.                     }
  487.                 }
  488.             }
  489.  
  490.             if (num > 0) {
  491.                 for (int i = 0; i < num; i++) {
  492.                     if (bullet[i] != null) {
  493.                         if ((bullet[i].getPositionY() > 610) || (bullet[i].getPositionX() > 700)
  494.                                 || (bullet[i].getPositionY() < 350) || (bullet[i].getPositionX() < 190)) {
  495.                             bullet[i] = null;
  496.                             for (int j = i; j < num; j++) {
  497.                                 bullet[j] = bullet[j + 1];
  498.                                 bullet[j + 1] = null;
  499.                                 num--;
  500.                             }
  501.                         } else if (bullet[i].getDirection() == 0) {
  502.                             bullet[i].setPositionY(bullet[i].getPositionY() + -1 * clock.getElapsedTime() * 100);
  503.                         } else if (bullet[i].getDirection() == 1) {
  504.                             bullet[i].setPositionY(bullet[i].getPositionY() + 1 * clock.getElapsedTime() * 100);
  505.                         } else if (bullet[i].getDirection() == 2) {
  506.                             bullet[i].setPositionX(bullet[i].getPositionX() + 1 * clock.getElapsedTime() * 100);
  507.                         } else if (bullet[i].getDirection() == 3) {
  508.                             bullet[i].setPositionX(bullet[i].getPositionX() + -1 * clock.getElapsedTime() * 100);
  509.                         }
  510.                     }
  511.                 }
  512.             }
  513.  
  514.             setDoubleBuffered(true);
  515.  
  516.             // Get images
  517.             /*
  518.              * try {
  519.              *
  520.              * //When main Map is true all other map is false if (mainMap == true){
  521.              * houseNameNum = 5; houseOneMap = false; houseTwoMap = false; houseThreeMap =
  522.              * false; houseFourMap = false; houseFiveMap = false; }
  523.              *
  524.              * if (houseOneMap == true){ houseNameNum = 0; }
  525.              *
  526.              * if (houseTwoMap == true){ houseNameNum = 1; }
  527.              *
  528.              * if (houseThreeMap == true){ houseNameNum = 2; }
  529.              *
  530.              * if (houseFourMap == true){ houseNameNum = 3; }
  531.              *
  532.              * if (houseFiveMap == true){ houseNameNum = 4; }
  533.              *
  534.              * map = ImageIO.read(new File(houseName[houseNameNum]));
  535.              *
  536.              * //Get main character image String mainImage =
  537.              * "C:\\\\Users\\\\Jeffray\\\\eclipse-workspace\\\\Final Project\\\\src\\\\CharacterHouse2.png"
  538.              * ; mainCharacter = ImageIO.read(new File(mainImage));
  539.              * character.setImage(mainCharacter);
  540.              *
  541.              * bulletSprite = ImageIO.read(new File("Bullet1.png")); bulletSprite2 =
  542.              * ImageIO.read(new File("Bullet2.png")); bulletSprite3 = ImageIO.read(new
  543.              * File("Bullet3.png")); bulletSprite4 = ImageIO.read(new File("Bullet4.png"));
  544.              * paperSprite = ImageIO.read(new
  545.              * File("C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\paper.png"))
  546.              * ; bananaSprite = ImageIO.read(new
  547.              * File("C:\\Users\\Jeffray\\Documents\\School Java Projects\\Final Project\\TrashBanana.png"
  548.              * ));
  549.              *
  550.              * bulletSprite = ImageIO.read(new
  551.              * File("C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\Bullet1.png"
  552.              * )); bulletSprite2 = ImageIO.read(new
  553.              * File("C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\Bullet2.png"
  554.              * )); bulletSprite3 = ImageIO.read(new
  555.              * File("C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\Bullet3.png"
  556.              * )); bulletSprite4 = ImageIO.read(new
  557.              * File("C:\\Users\\Jeffray\\eclipse-workspace\\Final Project\\src\\Bullet4.png"
  558.              * ));
  559.              *
  560.              * } catch (IOException ex) { ex.printStackTrace(); }
  561.              */
  562.             if (mainMap == true){
  563.                 houseNameNum = 5;
  564.                 houseOneMap = false;
  565.                 houseTwoMap = false;
  566.                 houseThreeMap = false;
  567.                 houseFourMap = false;
  568.                 houseFiveMap = false;
  569.             }
  570.             try {
  571.                 if (houseOneMap == true){
  572.                     houseNameNum = 0;
  573.                 }
  574.  
  575.                 if (houseTwoMap == true){
  576.                     houseNameNum = 1;
  577.                 }
  578.  
  579.                 if (houseThreeMap == true){
  580.                     houseNameNum = 2;
  581.                 }
  582.  
  583.                 if (houseFourMap == true){
  584.                     houseNameNum = 3;
  585.                 }
  586.  
  587.                 if (houseFiveMap == true){
  588.                     houseNameNum = 4;
  589.                 }
  590.  
  591.                 map = ImageIO.read(new File(houseName[houseNameNum]));
  592.             } catch (IOException ex) { ex.printStackTrace(); }
  593.  
  594.             // Resize images
  595.  
  596.             // Main map resize
  597.             if (mainMap == true && done ==false) {
  598.                 newMap = map.getScaledInstance(2500, 2500, Image.SCALE_DEFAULT); // Resize image for main map
  599.                 done = true;
  600.             }
  601.  
  602.             // Main character resize
  603.             newMainCharacter = mainCharacter.getScaledInstance(16 * 3, 29 * 3, Image.SCALE_DEFAULT);
  604.  
  605.             // House one resize
  606.             if (houseOneMap == true) {
  607.                 newMap = map.getScaledInstance(900, 900, Image.SCALE_DEFAULT);
  608.             } else if (houseTwoMap) {
  609.                 newMap = map.getScaledInstance(900, 900, Image.SCALE_DEFAULT);
  610.             } else if (houseThreeMap) {
  611.                 newMap = map.getScaledInstance(900, 900, Image.SCALE_DEFAULT);
  612.             } else if (houseFourMap) {
  613.                 newMap = map.getScaledInstance(900, 900, Image.SCALE_DEFAULT);
  614.             } else if (houseFiveMap) {
  615.                 newMap = map.getScaledInstance(900, 900, Image.SCALE_DEFAULT);
  616.             }
  617.             if (shootSprite > 0 && shootSprite <= 13) {
  618.                 if (lastPressed == 0) {
  619.                     character.move(6);
  620.                 } else if (lastPressed == 1) {
  621.                     character.move(7);
  622.                 } else if (lastPressed == 2) {
  623.                     character.move(8);
  624.                 } else if (lastPressed == 3) {
  625.                     character.move(9);
  626.                 }
  627.                 shootSprite++;
  628.             } else if (shootSprite == 14) {
  629.                 shootSprite = 0;
  630.             }
  631.             if (space) {
  632.                 bullet[num] = new Bullet((int) character.getPositionX() + 32, (int) character.getPositionY() + 25,
  633.                         bulletSprite, lastPressed);
  634.                 shootSprite = 1;
  635.                 num++;
  636.                 space = false;
  637.             }
  638.  
  639.             // Update Hitboxes
  640.             character.update();
  641.             paper1.update();
  642.             banana1.update();
  643.  
  644.             // When its main map from house one
  645.             if (mainMap) {
  646.                 if (begin == true) {
  647.                     g.drawImage(newMap, (int) character.getPositionX() - 410, (int) character.getPositionY() - 1930,
  648.                             this);
  649.                     g.drawImage(newMainCharacter, 400, 400, this);
  650.                 }
  651.  
  652.                 if (houseOneComplete == true) {
  653.                     g.drawImage(newMap, (int) character.getPositionX() - 1100, (int) character.getPositionY() - 2030,
  654.                             this);
  655.                     g.drawImage(character.getCurrentSprite(), 400, 400, this);
  656.  
  657.                     //          //DOORS
  658.                     //          //Door 1
  659.                     //          g.drawRect((int)character.getPositionX() - 154, (int)character.getPositionY() - 135, 77, 10);
  660.                     //          //Door 2
  661.                     //          g.drawRect((int)character.getPositionX() + 667, (int)character.getPositionY() - 200, 80, 10);          
  662.                     //          //Door 3
  663.                     //          g.drawRect((int)character.getPositionX() + 440, (int)character.getPositionY() - 585, 160, 10);
  664.                     //          //Door 4
  665.                     //          g.drawRect((int)character.getPositionX() - 330, (int)character.getPositionY() - 1018, 90, 10);
  666.                     //          g.drawRect((int)character.getPositionX() - 120, (int)character.getPositionY() - 1018, 90, 10);
  667.                     //          //Door 5
  668.                     //          g.drawRect((int)character.getPositionX() + 600, (int)character.getPositionY() - 1227, 165, 10);          
  669.                 }
  670.                 if (houseTwoComplete == true) {
  671.                     g.drawImage(newMap, (int) character.getPositionX() - 1050, (int) character.getPositionY() - 2100,
  672.                             this);
  673.                     g.drawImage(newMainCharacter, 400, 400, this);
  674.                 }
  675.             }
  676.  
  677.             // When in houses
  678.             if (mainMap == false) {
  679.                 // For house one map hitboxes remove when done
  680.                 g.drawImage(newMap, 0, -0, this);
  681.                 g.drawImage(character.getCurrentSprite(), (int) character.getPositionX(),
  682.                         (int) character.getPositionY(), this);
  683.                 if (num > 0) {
  684.                     for (int i = 0; i < num; i++) {
  685.                         if (bullet[i] != null) {
  686.                             if (bullet[i].getDirection() == 0) {
  687.                                 newBulletSprite = bulletSprite.getScaledInstance(15, 15, Image.SCALE_DEFAULT);
  688.                             } else if (bullet[i].getDirection() == 1) {
  689.                                 newBulletSprite = bulletSprite3.getScaledInstance(15, 15, Image.SCALE_DEFAULT);
  690.                             } else if (bullet[i].getDirection() == 2) {
  691.                                 newBulletSprite = bulletSprite2.getScaledInstance(15, 15, Image.SCALE_DEFAULT);
  692.                             } else if (bullet[i].getDirection() == 3) {
  693.                                 newBulletSprite = bulletSprite4.getScaledInstance(15, 15, Image.SCALE_DEFAULT);
  694.                             }
  695.                             g.drawImage(newBulletSprite, (int) bullet[i].getPositionX(), (int) bullet[i].getPositionY(),
  696.                                     this);
  697.                         }
  698.                     }
  699.                 }
  700.                 if (houseThreeMap) {
  701.                     for (int j = 0; j < walls3.length; j ++) {
  702.                       if (num > 0) {
  703.                         for (int i = 0; i < num; i ++) {
  704.                           if (bullet[i] != null) {
  705.                             bullet[i].update();
  706.                             if (bullet[i].getBox().intersects(walls3[j])) {
  707.                               bullet[i] = null;
  708.                               for (int n = i; n < num; n ++) {
  709.                                 bullet[n] = bullet[n + 1];
  710.                                 bullet[n + 1] = null;
  711.                                 num --;
  712.                               }
  713.                             }
  714.                           }
  715.                         }
  716.                       }
  717.                       if (character.getBox().intersects(walls3[j])) {
  718.                         if(lastPressed == 0){
  719.                           character.setPositionY(character.getPositionY() +1*clock.getElapsedTime()*100);        
  720.                         }else if(lastPressed == 1){
  721.                           character.setPositionY(character.getPositionY() +-1*clock.getElapsedTime()*100);
  722.                         }else if(lastPressed == 2){
  723.                           character.setPositionX(character.getPositionX() +-1*clock.getElapsedTime()*100);
  724.                         }else if(lastPressed == 3){
  725.                           character.setPositionX(character.getPositionX() +1*clock.getElapsedTime()*100);
  726.                         }
  727.                       }
  728.                     }
  729.                   } else if (houseFourMap) {
  730.                     g.drawRect(walls4[0].x, walls4[0].y, walls4[0].width, walls4[0].height);
  731.                     g.drawRect(walls4[1].x, walls4[1].y, walls4[1].width, walls4[1].height);
  732.                     g.drawRect(walls4[2].x, walls4[2].y, walls4[2].width, walls4[2].height);
  733.                     g.drawRect(walls4[3].x, walls4[3].y, walls4[3].width, walls4[3].height);
  734.                     g.drawRect(walls4[4].x, walls4[4].y, walls4[4].width, walls4[4].height);
  735.                     g.drawRect(walls4[5].x, walls4[5].y, walls4[5].width, walls4[5].height);      
  736.                     g.drawRect(insideDoor[3].x, insideDoor[3].y, insideDoor[3].width, insideDoor[3].height);
  737.                     g.drawRect(insideDoor[4].x, insideDoor[4].y, insideDoor[4].width, insideDoor[4].height);
  738.                     for (int j = 0; j < walls4.length; j ++) {
  739.                       if (num > 0) {
  740.                         for (int i = 0; i < num; i ++) {
  741.                           if (bullet[i] != null) {
  742.                             bullet[i].update();
  743.                             if (bullet[i].getBox().intersects(walls4[j])) {
  744.                               bullet[i] = null;
  745.                               for (int n = i; n < num; n ++) {
  746.                                 bullet[n] = bullet[n + 1];
  747.                                 bullet[n + 1] = null;
  748.                                 num --;
  749.                               }
  750.                             }
  751.                           }
  752.                         }
  753.                       }
  754.                       if (character.getBox().intersects(walls4[j])) {
  755.                         if(lastPressed == 0){
  756.                           character.setPositionY(character.getPositionY() +1*clock.getElapsedTime()*100);        
  757.                         }else if(lastPressed == 1){
  758.                           character.setPositionY(character.getPositionY() +-1*clock.getElapsedTime()*100);
  759.                         }else if(lastPressed == 2){
  760.                           character.setPositionX(character.getPositionX() +-1*clock.getElapsedTime()*100);
  761.                         }else if(lastPressed == 3){
  762.                           character.setPositionX(character.getPositionX() +1*clock.getElapsedTime()*100);
  763.                         }
  764.                       }
  765.                     }
  766.                   } else if (houseFiveMap) {
  767.                     for (int j = 0; j < walls5.length; j ++) {
  768.                       if (num > 0) {
  769.                         for (int i = 0; i < num; i ++) {
  770.                           if (bullet[i] != null) {
  771.                             bullet[i].update();
  772.                             if (bullet[i].getBox().intersects(walls5[j])) {
  773.                               bullet[i] = null;
  774.                               for (int n = i; n < num; n ++) {
  775.                                 bullet[n] = bullet[n + 1];
  776.                                 bullet[n + 1] = null;
  777.                                 num --;
  778.                               }
  779.                             }
  780.                           }
  781.                         }
  782.                       }
  783.                       if (character.getBox().intersects(walls5[j])) {
  784.                         if(lastPressed == 0){
  785.                           character.setPositionY(character.getPositionY() +1*clock.getElapsedTime()*100);        
  786.                         }else if(lastPressed == 1){
  787.                           character.setPositionY(character.getPositionY() +-1*clock.getElapsedTime()*100);
  788.                         }else if(lastPressed == 2){
  789.                           character.setPositionX(character.getPositionX() +-1*clock.getElapsedTime()*100);
  790.                         }else if(lastPressed == 3){
  791.                           character.setPositionX(character.getPositionX() +1*clock.getElapsedTime()*100);
  792.                         }
  793.                       }
  794.                     }
  795.                   }
  796.                 // Inside house one door collision
  797.                 if ((houseOneMap == true) && (character.getBox().intersects(insideDoor[0]))) {
  798.                     mainMap = true;
  799.                     houseOneMap = false;
  800.                     houseOneComplete = true;
  801.                     System.out.println("main map is true");
  802.                 }
  803.                 if (houseOneMap) {
  804.                     character.setElapsedTime(clock.getElapsedTime());
  805.                    
  806.                     if (paper1.moveDirection(character.getPositionX(), character.getPositionY()) == 3) {
  807.                         paper1.setPositionX(paper1.getPositionX() + -0.5 * clock.getElapsedTime() * 100);
  808.                     } else if (paper1.moveDirection(character.getPositionX(), character.getPositionY()) == 2) {
  809.                         paper1.setPositionX(paper1.getPositionX() + 0.5 * clock.getElapsedTime() * 100);
  810.                     } else if (paper1.moveDirection(character.getPositionX(), character.getPositionY()) == 1) {
  811.                         paper1.setPositionY(paper1.getPositionY() + 0.5 * clock.getElapsedTime() * 100);
  812.                     } else if (paper1.moveDirection(character.getPositionX(), character.getPositionY()) == 0) {
  813.                         paper1.setPositionY(paper1.getPositionY() + -0.5 * clock.getElapsedTime() * 100);
  814.                     }
  815.                     g.drawImage(paperSprite, (int) paper1.getPositionX(), (int) paper1.getPositionY(),
  816.                             (int) paper1.getWidth(), (int) paper1.getHeight(), null);
  817.                     if((character.getBox().intersects(paper1.getBox())) && (character.getElapsedTime() >= 2)) {
  818.                         character.setHealth(character.getHealth() - paper1.getDamage());
  819.                         character.setElapsedTime(0);
  820.                     }
  821.                 } else if (houseTwoMap) {
  822.                     banana1.setElapsedTime(clock.getElapsedTime());
  823.                     character.setElapsedTime(clock.getElapsedTime());
  824.  
  825.                     if (banana1.getElapsedTime() >= 3 && banana1.getMove() == false) {
  826.                         banana1.moveDirection(character.getPositionX(), character.getPositionY());
  827.                         banana1.setElapsedTime(0);
  828.                         banana1.setMove(true);
  829.                     } else if (banana1.getElapsedTime() >= 2 && banana1.getMove() == true) {
  830.                         banana1.setElapsedTime(0);
  831.                         banana1.setMove(false);
  832.                     }
  833.                     if (banana1.getMove() == true) {
  834.                         if (banana1.getDirection() == 3) {
  835.                             banana1.setPositionX(banana1.getPositionX() + -2 * clock.getElapsedTime() * 100);
  836.                         } else if (banana1.getDirection() == 2) {
  837.                             banana1.setPositionX(banana1.getPositionX() + 2 * clock.getElapsedTime() * 100);
  838.                         } else if (banana1.getDirection() == 1) {
  839.                             banana1.setPositionY(banana1.getPositionY() + 2 * clock.getElapsedTime() * 100);
  840.                         } else if (banana1.getDirection() == 0) {
  841.                             banana1.setPositionY(banana1.getPositionY() + -2 * clock.getElapsedTime() * 100);
  842.                         }
  843.                     }
  844.                     g.drawImage(bananaSprite, (int) banana1.getPositionX(), (int) banana1.getPositionY(),
  845.                             banana1.getWidth(), banana1.getHeight(), null);
  846.                     if((character.getBox().intersects(banana1.getBox())) && (character.getElapsedTime() >= 2)) {
  847.                         character.setHealth(character.getHealth() - banana1.getDamage());
  848.                         character.setElapsedTime(0);
  849.                     }
  850.                 } else if (houseThreeMap) {
  851.                     trashCan1.setElapsedTime(clock.getElapsedTime());
  852.                     character.setElapsedTime(clock.getElapsedTime());
  853.                    
  854.                     if (trashCan1.getElapsedTime() >= 1) {
  855.                         trashCan1.setElapsedTime(0);
  856.                         for (int i = 0; i < 1000; i++) {
  857.                             if (enemyBullets[i] == null) {
  858.                                 enemyBullets[i] = new EnemyBullet(trashCan1.getPositionX(), trashCan1.getPositionY(),
  859.                                         bulletSprite, character.getPositionX(), character.getPositionY());
  860.                                 break;
  861.                             }
  862.                         }
  863.                     }
  864.                     for (int i = 0; i < 1000; i++) {
  865.                         if (enemyBullets[i] != null) {
  866.                             enemyBullets[i].setPositionX(
  867.                                     enemyBullets[i].getPositionX() + Math.cos(enemyBullets[i].getAngle()) * 3);
  868.                             enemyBullets[i].setPositionY(
  869.                                     enemyBullets[i].getPositionY() + Math.sin(enemyBullets[i].getAngle()) * 3);
  870.                             g.drawImage(bananaSprite, (int) enemyBullets[i].getPositionX(),
  871.                                     (int) enemyBullets[i].getPositionY(), enemyBullets[i].getWidth(),
  872.                                     enemyBullets[i].getHeight(), null);
  873.  
  874.                         }
  875.                     }
  876.                     for(int i=0; i<1000; i++) {
  877.                         if(enemyBullets[i] != null) {
  878.                             if((character.getBox().intersects(enemyBullets[i].getBox())) && (character.getElapsedTime() >= 1)) {
  879.                                 character.setHealth(character.getHealth() - trashCan1.getDamage());
  880.                                 character.setElapsedTime(0);
  881.                             }
  882.                             enemyBullets[i].update();
  883.                         }
  884.                     }
  885.                 } else if (houseFourMap) {
  886.                     sodaCan1.setElapsedTime(clock.getElapsedTime());
  887.                     sodaCan2.setElapsedTime(clock.getElapsedTime());
  888.                     character.setElapsedTime(clock.getElapsedTime());
  889.                    
  890.                     sodaCan1.shoot(2 * sodaCan1.getElapsedTime() * 100);
  891.                     sodaCan2.shoot(2 * sodaCan2.getElapsedTime() * 100);
  892.                     sodaCan1.setElapsedTime(0);
  893.                     sodaCan2.setElapsedTime(0);
  894.                     g.fillArc((int)sodaCan1.getPositionX(), (int)sodaCan1.getPositionY(),
  895.                     sodaCan1.getRadius(), sodaCan1.getRadius(), (int)sodaCan1.getStartAngle(),
  896.                     sodaCan1.getArcAngle());
  897.                     g.fillArc((int)sodaCan2.getPositionX(), (int)sodaCan2.getPositionY(),
  898.                     sodaCan2.getRadius(), sodaCan2.getRadius(), (int)sodaCan2.getStartAngle(),
  899.                     sodaCan2.getArcAngle());
  900.                    
  901.                     double distance1 = Math.sqrt(Math.pow(character.getPositionX()-(sodaCan1.getPositionX()+sodaCan1.getRadius()/2), 2) + Math.pow(character.getPositionY()-(sodaCan1.getPositionY()+sodaCan1.getRadius()/2), 2));
  902.                     if(distance1 <= sodaCan1.getRadius()/2) {
  903.                         double angle = Math.atan2(character.getPositionY()-(sodaCan1.getPositionY()+sodaCan1.getRadius()/2), character.getPositionX()-(sodaCan1.getPositionX()+sodaCan1.getRadius()/2));
  904.                         angle = Math.toDegrees(angle);
  905.                         if(angle < 0) {
  906.                             angle *= -1;
  907.                         }else {
  908.                             angle = 360 - angle;
  909.                         }
  910.                         System.out.println("angle: " + angle);
  911.                         System.out.println("startangle: " + sodaCan1.getStartAngle());
  912.                         if((angle >= sodaCan1.getStartAngle()) && (angle <= sodaCan1.getStartAngle()+sodaCan1.getArcAngle()) && (character.getElapsedTime() >= 1.5)) {
  913.                             character.setHealth(character.getHealth()-sodaCan1.getDamage());
  914.                             character.setElapsedTime(0);
  915.                         }
  916.                     }
  917.                     //System.out.println("distance: "+distance1);
  918.            
  919.                    
  920.                 } else if (houseFiveMap) {
  921.                     // House 5 Stuff
  922.                     skunkoon.setElapsedTime(clock.getElapsedTime());
  923.                     character.setElapsedTime(clock.getElapsedTime());
  924.                     if (skunkoon.getElapsedTime() >= 2) {
  925.                         skunkoon.setElapsedTime(0);
  926.                         int bulletNum = 0;
  927.                         for (int i = 0; i < 1000; i++) {
  928.                             if (enemyBullets[i] == null) {
  929.                                 if (bulletNum == 0) {
  930.                                     enemyBullets[i] = new EnemyBullet(skunkoon.getPositionX() + skunkoon.getWidth() / 2,
  931.                                             skunkoon.getPositionY() + skunkoon.getHeight() / 2, bulletSprite,
  932.                                             skunkoon.getPositionX() + skunkoon.getWidth() / 2,
  933.                                             skunkoon.getPositionY() - 10 + skunkoon.getHeight() / 2);
  934.                                     bulletNum++;
  935.                                 } else if (bulletNum == 1) {
  936.                                     enemyBullets[i] = new EnemyBullet(skunkoon.getPositionX() + skunkoon.getWidth() / 2,
  937.                                             skunkoon.getPositionY() + skunkoon.getHeight() / 2, bulletSprite,
  938.                                             skunkoon.getPositionX() + skunkoon.getWidth() / 2,
  939.                                             skunkoon.getPositionY() + 10 + skunkoon.getHeight() / 2);
  940.                                     bulletNum++;
  941.                                 } else if (bulletNum == 2) {
  942.                                     enemyBullets[i] = new EnemyBullet(skunkoon.getPositionX() + skunkoon.getWidth() / 2,
  943.                                             skunkoon.getPositionY() + skunkoon.getHeight() / 2, bulletSprite,
  944.                                             skunkoon.getPositionX() + 10 + skunkoon.getWidth() / 2,
  945.                                             skunkoon.getPositionY() + skunkoon.getHeight() / 2);
  946.                                     bulletNum++;
  947.                                 } else if (bulletNum == 3) {
  948.                                     enemyBullets[i] = new EnemyBullet(skunkoon.getPositionX() + skunkoon.getWidth() / 2,
  949.                                             skunkoon.getPositionY() + skunkoon.getHeight() / 2, bulletSprite,
  950.                                             skunkoon.getPositionX() - 10 + skunkoon.getWidth() / 2,
  951.                                             skunkoon.getPositionY() + skunkoon.getHeight() / 2);
  952.                                     bulletNum++;
  953.                                 } else if (bulletNum == 4) {
  954.                                     enemyBullets[i] = new EnemyBullet(skunkoon.getPositionX() + skunkoon.getWidth() / 2,
  955.                                             skunkoon.getPositionY() + skunkoon.getHeight() / 2, bulletSprite,
  956.                                             skunkoon.getPositionX() - 10 + skunkoon.getWidth() / 2,
  957.                                             skunkoon.getPositionY() - 10 + skunkoon.getHeight() / 2);
  958.                                     bulletNum++;
  959.                                 } else if (bulletNum == 5) {
  960.                                     enemyBullets[i] = new EnemyBullet(skunkoon.getPositionX() + skunkoon.getWidth() / 2,
  961.                                             skunkoon.getPositionY() + skunkoon.getHeight() / 2, bulletSprite,
  962.                                             skunkoon.getPositionX() + 10 + skunkoon.getWidth() / 2,
  963.                                             skunkoon.getPositionY() - 10 + skunkoon.getHeight() / 2);
  964.                                     bulletNum++;
  965.                                 } else if (bulletNum == 6) {
  966.                                     enemyBullets[i] = new EnemyBullet(skunkoon.getPositionX() + skunkoon.getWidth() / 2,
  967.                                             skunkoon.getPositionY() + skunkoon.getHeight() / 2, bulletSprite,
  968.                                             skunkoon.getPositionX() + 10 + skunkoon.getWidth() / 2,
  969.                                             skunkoon.getPositionY() + 10 + skunkoon.getHeight() / 2);
  970.                                     bulletNum++;
  971.                                 } else if (bulletNum == 7) {
  972.                                     enemyBullets[i] = new EnemyBullet(skunkoon.getPositionX() + skunkoon.getWidth() / 2,
  973.                                             skunkoon.getPositionY() + skunkoon.getHeight() / 2, bulletSprite,
  974.                                             skunkoon.getPositionX() - 10 + skunkoon.getWidth() / 2,
  975.                                             skunkoon.getPositionY() + 10 + skunkoon.getHeight() / 2);
  976.                                     bulletNum++;
  977.                                 } else {
  978.                                     break;
  979.                                 }
  980.                             }
  981.                         }
  982.                     }
  983.                     for (int i = 0; i < 1000; i++) {
  984.                         if (enemyBullets[i] != null) {
  985.                             enemyBullets[i].setPositionX(
  986.                                     enemyBullets[i].getPositionX() + Math.cos(enemyBullets[i].getAngle()) * 3);
  987.                             enemyBullets[i].setPositionY(
  988.                                     enemyBullets[i].getPositionY() + Math.sin(enemyBullets[i].getAngle()) * 3);
  989.                             enemyBullets[i].update();
  990.                             if((character.getBox().intersects(enemyBullets[i].getBox())) && (character.getElapsedTime() >= 1)) {
  991.                                 character.setHealth(character.getHealth() - skunkoon.getDamage());
  992.                                 character.setElapsedTime(0);
  993.                             }
  994.                             g.drawImage(bananaSprite, (int) enemyBullets[i].getPositionX(),
  995.                                     (int) enemyBullets[i].getPositionY(), enemyBullets[i].getWidth(),
  996.                                     enemyBullets[i].getHeight(), null);
  997.  
  998.                         }
  999.                     }
  1000.                     /*
  1001.                      * for(int i=0; i<1000; i++) { if(enemyBullets[i] != null) {
  1002.                      * if((character.getBox().intersects(enemyBullets[i].getBox())) &&
  1003.                      * (character.getElapsedTime() >= 2)) {
  1004.                      * character.setHealth(character.getHealth() - skunkoon.getDamage());
  1005.                      * character.setElapsedTime(0); } enemyBullets[i].update(); } }
  1006.                      */
  1007.                     skunkoon.setPositionX(skunkoon.getPositionX()
  1008.                             + Math.cos(skunkoon.getAngle(character.getPositionX(), character.getPositionY())) * 0.5);
  1009.                     skunkoon.setPositionY(skunkoon.getPositionY()
  1010.                             + Math.sin(skunkoon.getAngle(character.getPositionX(), character.getPositionY())) * 0.5);
  1011.                     g.drawImage(bananaSprite, (int) skunkoon.getPositionX(), (int) skunkoon.getPositionY(),
  1012.                             skunkoon.getWidth(), skunkoon.getHeight(), null);
  1013.                 }
  1014.                 if (itemUsed) {
  1015.                     if (item instanceof Food) {
  1016.                         character.setHealth(character.getHealth() + ((Food)item).getNutritionValue());
  1017.                         itemUsed = false;
  1018.                     } else {
  1019.                         keyNum = ((Key)item).getKeyNum();
  1020.                     }
  1021.                 }
  1022.  
  1023.                 if (pocketOpen) {
  1024.                     newPocketImage = pocketImage.getScaledInstance(770, 560, Image.SCALE_DEFAULT);
  1025.                     g.drawImage(newPocketImage, 60, 125, this);
  1026.                     g.setColor(Color.WHITE);
  1027.                     for (int i = 0; i < 12; i ++) {
  1028.                         if (pocket.getItem(i) != null) {
  1029.                             if (i == pocketNum) {
  1030.                                 newItem = pocket.getItem(i).getImage().getScaledInstance(150, 150, Image.SCALE_DEFAULT);
  1031.                                 g.drawImage(newItem, 61 + ((i%3)*133), 130 + ((i/3)*133), this);
  1032.                                 newItem = pocket.getItem(i).getImage().getScaledInstance(150, 150, Image.SCALE_DEFAULT);
  1033.                                 g.drawImage(newItem, 679, 157, this);
  1034.                                 g.setFont(new Font("TimesRoman", Font.BOLD, 19));
  1035.                                 g.drawString(pocket.getItem(i).getName(), 550, 235);
  1036.                                 if (pocket.getItem(i) instanceof Food) {
  1037.                                     g.drawString("Type: Food", 550, 340);
  1038.                                     g.drawString(pocket.getItem(i).getDescription(), 550, 380);
  1039.                                 } else {
  1040.                                     g.drawString("Type: Key", 550, 340);
  1041.                                     g.drawString(pocket.getItem(i).getDescription().substring(0, pocket.getItem(i).getDescription().indexOf(".")), 550, 380);
  1042.                                     g.drawString(pocket.getItem(i).getDescription().substring(pocket.getItem(i).getDescription().indexOf(".") + 2), 550, 400);
  1043.                                 }
  1044.                                 g.drawString("Press space to use", 550, 530);
  1045.                             } else {
  1046.                                 newItem = pocket.getItem(i).getImage().getScaledInstance(110, 110, Image.SCALE_DEFAULT);
  1047.                                 g.drawImage(newItem, 81 + ((i%3)*133), 150 + ((i/3)*133), this);
  1048.                             }
  1049.                         }
  1050.                     }
  1051.                     g.drawRect(81 + ((pocketNum%3)*133), 150 + ((pocketNum/3)*133), 110, 110);
  1052.                 }
  1053.             }
  1054.         g.setColor(Color.GRAY);
  1055.         g.fillRect(0, 0, 450, 45);
  1056.         g.setColor(Color.BLACK);
  1057.         g.fillRect(30, 10, 400, 25);
  1058.         g.setFont(new Font("TimesRoman", Font.BOLD, 15));
  1059.         g.drawString("HP", 5, 28);
  1060.         g.setColor(Color.RED);
  1061.         g.fillRect(30, 10, character.getHealth() * 4, 25);
  1062.     }
  1063. }
  1064.  
  1065. // ----------- Inner class for the keyboard listener - this detects key presses
  1066. // and runs the corresponding code
  1067. private class MyKeyListener implements KeyListener {
  1068.     // Box area (all num has to be mutiples of moveSpace)
  1069.  
  1070.     public void keyTyped(KeyEvent e) {
  1071.     }
  1072.  
  1073.     public void keyPressed(KeyEvent e) {
  1074.         if (KeyEvent.getKeyText(e.getKeyCode()).equals("P")) { // If 'D' is pressed
  1075.             if (pocketOpen) {
  1076.                 pocketOpen = false;
  1077.             } else {
  1078.                 pocketOpen = true;
  1079.             }
  1080.         } else if (e.getKeyCode() == KeyEvent.VK_ESCAPE) { // If ESC is pressed
  1081.             System.exit(0);
  1082.         } else if (e.getKeyCode() == KeyEvent.VK_UP) {
  1083.             if (pocketOpen) {
  1084.                 if (pocketNum > 2) {
  1085.                     pocketNum -= 3;
  1086.                 }
  1087.             } else {
  1088.                 direction[0] = true;
  1089.                 lastPressed = 0;
  1090.             }
  1091.         } else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
  1092.             if (pocketOpen) {
  1093.                 if (pocketNum < 9) {
  1094.                     pocketNum += 3;
  1095.                 }
  1096.             } else {
  1097.                 direction[1] = true;
  1098.                 lastPressed = 1;
  1099.             }
  1100.         } else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
  1101.             if (pocketOpen) {
  1102.                 if (pocketNum < 11) {
  1103.                     pocketNum ++;
  1104.                 }
  1105.             } else {
  1106.                 direction[2] = true;
  1107.                 lastPressed = 2;
  1108.             }
  1109.         } else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
  1110.             if (pocketOpen) {
  1111.                 if (pocketNum > 0) {
  1112.                     pocketNum --;
  1113.                 }
  1114.             } else {
  1115.                 direction[3] = true;
  1116.                 lastPressed = 3;
  1117.             }
  1118.         }
  1119.     }
  1120.  
  1121.     public void keyReleased(KeyEvent e) {
  1122.         if (e.getKeyCode() == KeyEvent.VK_UP) {
  1123.             direction[0] = false;
  1124.         } else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
  1125.             direction[1] = false;
  1126.         } else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
  1127.             direction[2] = false;
  1128.         } else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
  1129.             direction[3] = false;
  1130.         } else if (e.getKeyCode() == KeyEvent.VK_SPACE) {
  1131.             if (pocketOpen) {
  1132.                 item = pocket.useItem(pocketNum);
  1133.                 itemUsed = true;
  1134.             } else {
  1135.                 space = true;
  1136.             }
  1137.         }
  1138.     }
  1139. } // end of keyboard listener
  1140.  
  1141. // ----------- Inner class for the keyboard listener - This detects mouse
  1142. // movement & clicks and runs the corresponding methods
  1143. private class MyMouseListener implements MouseListener {
  1144.  
  1145.     public void mouseClicked(MouseEvent e) {
  1146.         System.out.println("Mouse Clicked");
  1147.         System.out.println("X:" + e.getX() + " y:" + e.getY());
  1148.     }
  1149.  
  1150.     public void mousePressed(MouseEvent e) {
  1151.     }
  1152.  
  1153.     public void mouseReleased(MouseEvent e) {
  1154.     }
  1155.  
  1156.     public void mouseEntered(MouseEvent e) {
  1157.     }
  1158.  
  1159.     public void mouseExited(MouseEvent e) {
  1160.     }
  1161. } // end of mouselistener
  1162.  
  1163. }
  1164. //A class to track time
  1165.  
  1166.  
  1167.  
  1168. /*
  1169.  * //A class to represent the object moving around on the screen class MovingBox
  1170.  * { double xPosition, yPosition; double xSpeed; int height, width; Rectangle
  1171.  * boundingBox; // rectangle that is used for collision detection
  1172.  *
  1173.  * public MovingBox(int x, int y, int w, int h) { xPosition = x; yPosition = y;
  1174.  * width = w; height = h; xSpeed = 1; boundingBox = new Rectangle((int)
  1175.  * xPosition, (int) yPosition, width, height); }
  1176.  *
  1177.  * public void update(double elapsedTime) { // update the content if (xPosition
  1178.  * < 0) xSpeed = 1; else if (xPosition > 1000) xSpeed = -1; xPosition =
  1179.  * xPosition + xSpeed * elapsedTime * 100; // d = d0 + vt boundingBox.x = (int)
  1180.  * xPosition; // System.out.println(elapsedTime*10+"\n"); }
  1181.  *
  1182.  * public void draw(Graphics g) { g.setColor(Color.BLUE); // There are many
  1183.  * graphics commands that Java can use g.fillRect((int) xPosition, (int)
  1184.  * yPosition, width, height); // notice the y is a variable that we control from
  1185.  * // our animate method } }
  1186.  *
  1187.  * //Better to abstract the FrameRate stuff class FrameRate {
  1188.  *
  1189.  * String frameRate; // to display the frame rate to the screen long
  1190.  * lastTimeCheck; // store the time of the last time the time was recorded long
  1191.  * deltaTime; // to keep the elapsed time between current time and last time int
  1192.  * frameCount; // used to count how many frame occurred in the elapsed time
  1193.  * (fps)
  1194.  *
  1195.  * public FrameRate() { lastTimeCheck = System.currentTimeMillis(); frameCount =
  1196.  * 0; frameRate = "0 fps"; }
  1197.  *
  1198.  * public void update() { long currentTime = System.currentTimeMillis(); // get
  1199.  * the current time deltaTime += currentTime - lastTimeCheck; // add to the
  1200.  * elapsed time lastTimeCheck = currentTime; // update the last time var
  1201.  * frameCount++; // everytime this method is called it is a new frame if
  1202.  * (deltaTime >= 1000) { // when a second has passed, update the string message
  1203.  * frameRate = frameCount + " fps"; frameCount = 0; // reset the number of
  1204.  * frames since last update deltaTime = 0; // reset the elapsed time } }
  1205.  *
  1206.  * public void draw(Graphics g, int x, int y) { g.drawString(frameRate, x, y);
  1207.  * // display the frameRate }
  1208.  *
  1209.  * }
  1210.  */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement