old-java-games

java games my brother and I developed as kids.
Log | Files | Refs | README

ReaperArea.java (7457B)


      1 import java.awt.Color;
      2 import java.awt.Graphics;
      3 import java.awt.Image;
      4 import java.awt.MediaTracker;
      5 import java.io.File;
      6 import java.io.IOException;
      7 
      8 import javax.imageio.ImageIO;
      9 import javax.swing.JPanel;
     10 
     11 public class ReaperArea extends JPanel {
     12     private static final long serialVersionUID = 8785700671033447779L;
     13     static int FLOORLEVEL = 589;
     14     static final int FLOORWIDTH = 150;
     15     static int FLOORDIFF = 605 - FLOORLEVEL;
     16     Reaper myApplet = null;
     17     Image reaperwarp;
     18     Image reaper1;
     19     Image reaper1left;
     20     Image reaper2;
     21     Image reaper2left;
     22     Image reapercrouch;
     23     Image reapercrouchleft;
     24     Image reaperjump;
     25     Image reaperjumpleft;
     26     Image obstacle;
     27     Image tallobstacle;
     28     Image reaperstand;
     29     Image reaperstandleft;
     30     Image levelcomplete;
     31     Image reaperdead;
     32     Image squishedrunner;
     33     Image runner, runner2, runnerleft, runner2left;
     34     Image title[] = new Image[10];
     35     MediaTracker mt = null;
     36     boolean showingMessage = false;
     37     boolean starting = true;
     38 
     39     public ReaperArea(Reaper parent) {
     40         mt = new MediaTracker(parent);
     41         myApplet = parent;
     42 
     43         runner = load(parent, "run1.gif");
     44         runnerleft = load(parent, "run1left.gif");
     45         runner2 = load(parent, "run2.gif");
     46         runner2left = load(parent, "run2left.gif");
     47 
     48         squishedrunner = load(parent, "run1.gif");
     49 
     50         reaper1 = load(parent, "grimreaper.gif");
     51         reaper1left = load(parent, "grimreaper.gif");
     52         reaper2 = load(parent, "grimreaper.gif");
     53         reaper2left = load(parent, "grimreaper.gif");
     54         reapercrouch = load(parent, "grimreaper.gif");
     55         reapercrouchleft = load(parent, "grimreaper.gif");
     56         reaperjump = load(parent, "grimreaper.gif");
     57         reaperjumpleft = load(parent, "grimreaper.gif");
     58 
     59         obstacle = load(parent, "fire hydrant.gif");
     60         tallobstacle = load(parent, "bus.gif");
     61         reaperstand = load(parent, "grimreaper.gif");
     62         reaperstandleft = load(parent, "grimreaper.gif");
     63 
     64         levelcomplete = load(parent, "missioncomplete.gif");
     65         reaperdead = load(parent, "reaperdead.gif");
     66         reaperwarp = load(parent, "warp.gif");
     67 
     68         title[0] = load(parent, "g.gif");
     69         title[1] = load(parent, "gr.gif");
     70         title[2] = load(parent, "gri.gif");
     71         title[3] = load(parent, "grim.gif");
     72         title[4] = load(parent, "grimr.gif");
     73         title[5] = load(parent, "grimre.gif");
     74         title[6] = load(parent, "grimrea.gif");
     75         title[7] = load(parent, "grimreap.gif");
     76         title[8] = load(parent, "grimreape.gif");
     77         title[9] = load(parent, "grimreaperwriting.gif");
     78 
     79     }
     80 
     81     Image load(Reaper parent, String picture) {
     82         try {
     83             Image im = ImageIO.read(new File("../Assets/" + picture));
     84             checkImage(im, picture);
     85             return (im);
     86         } catch (IOException e) {
     87             // TODO Auto-generated catch block
     88             e.printStackTrace();
     89         }
     90         return null;
     91     }
     92 
     93     void checkImage(Image image, String name) {
     94         if (mt != null) {
     95             mt.addImage(image, 0);
     96             try {
     97                 mt.waitForID(0, 5000);
     98             } catch (InterruptedException ie) {
     99                 // nothing to do
    100             }
    101             if (mt.isErrorID(0))
    102                 System.out.println("Image Not found: " + name.toString());
    103         }
    104     }
    105 
    106     @Override
    107     public void paintComponent(Graphics g) {
    108         super.paintComponent(g);
    109         Image obstacleimage, preyimage;
    110         if (myApplet == null)
    111             return;
    112         final int w = getBounds().width;
    113         g.setColor(Color.white);
    114         g.fillRect(0, 0, w, FLOORLEVEL); // don't white wash the floor!
    115         g.setColor(Color.black);
    116 
    117         // paint the floor
    118         if (Reaper.floors[Reaper.level - 1] != null) {
    119             for (int pos = 0; pos < w; pos += FLOORWIDTH) {
    120                 g.drawImage(Reaper.floors[Reaper.level - 1], pos, FLOORLEVEL, Color.black, null);
    121             }
    122         }
    123         if (!Reaper.juststarted) {
    124             if (Reaper.obstaclePositions != null) {
    125                 myApplet.changePageIfNecessary();
    126                 // show the obstacles from right to left (because obstacles have white space to
    127                 // their left but not their right)
    128                 for (int i = Reaper.obstacleNumber - 1; i >= 0; i--) {
    129                     obstacleimage = myApplet.getObstacleImage(i);
    130                     if (Reaper.isTall[i])
    131                         obstacleimage = tallobstacle; // only one image for this for now
    132                     g.drawImage(obstacleimage,
    133                             Reaper.obstaclePositions[i].x - (Reaper.page * Reaper.PAGEWIDTH),
    134                             Reaper.obstaclePositions[i].y, Color.white, null);
    135                 }
    136             }
    137 
    138             // show the prey
    139             if (Reaper.preyPositions != null) {
    140                 for (int i = 0; i < Reaper.preyNumber; i++) {
    141                     // if (!myApplet.preyDead[i]) {
    142                     preyimage = myApplet.getEnemyImage(i);
    143                     g.drawImage(preyimage, Reaper.preyPositions[i].x - (Reaper.page * Reaper.PAGEWIDTH),
    144                             Reaper.preyPositions[i].y, null);
    145                     // }
    146                 }
    147             }
    148 
    149             // draw Hero (on top of preceding images)
    150             if (Reaper.playerPosition != null) {
    151                 // show the player
    152                 Image reapersimage = myApplet.getHeroImage();
    153                 if (Reaper.reapercrouching) {
    154                     if (Reaper.reaperleft)
    155                         reapersimage = reapercrouchleft;
    156                     else
    157                         reapersimage = reapercrouch;
    158                 }
    159                 if (Reaper.jumping) {
    160                     if (Reaper.reaperleft)
    161                         reapersimage = reaperjumpleft;
    162                     else
    163                         reapersimage = reaperjump;
    164                 }
    165                 g.drawImage(reapersimage, Reaper.playerPosition.x - (Reaper.page * Reaper.PAGEWIDTH),
    166                         Reaper.playerPosition.y, /* Color.white, */ null);
    167             }
    168         }
    169 
    170         // draw warp image (on top of Hero)
    171         if (Reaper.warpzone != null) {
    172             // show the warp zone at the end of the level
    173             g.drawImage(reaperwarp, Reaper.warpzone.x - (Reaper.page * Reaper.PAGEWIDTH),
    174                     Reaper.warpzone.y, Color.white, null);
    175         }
    176 
    177         if (Reaper.ingame == false && !Reaper.juststarted) {
    178             if (Reaper.dead) {
    179                 // Reaper is dead (?!)
    180                 g.drawImage(reaperdead, myApplet.getBounds().width / 2, getBounds().height / 2, Color.white, null);
    181             } else {
    182                 // level complete
    183                 g.drawImage(levelcomplete, myApplet.getBounds().width / 2, getBounds().height / 2, Color.white, null);
    184             }
    185             showingMessage = true;
    186         } else
    187             showingMessage = false;
    188         if (starting) {
    189             showTitle(g);
    190             starting = false;
    191         }
    192 
    193         myApplet.setSomethingChangedSinceRepaint(false);
    194     }
    195 
    196     public void showTitle(Graphics g) {
    197         for (int i = 0; i < 10; i++) {
    198             g.drawImage(title[i], myApplet.getBounds().width / 2, getBounds().height / 2, Color.white, null);
    199             try {
    200                 Thread.sleep(50);
    201             } catch (Exception e) {
    202             }
    203         }
    204     }
    205 }