commit 036f5f7fd7597d076866da9f56d831681addba13
parent e3c43dd0ce7078f8ece7e03d0c9f53408fd35f7b
Author: mpizzzle <michael.770211@gmail.com>
Date: Fri, 1 Mar 2019 21:21:37 +0000
refactored mario game to use swing components
Diffstat:
5 files changed, 1119 insertions(+), 1107 deletions(-)
diff --git a/Mario/build/.gitignore b/Mario/build/.gitignore
@@ -0,0 +1 @@
+/classes/
diff --git a/Mario/src/MarioArea.java b/Mario/src/MarioArea.java
@@ -1,10 +1,20 @@
-import java.awt.*;
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.MediaTracker;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+import java.io.IOException;
-public class MarioArea extends Panel {
-
+import javax.imageio.ImageIO;
+import javax.swing.JPanel;
+
+public class MarioArea extends JPanel implements ActionListener {
+ private static final long serialVersionUID = 5208087574284410378L;
static int FLOORLEVEL = 589;
static final int FLOORWIDTH = 150;
- static int FLOORDIFF = 605-FLOORLEVEL;
+ static int FLOORDIFF = 605 - FLOORLEVEL;
MarioGame myApplet = null;
Image mariotitle;
Image icefloor;
@@ -96,209 +106,225 @@ public class MarioArea extends Panel {
Image Atom1;
Image Atom2;
Image Floor10;
- MediaTracker mt=null;
+ MediaTracker mt = null;
boolean showingMessage = false;
-
+
public MarioArea(MarioGame parent) {
- mt=new MediaTracker(parent);
+ mt = new MediaTracker(parent);
myApplet = parent;
- upmushroom = load(parent, "Assets\\1up!mushroom.gif");
- goomba = load(parent, "Assets\\goomba.gif");
- goombaleft = load(parent, "Assets\\goombaleft.gif");
- goomba2 = load(parent, "Assets\\goomba2.gif");
- goomba2left = load(parent, "Assets\\goombaleft2.gif");
- squishedgoomba = load(parent, "Assets\\goombasquished.gif");
-
- kooparedf = load(parent, "Assets\\koopaparatroopa1.gif");
- koopared = load(parent, "Assets\\koopaparatroopa2.gif");
- redshell = load(parent, "Assets\\koopaparatroopashell.gif");
-
- kooparedfleft = load(parent, "Assets\\koopaparatroopa1left.gif");
- kooparedleft = load(parent, "Assets\\koopaparatroopa2left.gif");
- koopagreenleft = load(parent, "Assets\\koopatroopa.gif");
-
- koopagreen = load(parent, "Assets\\koopatroopaleft.gif");
- greenshell = load(parent, "Assets\\koopatroopashell.gif");
-
- hero1 = load(parent, "Assets\\mario1.gif");
- hero1left = load(parent, "Assets\\mario1left.gif");
- hero2 = load(parent, "Assets\\mario2.gif");
- hero2left = load(parent, "Assets\\mario2left.gif");
- herocrouch = load(parent, "Assets\\mariocrouch.gif");
- herocrouchleft = load(parent, "Assets\\mariocrouchleft.gif");
- herojump = load(parent, "Assets\\mariojump.gif");
- herojumpleft = load(parent, "Assets\\mariojumpleft.gif");
- obstacle = load(parent, "Assets\\mariopipe.gif");
- tallobstacle = load(parent, "Assets\\mariopipe2.gif");
- herostand = load(parent, "Assets\\mariostand.gif");
- herostandleft = load(parent, "Assets\\mariostandleft.gif");
-
- piranhapeep = load(parent, "Assets\\piranhaplanthugepeep.gif");
- piranhapeepo = load(parent, "Assets\\piranhaplanthugepeepo.gif");
- piranhapeepy = load(parent, "Assets\\piranhaplanthugepeepy.gif");
-
- piranha1 = load(parent, "Assets\\piranhaplant1huge.gif");
- piranha2 = load(parent, "Assets\\piranhaplant2huge.gif");
-
- poison = load(parent, "Assets\\poisonmushroom.gif");
- herowarp = load(parent, "Assets\\mariowarp.gif");
- icefloor = load(parent, "Assets\\mariofloor.gif");
- floor2 = load(parent, "Assets\\mariofloor2.gif");
- floor3 = load(parent, "Assets\\mariofloor3.gif");
- floor4 = load(parent, "Assets\\mariofloor4.gif");
- floor5 = load(parent, "Assets\\mariofloor5.gif");
- floor6 = load(parent, "Assets\\mariofloor6.gif");
- floor7 = load(parent, "Assets\\mariofloor7.gif");
- floor8 = load(parent, "Assets\\mariofloor8.gif");
- floor9 = load(parent, "Assets\\mariofloor9.gif");
- mariograss = load(parent, "Assets\\mariograss.gif");
- p1fl = load(parent, "Assets\\piranhaflying1.gif");
- p2fl = load(parent, "Assets\\piranhaflying2.gif");
- p1fr = load(parent, "Assets\\piranharightflying1.gif");
- p2fr = load(parent, "Assets\\piranharightflying2.gif");
-
-
- levelcomplete = load(parent, "Assets\\missioncomplete.gif");
- herodead = load(parent, "Assets\\mariodead.gif");
-
- Banzai = load(parent, "Assets\\Banzai Bill.gif");
- Bullet = load(parent, "Assets\\Bullet Bill.gif");
-
- Wiglerleft = load(parent, "Assets\\Wigler1Left.gif");
- Wiglerright = load(parent, "Assets\\Wigler1Right.gif");
-
- Wiglerleft2 = load(parent, "Assets\\Wigler2Left.gif");
- Wiglerright2 = load(parent, "Assets\\Wigler2Right.gif");
-
- Wiglerleft1 = load(parent, "Assets\\Wigler1.5Left.gif");
- Wiglerright1 = load(parent, "Assets\\Wigler1.5Right.gif");
-
- Boo1 = load(parent, "Assets\\boo1.gif");
- Boo2 = load(parent, "Assets\\boo2.gif");
- Fireboo1 = load(parent, "Assets\\fireboo1.gif");
- Fireboo2 = load(parent, "Assets\\fireboo2.gif");
- Bobomb = load(parent, "Assets\\bobomb.gif");
- Bobomb2 = load(parent, "Assets\\bobomb2.gif");
- Bobombf = load(parent, "Assets\\bobombr.gif");
- Bobombf2 = load(parent, "Assets\\bobombf2.gif");
- Warship1 = load(parent, "Assets\\warship1.gif");
- Warship2 = load(parent, "Assets\\warship2.gif");
-
- Yetil1 = load(parent, "Assets\\yetileft1.gif");
- Yetil2 = load(parent, "Assets\\yetileft2.gif");
- Yetir1 = load(parent, "Assets\\yetiright1.gif");
- Yetir2 = load(parent, "Assets\\yetiright2.gif");
- mariotitle = load(parent, "Assets\\mariotitle.gif");
- cube = load(parent, "Assets\\cube.gif");
- chainchomp1 = load(parent, "Assets\\Chain Chomp!!!.gif");
- chainchomp2 = load(parent, "Assets\\Chain Chomp2!!!.gif");
- robot = load(parent, "Assets\\Robot.gif");
- chainchompdead = load(parent, "Assets\\Chain Chomp Dead!!!.gif");
-
- Atom1 = load(parent, "Assets\\Atomic Atom1.gif");
- Atom2 = load(parent, "Assets\\Atomic Atom2.gif");
-
- Floor10 = load(parent, "Assets\\mariofloor10.gif");
+ upmushroom = load(parent, "1up!mushroom.gif");
+ goomba = load(parent, "goomba.gif");
+ goombaleft = load(parent, "goombaleft.gif");
+ goomba2 = load(parent, "goomba2.gif");
+ goomba2left = load(parent, "goombaleft2.gif");
+ squishedgoomba = load(parent, "goombasquished.gif");
+
+ kooparedf = load(parent, "koopaparatroopa1.gif");
+ koopared = load(parent, "koopaparatroopa2.gif");
+ redshell = load(parent, "koopaparatroopashell.gif");
+
+ kooparedfleft = load(parent, "koopaparatroopa1left.gif");
+ kooparedleft = load(parent, "koopaparatroopa2left.gif");
+ koopagreenleft = load(parent, "koopatroopa.gif");
+
+ koopagreen = load(parent, "koopatroopaleft.gif");
+ greenshell = load(parent, "koopatroopashell.gif");
+
+ hero1 = load(parent, "mario1.gif");
+ hero1left = load(parent, "mario1left.gif");
+ hero2 = load(parent, "mario2.gif");
+ hero2left = load(parent, "mario2left.gif");
+ herocrouch = load(parent, "mariocrouch.gif");
+ herocrouchleft = load(parent, "mariocrouchleft.gif");
+ herojump = load(parent, "mariojump.gif");
+ herojumpleft = load(parent, "mariojumpleft.gif");
+ obstacle = load(parent, "mariopipe.gif");
+ tallobstacle = load(parent, "mariopipe2.gif");
+ herostand = load(parent, "mariostand.gif");
+ herostandleft = load(parent, "mariostandleft.gif");
+
+ piranhapeep = load(parent, "piranhaplanthugepeep.gif");
+ piranhapeepo = load(parent, "piranhaplanthugepeepo.gif");
+ piranhapeepy = load(parent, "piranhaplanthugepeepy.gif");
+
+ piranha1 = load(parent, "piranhaplant1huge.gif");
+ piranha2 = load(parent, "piranhaplant2huge.gif");
+
+ poison = load(parent, "poisonmushroom.gif");
+ herowarp = load(parent, "mariowarp.gif");
+ icefloor = load(parent, "mariofloor.gif");
+ floor2 = load(parent, "mariofloor2.gif");
+ floor3 = load(parent, "mariofloor3.gif");
+ floor4 = load(parent, "mariofloor4.gif");
+ floor5 = load(parent, "mariofloor5.gif");
+ floor6 = load(parent, "mariofloor6.gif");
+ floor7 = load(parent, "mariofloor7.gif");
+ floor8 = load(parent, "mariofloor8.gif");
+ floor9 = load(parent, "mariofloor9.gif");
+ mariograss = load(parent, "mariograss.gif");
+ p1fl = load(parent, "piranhaflying1.gif");
+ p2fl = load(parent, "piranhaflying2.gif");
+ p1fr = load(parent, "piranharightflying1.gif");
+ p2fr = load(parent, "piranharightflying2.gif");
+
+ levelcomplete = load(parent, "missioncomplete.gif");
+ herodead = load(parent, "mariodead.gif");
+
+ Banzai = load(parent, "Banzai Bill.gif");
+ Bullet = load(parent, "Bullet Bill.gif");
+
+ Wiglerleft = load(parent, "Wigler1Left.gif");
+ Wiglerright = load(parent, "Wigler1Right.gif");
+
+ Wiglerleft2 = load(parent, "Wigler2Left.gif");
+ Wiglerright2 = load(parent, "Wigler2Right.gif");
+
+ Wiglerleft1 = load(parent, "Wigler1.5Left.gif");
+ Wiglerright1 = load(parent, "Wigler1.5Right.gif");
+
+ Boo1 = load(parent, "boo1.gif");
+ Boo2 = load(parent, "boo2.gif");
+ Fireboo1 = load(parent, "fireboo1.gif");
+ Fireboo2 = load(parent, "fireboo2.gif");
+ Bobomb = load(parent, "bobomb.gif");
+ Bobomb2 = load(parent, "bobomb2.gif");
+ Bobombf = load(parent, "bobombr.gif");
+ Bobombf2 = load(parent, "bobombf2.gif");
+ Warship1 = load(parent, "warship1.gif");
+ Warship2 = load(parent, "warship2.gif");
+
+ Yetil1 = load(parent, "yetileft1.gif");
+ Yetil2 = load(parent, "yetileft2.gif");
+ Yetir1 = load(parent, "yetiright1.gif");
+ Yetir2 = load(parent, "yetiright2.gif");
+ mariotitle = load(parent, "mariotitle.gif");
+ cube = load(parent, "cube.gif");
+ chainchomp1 = load(parent, "Chain Chomp!!!.gif");
+ chainchomp2 = load(parent, "Chain Chomp2!!!.gif");
+ robot = load(parent, "Robot.gif");
+ chainchompdead = load(parent, "Chain Chomp Dead!!!.gif");
+
+ Atom1 = load(parent, "Atomic Atom1.gif");
+ Atom2 = load(parent, "Atomic Atom2.gif");
+
+ Floor10 = load(parent, "mariofloor10.gif");
}
Image load(MarioGame parent, String picture) {
- Image im = parent.getImage(myApplet.getCodeBase(), "Mario\\" + picture);
- checkImage(im, picture);
- return(im);
+ try {
+ Image im = ImageIO.read(new File("../Assets/" + picture));
+ checkImage(im, picture);
+ return (im);
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return null;
}
-
+
void checkImage(Image image, String name) {
if (mt != null) {
- mt.addImage(image,0);
+ mt.addImage(image, 0);
try {
- mt.waitForID(0,5000);
- }
- catch (InterruptedException ie) {
+ mt.waitForID(0, 5000);
+ } catch (InterruptedException ie) {
// nothing to do
}
- if (mt.isErrorID(0)) System.out.println("Image Not found: "+name.toString());
+ if (mt.isErrorID(0))
+ System.out.println("Image Not found: " + name.toString());
}
}
-
- public synchronized void paint (Graphics g) {
+
+ @Override
+ public void paintComponent(Graphics g) {
+ super.paintComponent(g);
Image obstacleimage, enemyimage;
- if (myApplet == null || Fireboo2 == null) return;
+ if (myApplet == null || Fireboo2 == null)
+ return;
final int w = getBounds().width;
- final int h = getBounds().height;
+ //final int h = getBounds().height;
g.setColor(Color.white);
g.fillRect(0, 0, w, FLOORLEVEL); // don't white wash the floor!
- FontMetrics fm = getFontMetrics(getFont());
-
+
g.setColor(Color.black);
- int asc = fm.getAscent() + 4;
// paint the floor
- if (myApplet.floors[myApplet.level-1] != null) {
- for (int pos=0; pos < w; pos+=FLOORWIDTH) {
- g.drawImage(myApplet.floors[myApplet.level-1],pos, FLOORLEVEL,Color.black, null);
+ if (MarioGame.floors[MarioGame.level - 1] != null) {
+ for (int pos = 0; pos < w; pos += FLOORWIDTH) {
+ g.drawImage(MarioGame.floors[MarioGame.level - 1], pos, FLOORLEVEL, Color.black, null);
}
}
- if (!myApplet.juststarted) {
- if (myApplet.obstaclePositions != null) {
+ if (!MarioGame.juststarted) {
+ if (MarioGame.obstaclePositions != null) {
myApplet.changePageIfNecessary();
- // show the obstacles from right to left (because pipes have white space to their left but not their right)
- for (int i=myApplet.obstacleNumber-1; i >= 0; i--) {
+ // show the obstacles from right to left (because pipes have white space to
+ // their left but not their right)
+ for (int i = MarioGame.obstacleNumber - 1; i >= 0; i--) {
obstacleimage = myApplet.getObstacleImage(i);
- if (myApplet.isTall[i]) obstacleimage = tallobstacle; // only one image for this for now
- g.drawImage(obstacleimage, myApplet.obstaclePositions[i].x-(myApplet.page*myApplet.PAGEWIDTH), myApplet.obstaclePositions[i].y,Color.white, null);
+ if (MarioGame.isTall[i])
+ obstacleimage = tallobstacle; // only one image for this for now
+ g.drawImage(obstacleimage,
+ MarioGame.obstaclePositions[i].x - (MarioGame.page * MarioGame.PAGEWIDTH),
+ MarioGame.obstaclePositions[i].y, Color.white, null);
}
}
// show the enemies
- if (myApplet.enemyPositions != null) {
- for (int i=0; i < myApplet.enemyNumber; i++) {
- //if (!myApplet.enemyDead[i]) {
- enemyimage = myApplet.getEnemyImage(i);
- g.drawImage(enemyimage, myApplet.enemyPositions[i].x-(myApplet.page*myApplet.PAGEWIDTH), myApplet.enemyPositions[i].y,null);
- //}
+ if (MarioGame.enemyPositions != null) {
+ for (int i = 0; i < MarioGame.enemyNumber; i++) {
+ // if (!myApplet.enemyDead[i]) {
+ enemyimage = myApplet.getEnemyImage(i);
+ g.drawImage(enemyimage, MarioGame.enemyPositions[i].x - (MarioGame.page * MarioGame.PAGEWIDTH),
+ MarioGame.enemyPositions[i].y, null);
+ // }
}
}
- // draw Hero (on top of preceding images)
- if (myApplet.playerPosition != null) {
+ // draw Hero (on top of preceding images)
+ if (MarioGame.playerPosition != null) {
// show the player
Image herosimage = myApplet.getHeroImage();
- if (myApplet.herocrouching) {
- if (myApplet.heroleft)
+ if (MarioGame.herocrouching) {
+ if (MarioGame.heroleft)
herosimage = herocrouchleft;
- else
+ else
herosimage = herocrouch;
}
- if (myApplet.jumping) {
- if (myApplet.heroleft)
+ if (MarioGame.jumping) {
+ if (MarioGame.heroleft)
herosimage = herojumpleft;
- else
+ else
herosimage = herojump;
}
- g.drawImage(herosimage, myApplet.playerPosition.x-(myApplet.page*myApplet.PAGEWIDTH), myApplet.playerPosition.y,/*Color.white,*/ null);
+ g.drawImage(herosimage, MarioGame.playerPosition.x - (MarioGame.page * MarioGame.PAGEWIDTH),
+ MarioGame.playerPosition.y, /* Color.white, */ null);
}
}
-
+
// draw warp image (on top of Hero)
- if (myApplet.warpzone != null) {
+ if (MarioGame.warpzone != null) {
// show the warp zone at the end of the level
- g.drawImage(herowarp, myApplet.warpzone.x-(myApplet.page*myApplet.PAGEWIDTH), myApplet.warpzone.y,Color.white, null);
+ g.drawImage(herowarp, MarioGame.warpzone.x - (MarioGame.page * MarioGame.PAGEWIDTH), MarioGame.warpzone.y,
+ Color.white, null);
}
-
- if (myApplet.ingame == false && !myApplet.juststarted) {
- if (myApplet.dead) {
+
+ if (MarioGame.ingame == false && !MarioGame.juststarted) {
+ if (MarioGame.dead) {
// Hero is dead
- g.drawImage(herodead, myApplet.getBounds().width/2, getBounds().height/2,Color.white, null);
- }
- else {
+ g.drawImage(herodead, myApplet.getBounds().width / 2, getBounds().height / 2, Color.white, null);
+ } else {
// level complete
- g.drawImage(levelcomplete, myApplet.getBounds().width/2, getBounds().height/2,Color.white, null);
+ g.drawImage(levelcomplete, myApplet.getBounds().width / 2, getBounds().height / 2, Color.white, null);
}
- showingMessage=true;
- }
- else
+ showingMessage = true;
+ } else
showingMessage = false;
-
- myApplet.setSomethingChangedSinceRepaint(false);
+
+ myApplet.setSomethingChangedSinceRepaint(false);
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent arg0) {
+ repaint();
}
}
diff --git a/Mario/src/MarioFrame.java b/Mario/src/MarioFrame.java
@@ -1,8 +0,0 @@
-import java.awt.Frame;
-
-public class MarioFrame extends Frame {
-
- public MarioFrame() {
- setBounds(200, 200, 200, 150);
- }
-}-
\ No newline at end of file
diff --git a/Mario/src/MarioGame.java b/Mario/src/MarioGame.java
@@ -1,126 +1,130 @@
+
/* Copyright (c) Mary Percival 2003 */
/* Mario game Created May 2003 */
-import java.awt.*;
-import java.awt.event.*;
-import java.applet.*;
+import java.awt.Color;
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+
+import javax.swing.JFrame;
-public class MarioGame extends Applet implements KeyListener, Runnable {
-
+public class MarioGame extends JFrame implements KeyListener, Runnable {
+ private static final long serialVersionUID = 7030451342808203557L;
boolean easymode = true;
static int MAXLEVEL = 9;
- static int level = 1;
-
+ static int level = 0;
+
// the levels so far are:
- // 1 beginner level: 1 piranha & 1 goomba
- // 2 introducing green koopa
- // 3 more of the same
- // 4 introducing red koopa (flying)
- // 5 more and harder
- // 6 ?
- // 7 ?
- // 8 ?
- // 9 ?
-
- static int LEFT=1;
- static int RIGHT=0;
+ // 1 beginner level: 1 piranha & 1 goomba
+ // 2 introducing green koopa
+ // 3 more of the same
+ // 4 introducing red koopa (flying)
+ // 5 more and harder
+ // 6 ?
+ // 7 ?
+ // 8 ?
+ // 9 ?
+
+ static int LEFT = 1;
+ static int RIGHT = 0;
// the next 2 constants are overridden in init once we know the screen size
static int RIGHTEDGE = 789;
- static int BOTTOMEDGE = 900;
- static int PAGEWIDTH=741;
-
- static Point IMAGESIZE=new Point(152,107);
+ static int BOTTOMEDGE = 900;
+ static int PAGEWIDTH = 741;
+
+ static Point IMAGESIZE = new Point(152, 107);
static final int LEFTEDGE = -45;
static final int TOPEDGE = -10;
static int GROUNDLEVEL = 503;
static int startPosY;
- static int JUMPAMOUNT=90;
- static int BOUNCEAMOUNT=90;
- static final int FALLAMOUNT=16; // amount he falls each time interval
- static final int RISEAMOUNT=16; // amount he rises each time interval
- static final int XAMOUNT=12;
-
+ static int JUMPAMOUNT = 90;
+ static int BOUNCEAMOUNT = 90;
+ static final int FALLAMOUNT = 16; // amount he falls each time interval
+ static final int RISEAMOUNT = 16; // amount he rises each time interval
+ static final int XAMOUNT = 12;
+
static final int X = 1;
static final int Y = 2;
- static final int NOT=3;
+ static final int NOT = 3;
static final int DELAY = 50;
-
+
static final int OBSTACLEIMAGES = 19;
static final int HEROIMAGES = 4;
- static final int ENEMYIMAGES=3;
-
+ static final int ENEMYIMAGES = 3;
+
// ----------------------------------------------------------------------------------------------
// ENEMY TYPES
// ----------------------------------------------------------------------------------------------
- static final int ENEMYTYPES=15; // goomba, koopa red, koopa green, koopa red flying, banzai, wiggler, boo, fireboo,bobomb,warship,yeti,chainchomp,atom
- static final int GOOMBA=0;
- static final int KOOPARED =1;
- static final int KOOPAGREEN=2;
- static final int KOOPAREDFLYING=3;
- static final int BANZAI=4;
- static final int WIGGLER=5;
- static final int BOO=6;
- static final int FIREBOO=7;
- static final int BOBOMB=8;
- static final int BULLET=9;
- static final int WARSHIP=10;
- static final int YETI=11;
- static final int FLYER=12;
- static final int CHOMP=13;
- static final int ATOM=14;
-
-
-
+ static final int ENEMYTYPES = 15; // goomba, koopa red, koopa green, koopa red flying, banzai, wiggler, boo,
+ // fireboo,bobomb,warship,yeti,chainchomp,atom
+ static final int GOOMBA = 0;
+ static final int KOOPARED = 1;
+ static final int KOOPAGREEN = 2;
+ static final int KOOPAREDFLYING = 3;
+ static final int BANZAI = 4;
+ static final int WIGGLER = 5;
+ static final int BOO = 6;
+ static final int FIREBOO = 7;
+ static final int BOBOMB = 8;
+ static final int BULLET = 9;
+ static final int WARSHIP = 10;
+ static final int YETI = 11;
+ static final int FLYER = 12;
+ static final int CHOMP = 13;
+ static final int ATOM = 14;
+
// enemy positions (height)
- static final int GOOMBAHEIGHT =GROUNDLEVEL+55;
- static final int KOOPAREDHEIGHT =GROUNDLEVEL+39;
- static final int KOOPAGREENHEIGHT =GROUNDLEVEL+39;
- static final int KOOPAREDFLYINGHEIGHT=GROUNDLEVEL-16;
- static final int BANZAIHEIGHT =GROUNDLEVEL-90;
- static final int WIGGLERHEIGHT =GROUNDLEVEL+16;
- static final int BOOHEIGHT =GROUNDLEVEL-7;
- static final int FIREBOOHEIGHT =GROUNDLEVEL-7;
- static final int BOBOMBHEIGHT =GROUNDLEVEL+5;
- static final int BULLETHEIGHT =GROUNDLEVEL+55;
- static final int WARSHIPHEIGHT =GROUNDLEVEL+100;
- static final int YETIHEIGHT =GROUNDLEVEL;
- static final int FLYERHEIGHT =GROUNDLEVEL-20;
- static final int CHOMPHEIGHT =GROUNDLEVEL-55;
- static final int ATOMHEIGHT =GROUNDLEVEL+40;
- static int enemyHeight[] = new int[ENEMYTYPES];
-
- static final int enemySize[] = {27, 42, 42, 42, 172, 75, 37, 37, 74, 8, 152, 86, 86, 75, 25};
- static final int enemyTopSpace[] = { 4, 13, 13, 0, 0, 10, 6, 6, 7, 0, 20, 8, 17, 10, 0};
-
- static final int SPACE_FROM_X_TO_MARIO=55;
- static final int MARIOHEIGHT=86;
- static final int MARIOOFFSET=21;
- static final int MARIOCROUCHOFFSET=39;
+ static final int GOOMBAHEIGHT = GROUNDLEVEL + 55;
+ static final int KOOPAREDHEIGHT = GROUNDLEVEL + 39;
+ static final int KOOPAGREENHEIGHT = GROUNDLEVEL + 39;
+ static final int KOOPAREDFLYINGHEIGHT = GROUNDLEVEL - 16;
+ static final int BANZAIHEIGHT = GROUNDLEVEL - 90;
+ static final int WIGGLERHEIGHT = GROUNDLEVEL + 16;
+ static final int BOOHEIGHT = GROUNDLEVEL - 7;
+ static final int FIREBOOHEIGHT = GROUNDLEVEL - 7;
+ static final int BOBOMBHEIGHT = GROUNDLEVEL + 5;
+ static final int BULLETHEIGHT = GROUNDLEVEL + 55;
+ static final int WARSHIPHEIGHT = GROUNDLEVEL + 100;
+ static final int YETIHEIGHT = GROUNDLEVEL;
+ static final int FLYERHEIGHT = GROUNDLEVEL - 20;
+ static final int CHOMPHEIGHT = GROUNDLEVEL - 55;
+ static final int ATOMHEIGHT = GROUNDLEVEL + 40;
+ static int enemyHeight[] = new int[ENEMYTYPES];
+
+ static final int enemySize[] = { 27, 42, 42, 42, 172, 75, 37, 37, 74, 8, 152, 86, 86, 75, 25 };
+ static final int enemyTopSpace[] = { 4, 13, 13, 0, 0, 10, 6, 6, 7, 0, 20, 8, 17, 10, 0 };
+
+ static final int SPACE_FROM_X_TO_MARIO = 55;
+ static final int MARIOHEIGHT = 86;
+ static final int MARIOOFFSET = 21;
+ static final int MARIOCROUCHOFFSET = 39;
static final int MARIOSTANDINGSIZE = 65;
static final int MARIOCROUCHINGSIZE = 45;
-
- static final int JUMPDURATION=5;
- static final int SUPERJUMPDURATION=8;
- static final int MARIOLEFTOFOBSTACLE = 45; // fudge factor because Mario image is diff size to obstacle image
- static final int MARIORIGHTOFOBSTACLE = 10; // fudge factor because Mario image is diff size to obstacle image
- static final int ENEMYLEFTOFOBSTACLE = 16; // fudge factor for enemy images
- static final int ENEMYRIGHTOFOBSTACLE = 49; // >49 causes panic!
- static final int MARIOLEFTOFENEMY=73;
- static final int MARIORIGHTOFENEMY=-23;
-
- static final int LEFTDOWN=0;
- static final int RIGHTDOWN=1;
- static final int DOWNDOWN=2;
- static final int SPACEDOWN=3;
-
- static final int OBSTACLEHEIGHT=42;
- static final int TALLOBSTACLEDIFF=28;
- static final int OBSTACLEWIDTH=86;
- int GROUNDDIFF=605-GROUNDLEVEL;
+
+ static final int JUMPDURATION = 5;
+ static final int SUPERJUMPDURATION = 8;
+ static final int MARIOLEFTOFOBSTACLE = 45; // fudge factor because Mario image is diff size to obstacle image
+ static final int MARIORIGHTOFOBSTACLE = 10; // fudge factor because Mario image is diff size to obstacle image
+ static final int ENEMYLEFTOFOBSTACLE = 16; // fudge factor for enemy images
+ static final int ENEMYRIGHTOFOBSTACLE = 49; // >49 causes panic!
+ static final int MARIOLEFTOFENEMY = 73;
+ static final int MARIORIGHTOFENEMY = -23;
+
+ static final int LEFTDOWN = 0;
+ static final int RIGHTDOWN = 1;
+ static final int DOWNDOWN = 2;
+ static final int SPACEDOWN = 3;
+
+ static final int OBSTACLEHEIGHT = 42;
+ static final int TALLOBSTACLEDIFF = 28;
+ static final int OBSTACLEWIDTH = 86;
+ static int GROUNDDIFF = 605 - GROUNDLEVEL;
// all member variables 'static' because shared with the enemy action thread
static MarioArea area;
- Thread timer;
+ static Thread timer;
static boolean finished = false;
static boolean ingame = false;
static boolean juststarted = true;
@@ -133,20 +137,20 @@ public class MarioGame extends Applet implements KeyListener, Runnable {
static boolean[] hasPiranha; // one for each obstacle
static boolean[] isTall; // one for each obstacle
static int enemyDirection[];
- static int enemyNumber=1, enemiesRemaining=1, obstacleNumber=1;
+ static int enemyNumber = 1, enemiesRemaining = 1, obstacleNumber = 1;
static boolean herocrouching = false;
- static boolean onTheWayUp=false;
- static boolean bouncing=false;
+ static boolean onTheWayUp = false;
+ static boolean bouncing = false;
static boolean wasbouncing = false;
static boolean dead = false;
static int page = 0;
static int heroImageNo = 0;
static int enemyImageNo[];
- static int levellength=1482;
+ static int levellength = 1482;
static Image[] heroImages = new Image[HEROIMAGES];
- static Image[] obstacleImages = new Image[OBSTACLEIMAGES]; // pipe, piranhapeep, piranha peepy etc
- static Image[] squished = new Image[ENEMYTYPES]; // squished images for each enemy type
- static Image[][][] enemyImages = new Image[ENEMYTYPES][2][ENEMYIMAGES]; // left right left right or whatever
+ static Image[] obstacleImages = new Image[OBSTACLEIMAGES]; // pipe, piranhapeep, piranha peepy etc
+ static Image[] squished = new Image[ENEMYTYPES]; // squished images for each enemy type
+ static Image[][][] enemyImages = new Image[ENEMYTYPES][2][ENEMYIMAGES]; // left right left right or whatever
static int obstacleImageNo[]; // what is the current image for obstacle n
static Image[][] enemyImage = new Image[ENEMYTYPES][ENEMYIMAGES];// what is the current image for enemy n?
static Image floors[] = new Image[MAXLEVEL];
@@ -155,30 +159,30 @@ public class MarioGame extends Applet implements KeyListener, Runnable {
static boolean heroleft = false;
static boolean jumping = false;
static int enemyMove[] = new int[ENEMYTYPES];
- boolean somethingChangedSinceRepaint=false;
-
+ boolean somethingChangedSinceRepaint = false;
+
// *************************************************************
- public void init() {
-
- setLayout(null);
- setBackground(Color.white);
-
- area = new MarioArea(this);
- add(area);
- FontMetrics fm = getFontMetrics(getFont());
- RIGHTEDGE = (getBounds().width/XAMOUNT)*XAMOUNT +LEFTEDGE;
- BOTTOMEDGE = getBounds().height - 1;
- setVisible(true);
- area.setBounds(0,0,getBounds().width,BOTTOMEDGE);
- GROUNDLEVEL = getBounds().height-GROUNDDIFF;
+ public static void main(String[] args) {
+ MarioGame marioGame = new MarioGame();
+ marioGame.setLayout(null);
+ marioGame.setBackground(Color.white);
+
+ area = new MarioArea(marioGame);
+ marioGame.add(area);
+ //RIGHTEDGE = (marioGame.getBounds().width / XAMOUNT) * XAMOUNT + LEFTEDGE;
+ //BOTTOMEDGE = marioGame.getBounds().height - 1;
+ marioGame.setVisible(true);
+ area.setBounds(0, 0, RIGHTEDGE, BOTTOMEDGE);
+ //GROUNDLEVEL = marioGame.getBounds().height - GROUNDDIFF;
+ //GROUNDLEVEL = BOTTOMEDGE;// - GROUNDDIFF;
startPosY = GROUNDLEVEL;
- area.FLOORLEVEL = getBounds().height-area.FLOORDIFF;
+ //MarioArea.FLOORLEVEL = marioGame.getBounds().height - MarioArea.FLOORDIFF;
area.setVisible(true);
- addKeyListener(this);
- area.addKeyListener(this);
+ marioGame.addKeyListener(marioGame);
+ area.addKeyListener(marioGame);
area.requestFocus();
-
+
obstacleImages[0] = area.obstacle;
obstacleImages[1] = area.obstacle;
obstacleImages[2] = area.obstacle;
@@ -189,95 +193,95 @@ public class MarioGame extends Applet implements KeyListener, Runnable {
obstacleImages[7] = area.piranha1;
obstacleImages[8] = area.piranha1;
obstacleImages[9] = area.piranha1;
- obstacleImages[10] = area.piranha2; //
- obstacleImages[11] = area.piranha2; //
- obstacleImages[12] = area.piranha2; //
- obstacleImages[13] = area.piranhapeepy; //
- obstacleImages[14] = area.piranhapeep; //
+ obstacleImages[10] = area.piranha2; //
+ obstacleImages[11] = area.piranha2; //
+ obstacleImages[12] = area.piranha2; //
+ obstacleImages[13] = area.piranhapeepy; //
+ obstacleImages[14] = area.piranhapeep; //
obstacleImages[15] = area.piranhapeepo;
- obstacleImages[16] = area.obstacle; //
- obstacleImages[17] = area.obstacle; //
- obstacleImages[18] = area.obstacle; //
-
+ obstacleImages[16] = area.obstacle; //
+ obstacleImages[17] = area.obstacle; //
+ obstacleImages[18] = area.obstacle; //
+
enemyImages[GOOMBA][RIGHT][0] = area.goomba;
enemyImages[GOOMBA][RIGHT][1] = area.goomba2;
enemyImages[GOOMBA][LEFT][0] = area.goombaleft;
enemyImages[GOOMBA][LEFT][1] = area.goomba2left;
-
+
enemyImages[KOOPARED][RIGHT][0] = area.kooparedleft;
enemyImages[KOOPARED][RIGHT][1] = area.kooparedleft;
enemyImages[KOOPARED][LEFT][0] = area.koopared;
enemyImages[KOOPARED][LEFT][1] = area.koopared;
-
+
enemyImages[KOOPAGREEN][RIGHT][0] = area.koopagreen;
enemyImages[KOOPAGREEN][RIGHT][1] = area.koopagreen;
enemyImages[KOOPAGREEN][LEFT][0] = area.koopagreenleft;
enemyImages[KOOPAGREEN][LEFT][1] = area.koopagreenleft;
-
+
enemyImages[KOOPAREDFLYING][RIGHT][0] = area.kooparedfleft;
enemyImages[KOOPAREDFLYING][RIGHT][1] = area.kooparedfleft;
enemyImages[KOOPAREDFLYING][LEFT][0] = area.kooparedf;
enemyImages[KOOPAREDFLYING][LEFT][1] = area.kooparedf;
-
+
enemyImages[BANZAI][RIGHT][0] = area.Banzai;
enemyImages[BANZAI][RIGHT][1] = area.Banzai;
enemyImages[BANZAI][LEFT][0] = area.Banzai;
enemyImages[BANZAI][LEFT][1] = area.Banzai;
-
+
enemyImages[WIGGLER][RIGHT][0] = area.Wiglerright;
enemyImages[WIGGLER][RIGHT][1] = area.Wiglerright1;
enemyImages[WIGGLER][RIGHT][2] = area.Wiglerright2;
enemyImages[WIGGLER][LEFT][0] = area.Wiglerleft;
enemyImages[WIGGLER][LEFT][1] = area.Wiglerleft1;
enemyImages[WIGGLER][LEFT][2] = area.Wiglerleft2;
-
- enemyImages[BOO][RIGHT][0] =area.Boo2;
- enemyImages[BOO][RIGHT][1] =area.Boo2;
- enemyImages[BOO][LEFT][0] =area.Boo1;
- enemyImages[BOO][LEFT][1] =area.Boo1;
-
- enemyImages[FIREBOO][RIGHT][0] =area.Fireboo2;
- enemyImages[FIREBOO][RIGHT][1] =area.Fireboo2;
- enemyImages[FIREBOO][LEFT][0] =area.Fireboo1;
- enemyImages[FIREBOO][LEFT][1] =area.Fireboo1;
-
- enemyImages[BOBOMB][LEFT][0] =area.Bobomb;
- enemyImages[BOBOMB][LEFT][1] =area.Bobomb2;
- enemyImages[BOBOMB][RIGHT][0] =area.Bobombf;
- enemyImages[BOBOMB][RIGHT][1] =area.Bobombf2;
-
- enemyImages[BULLET][LEFT][0] =area.Bullet;
- enemyImages[BULLET][LEFT][1] =area.Bullet;
- enemyImages[BULLET][RIGHT][0] =area.Bullet;
- enemyImages[BULLET][RIGHT][1] =area.Bullet;
-
- enemyImages[WARSHIP][LEFT][0] =area.Warship1;
- enemyImages[WARSHIP][LEFT][1] =area.Warship2;
- enemyImages[WARSHIP][RIGHT][0] =area.Warship1;
- enemyImages[WARSHIP][RIGHT][1] =area.Warship2;
-
- enemyImages[YETI][LEFT][0] =area.Yetil1;
- enemyImages[YETI][LEFT][1] =area.Yetil2;
- enemyImages[YETI][RIGHT][0] =area.Yetir1;
- enemyImages[YETI][RIGHT][1] =area.Yetir2;
-
- enemyImages[FLYER][LEFT][0] =area.p1fl;
- enemyImages[FLYER][LEFT][1] =area.p2fl;
- enemyImages[FLYER][RIGHT][0] =area.p1fr;
- enemyImages[FLYER][RIGHT][1] =area.p2fr;
-
- enemyImages[CHOMP][LEFT][0] =area.chainchomp1;
- enemyImages[CHOMP][LEFT][1] =area.chainchomp2;
- enemyImages[CHOMP][RIGHT][0] =area.chainchomp1;
- enemyImages[CHOMP][RIGHT][1] =area.chainchomp2;
-
- enemyImages[ATOM][LEFT][0] =area.Atom1;
- enemyImages[ATOM][LEFT][1] =area.Atom2;
- enemyImages[ATOM][RIGHT][0] =area.Atom1;
- enemyImages[ATOM][RIGHT][1] =area.Atom2;
-
- enemyMove[GOOMBA] = 5;
- enemyMove[KOOPARED] = 5;
+
+ enemyImages[BOO][RIGHT][0] = area.Boo2;
+ enemyImages[BOO][RIGHT][1] = area.Boo2;
+ enemyImages[BOO][LEFT][0] = area.Boo1;
+ enemyImages[BOO][LEFT][1] = area.Boo1;
+
+ enemyImages[FIREBOO][RIGHT][0] = area.Fireboo2;
+ enemyImages[FIREBOO][RIGHT][1] = area.Fireboo2;
+ enemyImages[FIREBOO][LEFT][0] = area.Fireboo1;
+ enemyImages[FIREBOO][LEFT][1] = area.Fireboo1;
+
+ enemyImages[BOBOMB][LEFT][0] = area.Bobomb;
+ enemyImages[BOBOMB][LEFT][1] = area.Bobomb2;
+ enemyImages[BOBOMB][RIGHT][0] = area.Bobombf;
+ enemyImages[BOBOMB][RIGHT][1] = area.Bobombf2;
+
+ enemyImages[BULLET][LEFT][0] = area.Bullet;
+ enemyImages[BULLET][LEFT][1] = area.Bullet;
+ enemyImages[BULLET][RIGHT][0] = area.Bullet;
+ enemyImages[BULLET][RIGHT][1] = area.Bullet;
+
+ enemyImages[WARSHIP][LEFT][0] = area.Warship1;
+ enemyImages[WARSHIP][LEFT][1] = area.Warship2;
+ enemyImages[WARSHIP][RIGHT][0] = area.Warship1;
+ enemyImages[WARSHIP][RIGHT][1] = area.Warship2;
+
+ enemyImages[YETI][LEFT][0] = area.Yetil1;
+ enemyImages[YETI][LEFT][1] = area.Yetil2;
+ enemyImages[YETI][RIGHT][0] = area.Yetir1;
+ enemyImages[YETI][RIGHT][1] = area.Yetir2;
+
+ enemyImages[FLYER][LEFT][0] = area.p1fl;
+ enemyImages[FLYER][LEFT][1] = area.p2fl;
+ enemyImages[FLYER][RIGHT][0] = area.p1fr;
+ enemyImages[FLYER][RIGHT][1] = area.p2fr;
+
+ enemyImages[CHOMP][LEFT][0] = area.chainchomp1;
+ enemyImages[CHOMP][LEFT][1] = area.chainchomp2;
+ enemyImages[CHOMP][RIGHT][0] = area.chainchomp1;
+ enemyImages[CHOMP][RIGHT][1] = area.chainchomp2;
+
+ enemyImages[ATOM][LEFT][0] = area.Atom1;
+ enemyImages[ATOM][LEFT][1] = area.Atom2;
+ enemyImages[ATOM][RIGHT][0] = area.Atom1;
+ enemyImages[ATOM][RIGHT][1] = area.Atom2;
+
+ enemyMove[GOOMBA] = 5;
+ enemyMove[KOOPARED] = 5;
enemyMove[KOOPAGREEN] = 5;
enemyMove[KOOPAREDFLYING] = 8;
enemyMove[BANZAI] = 16;
@@ -292,8 +296,8 @@ public class MarioGame extends Applet implements KeyListener, Runnable {
enemyMove[CHOMP] = 0;
enemyMove[ATOM] = 1;
- enemyHeight[GOOMBA] = 40;
- enemyHeight[KOOPARED] = 33;
+ enemyHeight[GOOMBA] = 40;
+ enemyHeight[KOOPARED] = 33;
enemyHeight[KOOPAGREEN] = 33;
enemyHeight[KOOPAREDFLYING] = 33;
enemyHeight[BANZAI] = 60;
@@ -307,14 +311,13 @@ public class MarioGame extends Applet implements KeyListener, Runnable {
enemyHeight[FLYER] = 50;
enemyHeight[CHOMP] = 60;
enemyHeight[ATOM] = 22;
-
- squished[GOOMBA] = area.squishedgoomba;
- squished[KOOPARED] = area.redshell;
+ squished[GOOMBA] = area.squishedgoomba;
+ squished[KOOPARED] = area.redshell;
squished[KOOPAGREEN] = area.greenshell;
- squished[KOOPAREDFLYING] = area.koopared;
- squished[BANZAI] = area.Banzai; // not actually used
- squished[WIGGLER] = area.Wiglerleft; // not actually used
+ squished[KOOPAREDFLYING] = area.koopared;
+ squished[BANZAI] = area.Banzai; // not actually used
+ squished[WIGGLER] = area.Wiglerleft; // not actually used
squished[BOO] = area.Boo1;
squished[FIREBOO] = area.Fireboo1;
squished[BOBOMB] = area.Bobomb;
@@ -324,8 +327,8 @@ public class MarioGame extends Applet implements KeyListener, Runnable {
squished[FLYER] = area.p1fl;
squished[CHOMP] = area.chainchompdead;
squished[ATOM] = area.Atom1;
-
- for (int i=0; i < MAXLEVEL; i++) {
+
+ for (int i = 0; i < MAXLEVEL; i++) {
floors[i] = area.floor4;
}
@@ -338,128 +341,122 @@ public class MarioGame extends Applet implements KeyListener, Runnable {
floors[6] = area.floor2;
floors[7] = area.floor6;
floors[8] = area.Floor10;
-
- timer = new Thread(this);
+
+ timer = new Thread(marioGame);
timer.start();
-
- }
-
- public void start() {
- // called by Applet Viewer or Browser
- doLevel(level);
+
}
-
+
synchronized void faceRight() {
heroImages[0] = area.herostand;
heroImages[1] = area.hero1;
heroImages[2] = area.herostand;
heroImages[3] = area.hero2;
heroImageNo = 0;
- heroleft=false;
+ heroleft = false;
}
-
+
synchronized void faceLeft() {
heroImages[0] = area.herostandleft;
heroImages[1] = area.hero1left;
heroImages[2] = area.herostandleft;
heroImages[3] = area.hero2left;
heroImageNo = 0;
- heroleft=true;
+ heroleft = true;
}
-
+
synchronized void enemyFaceRight(int enemyno) {
enemyImage[enemyno][0] = enemyImages[enemyType[enemyno]][RIGHT][0];
enemyImage[enemyno][1] = enemyImages[enemyType[enemyno]][RIGHT][1];
- if (enemyType[enemyno] == WIGGLER)
+ if (enemyType[enemyno] == WIGGLER)
enemyImage[enemyno][2] = enemyImages[enemyType[enemyno]][RIGHT][2];
enemyDirection[enemyno] = RIGHT;
}
-
+
synchronized void enemyFaceLeft(int enemyno) {
enemyImage[enemyno][0] = enemyImages[enemyType[enemyno]][LEFT][0];
enemyImage[enemyno][1] = enemyImages[enemyType[enemyno]][LEFT][1];
- if (enemyType[enemyno] == WIGGLER)
+ if (enemyType[enemyno] == WIGGLER)
enemyImage[enemyno][2] = enemyImages[enemyType[enemyno]][LEFT][2];
enemyDirection[enemyno] = LEFT;
}
-
+
synchronized void enemyDie(int enemyno) {
- //displayStatus();
+ // displayStatus();
enemyImage[enemyno][0] = squished[enemyType[enemyno]];
enemyImage[enemyno][1] = squished[enemyType[enemyno]];
- if (enemyType[enemyno] == WIGGLER)
+ if (enemyType[enemyno] == WIGGLER)
enemyImage[enemyno][2] = squished[enemyType[enemyno]];
}
-
+
synchronized void standStill() {
heroImageNo = 0;
}
-
+
public void doLevel(int level) {
// this runs one 'level'
juststarted = true;
- Point temppoint;
dead = false;
-
+
// position Hero at the bottom left
- playerPosition = new Point(LEFTEDGE,GROUNDLEVEL);
+ playerPosition = new Point(LEFTEDGE, GROUNDLEVEL);
faceRight();
-
-
+
// *********** THIS STUFF DEPENDS WHAT LEVEL YOU ARE ON ************
switch (level) {
- case 1:
- obstacleNumber=4; // 4 pipes for level 1
- enemyNumber = 1;
- levellength = 1482; // 2 pages
- break;
- case 2:
- obstacleNumber=11;
- enemyNumber = 5;
- levellength = 2964; // 4 pages
- break;
- case 3:
- obstacleNumber = 13;
- enemyNumber = 8;
- levellength = 2223; // 3 pages
- break;
- case 4:
- obstacleNumber =11;
- enemyNumber =12;
- levellength =4446; // 6 pages
- break;
- case 5:
- obstacleNumber =17;
- enemyNumber =13;
- levellength =5928; // 8 pages
- break;
- case 6:
- obstacleNumber =14;
- enemyNumber =1;
- levellength =5928; // 8 pages
- break;
- case 7:
- obstacleNumber =14;
- enemyNumber =6;
- levellength =3705; // 5 pages
- break;
- case 8:
- obstacleNumber =16;
- enemyNumber =9;
- levellength =5928; // 8 pages
- break;
- case 9:
- obstacleNumber =6;
- enemyNumber =9;
- levellength =3705; // 5 pages
- break;
- case 10:
- obstacleNumber =29;
- enemyNumber =0;
- levellength =4446; // 6 pages
- default:
- System.out.println("Level " + level + " has not yet been implemented");
+ case 1:
+ obstacleNumber = 4; // 4 pipes for level 1
+ enemyNumber = 1;
+ levellength = 1482; // 2 pages
+ break;
+ case 2:
+ obstacleNumber = 11;
+ enemyNumber = 5;
+ levellength = 2964; // 4 pages
+ break;
+ case 3:
+ obstacleNumber = 13;
+ enemyNumber = 8;
+ levellength = 2223; // 3 pages
+ break;
+ case 4:
+ obstacleNumber = 11;
+ enemyNumber = 12;
+ levellength = 4446; // 6 pages
+ break;
+ case 5:
+ obstacleNumber = 17;
+ enemyNumber = 13;
+ levellength = 5928; // 8 pages
+ break;
+ case 6:
+ obstacleNumber = 14;
+ enemyNumber = 1;
+ levellength = 5928; // 8 pages
+ break;
+ case 7:
+ obstacleNumber = 14;
+ enemyNumber = 6;
+ levellength = 3705; // 5 pages
+ break;
+ case 8:
+ obstacleNumber = 16;
+ enemyNumber = 9;
+ levellength = 5928; // 8 pages
+ break;
+ case 9:
+ obstacleNumber = 6;
+ enemyNumber = 9;
+ levellength = 3705; // 5 pages
+ break;
+ case 10:
+ obstacleNumber = 29;
+ enemyNumber = 0;
+ levellength = 4446; // 6 pages
+ default:
+ System.out.println("Level " + level + " has not yet been implemented");
}
+
enemyImage = new Image[enemyNumber][ENEMYIMAGES];// what is the current image for enemy n?
// initialise piranha states
obstacleImageNo = new int[obstacleNumber];
@@ -474,344 +471,338 @@ public class MarioGame extends Applet implements KeyListener, Runnable {
obstaclePositions = new Point[obstacleNumber];
enemyDirection = new int[enemyNumber];
enemyImageNo = new int[enemyNumber];
-
- for (int i=0; i < enemyNumber; i++) {
+
+ for (int i = 0; i < enemyNumber; i++) {
enemyImageNo[i] = 0;
}
-
+
switch (level) {
- // ---------------------------------
- // LEVEL 1
- // ---------------------------------
- case 1:
- for (int i=0; i < obstacleNumber; i++) {
- isTall[i] = false;
- if (i == 0) {
- piranhaPopping[i] = true;
- hasPiranha[i] = true;
- }
- else {
- if (i == 3) isTall[i] = true;
- piranhaPopping[i] = false;
- hasPiranha[i] = false;
- }
+ // ---------------------------------
+ // LEVEL 1
+ // ---------------------------------
+ case 1:
+ for (int i = 0; i < obstacleNumber; i++) {
+ isTall[i] = false;
+ if (i == 0) {
+ piranhaPopping[i] = true;
+ hasPiranha[i] = true;
+ } else {
+ if (i == 3)
+ isTall[i] = true;
+ piranhaPopping[i] = false;
+ hasPiranha[i] = false;
}
- obstaclePositions[0] = new Point(400, GROUNDLEVEL);
- obstaclePositions[1] = new Point(950, GROUNDLEVEL);
- obstaclePositions[2] = new Point(1245, GROUNDLEVEL); //1255 for adjacent
- obstaclePositions[3] = new Point(1320, GROUNDLEVEL);
-
- enemyPositions[0] = new Point(1000, GOOMBAHEIGHT);
- enemyType = new int[] {GOOMBA};
- break;
- // -----------------------------------------------
- // LEVEL 2
- // -----------------------------------------------
- case 2:
- for (int i=0; i < obstacleNumber; i++) {
- isTall[i] = false;
- if (i == 2 || i == 7 || i == 8) {
- piranhaPopping[i] = true;
- hasPiranha[i] = true;
- }
- else {
- if (i== 4 || i == 6 || i == 10) isTall[i] = true;
- piranhaPopping[i] = false;
- hasPiranha[i] = false;
- }
+ }
+ obstaclePositions[0] = new Point(400, GROUNDLEVEL);
+ obstaclePositions[1] = new Point(950, GROUNDLEVEL);
+ obstaclePositions[2] = new Point(1245, GROUNDLEVEL); // 1255 for adjacent
+ obstaclePositions[3] = new Point(1320, GROUNDLEVEL);
+
+ enemyPositions[0] = new Point(1000, GOOMBAHEIGHT);
+ enemyType = new int[] { GOOMBA };
+ break;
+ // -----------------------------------------------
+ // LEVEL 2
+ // -----------------------------------------------
+ case 2:
+ for (int i = 0; i < obstacleNumber; i++) {
+ isTall[i] = false;
+ if (i == 2 || i == 7 || i == 8) {
+ piranhaPopping[i] = true;
+ hasPiranha[i] = true;
+ } else {
+ if (i == 4 || i == 6 || i == 10)
+ isTall[i] = true;
+ piranhaPopping[i] = false;
+ hasPiranha[i] = false;
}
-
- // PAGE 1
- obstaclePositions[0] = new Point(150, GROUNDLEVEL);
- obstaclePositions[1] = new Point(225, GROUNDLEVEL);
- obstaclePositions[2] = new Point(300, GROUNDLEVEL);
- // PAGE 2
- obstaclePositions[3] = new Point(891, GROUNDLEVEL);
- obstaclePositions[4] = new Point(966, GROUNDLEVEL);
- // PAGE 3
- obstaclePositions[5] = new Point(1632, GROUNDLEVEL);
- obstaclePositions[6] = new Point(1707, GROUNDLEVEL);
- obstaclePositions[7] = new Point(1782, GROUNDLEVEL);
- // PAGE 4
- obstaclePositions[8] = new Point(2373, GROUNDLEVEL);
- obstaclePositions[9] = new Point(2743, GROUNDLEVEL);
- obstaclePositions[10] = new Point(2818, GROUNDLEVEL);
-
- enemyType = new int[] {KOOPAGREEN, GOOMBA, GOOMBA, GOOMBA, GOOMBA};
- enemyPositions[0] = new Point(375, KOOPAGREENHEIGHT);
- enemyPositions[1] = new Point(1041, GOOMBAHEIGHT);
- enemyPositions[2] = new Point(1141, GOOMBAHEIGHT);
- enemyPositions[3] = new Point(1882, GOOMBAHEIGHT);
- enemyPositions[4] = new Point(2473, GOOMBAHEIGHT);
- break;
- // -----------------------------------------------
- // LEVEL 3
- // -----------------------------------------------
- case 3:
- for (int i=0; i < obstacleNumber; i++) {
- isTall[i] = false;
- if (i == 4) isTall[i] = true;
- if (i != 4 && i != 11 && i != 12) {
- piranhaPopping[i] = true;
- hasPiranha[i] = true;
- }
- else {
- piranhaPopping[i] = false;
- hasPiranha[i] = false;
- }
+ }
+
+ // PAGE 1
+ obstaclePositions[0] = new Point(150, GROUNDLEVEL);
+ obstaclePositions[1] = new Point(225, GROUNDLEVEL);
+ obstaclePositions[2] = new Point(300, GROUNDLEVEL);
+ // PAGE 2
+ obstaclePositions[3] = new Point(891, GROUNDLEVEL);
+ obstaclePositions[4] = new Point(966, GROUNDLEVEL);
+ // PAGE 3
+ obstaclePositions[5] = new Point(1632, GROUNDLEVEL);
+ obstaclePositions[6] = new Point(1707, GROUNDLEVEL);
+ obstaclePositions[7] = new Point(1782, GROUNDLEVEL);
+ // PAGE 4
+ obstaclePositions[8] = new Point(2373, GROUNDLEVEL);
+ obstaclePositions[9] = new Point(2743, GROUNDLEVEL);
+ obstaclePositions[10] = new Point(2818, GROUNDLEVEL);
+
+ enemyType = new int[] { KOOPAGREEN, GOOMBA, GOOMBA, GOOMBA, GOOMBA };
+ enemyPositions[0] = new Point(375, KOOPAGREENHEIGHT);
+ enemyPositions[1] = new Point(1041, GOOMBAHEIGHT);
+ enemyPositions[2] = new Point(1141, GOOMBAHEIGHT);
+ enemyPositions[3] = new Point(1882, GOOMBAHEIGHT);
+ enemyPositions[4] = new Point(2473, GOOMBAHEIGHT);
+ break;
+ // -----------------------------------------------
+ // LEVEL 3
+ // -----------------------------------------------
+ case 3:
+ for (int i = 0; i < obstacleNumber; i++) {
+ isTall[i] = false;
+ if (i == 4)
+ isTall[i] = true;
+ if (i != 4 && i != 11 && i != 12) {
+ piranhaPopping[i] = true;
+ hasPiranha[i] = true;
+ } else {
+ piranhaPopping[i] = false;
+ hasPiranha[i] = false;
+ }
+ }
+ // PAGE 1
+ obstaclePositions[0] = new Point(50, GROUNDLEVEL);
+ obstaclePositions[1] = new Point(130, GROUNDLEVEL);
+ obstaclePositions[2] = new Point(210, GROUNDLEVEL);
+
+ obstaclePositions[3] = new Point(540, GROUNDLEVEL);
+ obstaclePositions[4] = new Point(620, GROUNDLEVEL);
+ obstaclePositions[5] = new Point(700, GROUNDLEVEL);
+ // PAGE 2
+ obstaclePositions[6] = new Point(850, GROUNDLEVEL);
+ obstaclePositions[7] = new Point(925, GROUNDLEVEL);
+ obstaclePositions[8] = new Point(1000, GROUNDLEVEL);
+ obstaclePositions[9] = new Point(1075, GROUNDLEVEL);
+ obstaclePositions[10] = new Point(1150, GROUNDLEVEL);
+ obstaclePositions[11] = new Point(1350, GROUNDLEVEL);
+
+ // PAGE 3
+ obstaclePositions[12] = new Point(2000, GROUNDLEVEL);
+
+ enemyType = new int[] { KOOPAGREEN, GOOMBA, GOOMBA, GOOMBA, GOOMBA, GOOMBA, GOOMBA, GOOMBA };
+
+ enemyPositions[0] = new Point(365, KOOPAGREENHEIGHT);
+ enemyPositions[1] = new Point(420, GOOMBAHEIGHT);
+ enemyPositions[2] = new Point(495, GOOMBAHEIGHT);
+ enemyPositions[3] = new Point(1250, GOOMBAHEIGHT);
+ enemyPositions[4] = new Point(1500, GOOMBAHEIGHT);
+ enemyPositions[5] = new Point(1575, GOOMBAHEIGHT);
+ enemyPositions[6] = new Point(1650, GOOMBAHEIGHT);
+ enemyPositions[7] = new Point(1725, GOOMBAHEIGHT);
+
+ break;
+ // -----------------------------------------------
+ // LEVEL 4
+ // -----------------------------------------------
+ case 4:
+ for (int i = 0; i < obstacleNumber; i++) {
+ isTall[i] = false;
+ if (i == 2 || i == 5 || i == 7 || i == 8 || i == 9 || i == 10) {
+ piranhaPopping[i] = true;
+ hasPiranha[i] = true;
+ } else {
+ if (i == 1 || i == 4 || i == 6)
+ isTall[i] = true;
+ piranhaPopping[i] = false;
+ hasPiranha[i] = false;
+ }
+ }
+
+ // PAGE 1
+ obstaclePositions[0] = new Point(185, GROUNDLEVEL);
+ obstaclePositions[1] = new Point(370, GROUNDLEVEL);
+ obstaclePositions[2] = new Point(700, GROUNDLEVEL);
+ // PAGE 2
+ obstaclePositions[3] = new Point(900, GROUNDLEVEL);
+ obstaclePositions[4] = new Point(1300, GROUNDLEVEL);
+ // PAGE 3
+ obstaclePositions[5] = new Point(1500, GROUNDLEVEL);
+ obstaclePositions[6] = new Point(1750, GROUNDLEVEL);
+ obstaclePositions[7] = new Point(2000, GROUNDLEVEL);
+ // PAGE 4
+
+ // PAGE 5
+ obstaclePositions[8] = new Point(3064, GROUNDLEVEL);
+ obstaclePositions[9] = new Point(3264, GROUNDLEVEL);
+ // PAGE 6
+ obstaclePositions[10] = new Point(4100, GROUNDLEVEL);
+
+ enemyType = new int[] { KOOPARED, KOOPARED, KOOPAREDFLYING, GOOMBA, GOOMBA, GOOMBA, GOOMBA, KOOPAREDFLYING,
+ KOOPARED, KOOPARED, KOOPARED, FLYER };
+
+ enemyPositions[0] = new Point(470, KOOPAREDHEIGHT);
+ enemyPositions[1] = new Point(520, KOOPAREDHEIGHT);
+
+ enemyPositions[2] = new Point(1000, KOOPAREDFLYINGHEIGHT);
+ enemyPositions[3] = new Point(1400, GOOMBAHEIGHT);
+
+ enemyPositions[4] = new Point(2230, GOOMBAHEIGHT);
+ enemyPositions[5] = new Point(2280, GOOMBAHEIGHT);
+ enemyPositions[6] = new Point(2320, GOOMBAHEIGHT);
+
+ enemyPositions[7] = new Point(3600, KOOPAREDFLYINGHEIGHT);
+
+ enemyPositions[8] = new Point(3710, KOOPAREDHEIGHT);
+ enemyPositions[9] = new Point(3760, KOOPAREDHEIGHT);
+ enemyPositions[10] = new Point(3810, KOOPAREDHEIGHT);
+ enemyPositions[11] = new Point(3500, FLYERHEIGHT);
+
+ break;
+ // -----------------------------------------------
+ // LEVEL 5
+ // -----------------------------------------------
+ case 5:
+ for (int i = 0; i < obstacleNumber; i++) {
+ isTall[i] = false;
+ if (i == 0 || i == 2 || i == 4 || i == 10 || i == 11 || i == 14 || i == 16) {
+ piranhaPopping[i] = true;
+ hasPiranha[i] = true;
+ } else {
+ if (i == 1 || i == 3 || i == 6 || i == 7 || i == 8 || i == 9 || i == 12 || i == 15)
+ isTall[i] = true;
+ piranhaPopping[i] = false;
+ hasPiranha[i] = false;
}
- // PAGE 1
- obstaclePositions[0] = new Point(50, GROUNDLEVEL);
- obstaclePositions[1] = new Point(130, GROUNDLEVEL);
- obstaclePositions[2] = new Point(210, GROUNDLEVEL);
-
- obstaclePositions[3] = new Point(540, GROUNDLEVEL);
- obstaclePositions[4] = new Point(620, GROUNDLEVEL);
- obstaclePositions[5] = new Point(700, GROUNDLEVEL);
- // PAGE 2
- obstaclePositions[6] = new Point(850, GROUNDLEVEL);
- obstaclePositions[7] = new Point(925, GROUNDLEVEL);
- obstaclePositions[8] = new Point(1000, GROUNDLEVEL);
- obstaclePositions[9] = new Point(1075, GROUNDLEVEL);
- obstaclePositions[10] = new Point(1150, GROUNDLEVEL);
- obstaclePositions[11] = new Point(1350, GROUNDLEVEL);
-
- // PAGE 3
- obstaclePositions[12] = new Point(2000, GROUNDLEVEL);
-
- enemyType = new int[] {KOOPAGREEN, GOOMBA, GOOMBA, GOOMBA, GOOMBA,
- GOOMBA, GOOMBA, GOOMBA};
-
- enemyPositions[0] = new Point(365, KOOPAGREENHEIGHT);
- enemyPositions[1] = new Point(420, GOOMBAHEIGHT);
- enemyPositions[2] = new Point(495, GOOMBAHEIGHT);
- enemyPositions[3] = new Point(1250, GOOMBAHEIGHT);
- enemyPositions[4] = new Point(1500, GOOMBAHEIGHT);
- enemyPositions[5] = new Point(1575, GOOMBAHEIGHT);
- enemyPositions[6] = new Point(1650, GOOMBAHEIGHT);
- enemyPositions[7] = new Point(1725, GOOMBAHEIGHT);
-
- break;
- // -----------------------------------------------
- // LEVEL 4
- // -----------------------------------------------
- case 4:
- for (int i=0; i < obstacleNumber; i++) {
- isTall[i] = false;
- if (i == 2 || i == 5 || i == 7 || i == 8 || i == 9 || i == 10) {
+ }
+ // page1
+ obstaclePositions[0] = new Point(150, GROUNDLEVEL);
+ obstaclePositions[1] = new Point(300, GROUNDLEVEL);
+ obstaclePositions[2] = new Point(600, GROUNDLEVEL);
+ // page2
+ obstaclePositions[3] = new Point(800, GROUNDLEVEL);
+ obstaclePositions[4] = new Point(900, GROUNDLEVEL);
+ // page3
+ obstaclePositions[5] = new Point(1600, GROUNDLEVEL);
+ obstaclePositions[6] = new Point(1700, GROUNDLEVEL);
+ obstaclePositions[7] = new Point(1800, GROUNDLEVEL);
+ obstaclePositions[8] = new Point(1900, GROUNDLEVEL);
+ obstaclePositions[9] = new Point(2000, GROUNDLEVEL);
+ // page4
+ obstaclePositions[10] = new Point(2400, GROUNDLEVEL);
+ // page5
+ obstaclePositions[11] = new Point(3100, GROUNDLEVEL);
+ obstaclePositions[12] = new Point(3200, GROUNDLEVEL);
+ // page6
+ obstaclePositions[13] = new Point(3850, GROUNDLEVEL);
+ obstaclePositions[14] = new Point(3950, GROUNDLEVEL);
+ obstaclePositions[15] = new Point(4050, GROUNDLEVEL);
+ // page7
+ // NONE\\
+ // page8
+ obstaclePositions[16] = new Point(5550, GROUNDLEVEL);
+
+ enemyType = new int[] { KOOPAREDFLYING, GOOMBA, GOOMBA, KOOPAGREEN, KOOPAREDFLYING, KOOPAGREEN, KOOPAGREEN,
+ KOOPAGREEN, KOOPAREDFLYING, KOOPAREDFLYING, GOOMBA, GOOMBA, GOOMBA };
+
+ enemyPositions[0] = new Point(450, KOOPAREDFLYINGHEIGHT);
+ enemyPositions[1] = new Point(700, GOOMBAHEIGHT);
+ enemyPositions[2] = new Point(1000, GOOMBAHEIGHT);
+ enemyPositions[3] = new Point(1100, KOOPAGREENHEIGHT);
+ enemyPositions[4] = new Point(2100, KOOPAREDFLYINGHEIGHT);
+ enemyPositions[5] = new Point(2500, KOOPAGREENHEIGHT);
+ enemyPositions[6] = new Point(2600, KOOPAGREENHEIGHT);
+ enemyPositions[7] = new Point(2700, KOOPAGREENHEIGHT);
+ enemyPositions[8] = new Point(3400, KOOPAREDFLYINGHEIGHT);
+ enemyPositions[9] = new Point(3600, KOOPAREDFLYINGHEIGHT);
+ enemyPositions[10] = new Point(4700, GOOMBAHEIGHT);
+ enemyPositions[11] = new Point(4800, GOOMBAHEIGHT);
+ enemyPositions[12] = new Point(4800, GOOMBAHEIGHT);
+ break;
+ // -----------------------------------------------
+ // LEVEL 6
+ // -----------------------------------------------
+ case 6:
+ for (int i = 0; i < obstacleNumber; i++) {
+ isTall[i] = false;
+ piranhaPopping[i] = false;
+ hasPiranha[i] = false;
+ if (i == 2 || i == 3 || i == 4 || i == 5 || i == 7 || i == 10 || i == 11) {
+ isTall[i] = true;
+ } else {
+ if (i == 13) {
piranhaPopping[i] = true;
hasPiranha[i] = true;
}
- else {
- if (i== 1 || i == 4 || i == 6) isTall[i] = true;
- piranhaPopping[i] = false;
- hasPiranha[i] = false;
- }
+
}
-
- // PAGE 1
- obstaclePositions[0] = new Point(185, GROUNDLEVEL);
- obstaclePositions[1] = new Point(370, GROUNDLEVEL);
- obstaclePositions[2] = new Point(700, GROUNDLEVEL);
- // PAGE 2
- obstaclePositions[3] = new Point(900, GROUNDLEVEL);
- obstaclePositions[4] = new Point(1300, GROUNDLEVEL);
- // PAGE 3
- obstaclePositions[5] = new Point(1500, GROUNDLEVEL);
- obstaclePositions[6] = new Point(1750, GROUNDLEVEL);
- obstaclePositions[7] = new Point(2000, GROUNDLEVEL);
- // PAGE 4
-
- // PAGE 5
- obstaclePositions[8] = new Point(3064, GROUNDLEVEL);
- obstaclePositions[9] = new Point(3264, GROUNDLEVEL);
- // PAGE 6
- obstaclePositions[10] = new Point(4100, GROUNDLEVEL);
-
- enemyType = new int[] {KOOPARED, KOOPARED, KOOPAREDFLYING, GOOMBA, GOOMBA,
- GOOMBA, GOOMBA, KOOPAREDFLYING, KOOPARED, KOOPARED, KOOPARED, FLYER};
-
- enemyPositions[0] = new Point(470, KOOPAREDHEIGHT);
- enemyPositions[1] = new Point(520, KOOPAREDHEIGHT);
-
- enemyPositions[2] = new Point(1000, KOOPAREDFLYINGHEIGHT);
- enemyPositions[3] = new Point(1400, GOOMBAHEIGHT);
-
- enemyPositions[4] = new Point(2230, GOOMBAHEIGHT);
- enemyPositions[5] = new Point(2280, GOOMBAHEIGHT);
- enemyPositions[6] = new Point(2320, GOOMBAHEIGHT);
-
- enemyPositions[7] = new Point(3600, KOOPAREDFLYINGHEIGHT);
-
- enemyPositions[8] = new Point(3710, KOOPAREDHEIGHT);
- enemyPositions[9] = new Point(3760, KOOPAREDHEIGHT);
- enemyPositions[10] = new Point(3810, KOOPAREDHEIGHT);
- enemyPositions[11] = new Point(3500, FLYERHEIGHT);
-
- break;
- // -----------------------------------------------
- // LEVEL 5
- // -----------------------------------------------
- case 5:
- for ( int i=0; i < obstacleNumber;i++){
- isTall[i] = false;
- if (i == 0 || i == 2 || i == 4 || i == 10 || i == 11 || i == 14 || i == 16) {
+ }
+ obstaclePositions[0] = new Point(350, GROUNDLEVEL);
+ obstaclePositions[1] = new Point(1091, GROUNDLEVEL);
+ obstaclePositions[2] = new Point(1191, GROUNDLEVEL);
+ obstaclePositions[3] = new Point(1600, GROUNDLEVEL);
+ obstaclePositions[4] = new Point(1675, GROUNDLEVEL);
+ obstaclePositions[5] = new Point(1750, GROUNDLEVEL);
+ obstaclePositions[6] = new Point(2500, GROUNDLEVEL);
+ obstaclePositions[7] = new Point(2600, GROUNDLEVEL);
+ obstaclePositions[8] = new Point(2700, GROUNDLEVEL);
+ obstaclePositions[9] = new Point(3975, GROUNDLEVEL);
+ obstaclePositions[10] = new Point(4050, GROUNDLEVEL);
+ obstaclePositions[11] = new Point(4150, GROUNDLEVEL);
+ obstaclePositions[12] = new Point(4225, GROUNDLEVEL);
+ obstaclePositions[13] = new Point(5550, GROUNDLEVEL);
+
+ enemyPositions[0] = new Point(-400, BANZAIHEIGHT);
+ enemyType[0] = BANZAI;
+
+ break;
+
+ // -----------------------------------------------
+ // LEVEL 7
+ // -----------------------------------------------
+ case 7:
+
+ for (int i = 0; i < obstacleNumber; i++) {
+ isTall[i] = false;
+ piranhaPopping[i] = false;
+ hasPiranha[i] = false;
+ if (i == 1 || i == 2 || i == 8) {
+ isTall[i] = true;
+ } else {
+ if (i == 0 || i == 3 || i == 5 || i == 7 || i == 9 || i == 10 || i == 11) {
piranhaPopping[i] = true;
hasPiranha[i] = true;
}
- else {
- if (i== 1 || i == 3 || i == 6 || i == 7 || i == 8 || i == 9 || i == 12 || i == 15) isTall[i] = true;
- piranhaPopping[i] = false;
- hasPiranha[i] = false;
- }
}
- //page1
- obstaclePositions[0] = new Point(150, GROUNDLEVEL);
- obstaclePositions[1] = new Point(300, GROUNDLEVEL);
- obstaclePositions[2] = new Point(600, GROUNDLEVEL);
- //page2
- obstaclePositions[3] = new Point(800, GROUNDLEVEL);
- obstaclePositions[4] = new Point(900, GROUNDLEVEL);
- //page3
- obstaclePositions[5] = new Point(1600, GROUNDLEVEL);
- obstaclePositions[6] = new Point(1700, GROUNDLEVEL);
- obstaclePositions[7] = new Point(1800, GROUNDLEVEL);
- obstaclePositions[8] = new Point(1900, GROUNDLEVEL);
- obstaclePositions[9] = new Point(2000, GROUNDLEVEL);
- //page4
- obstaclePositions[10] = new Point(2400, GROUNDLEVEL);
- //page5
- obstaclePositions[11] = new Point(3100, GROUNDLEVEL);
- obstaclePositions[12] = new Point(3200, GROUNDLEVEL);
- //page6
- obstaclePositions[13] = new Point(3850, GROUNDLEVEL);
- obstaclePositions[14] = new Point(3950, GROUNDLEVEL);
- obstaclePositions[15] = new Point(4050, GROUNDLEVEL);
- //page7
- //NONE\\
- //page8
- obstaclePositions[16] = new Point(5550, GROUNDLEVEL);
-
- enemyType = new int[] {KOOPAREDFLYING, GOOMBA, GOOMBA, KOOPAGREEN,
- KOOPAREDFLYING, KOOPAGREEN, KOOPAGREEN, KOOPAGREEN,
- KOOPAREDFLYING, KOOPAREDFLYING, GOOMBA, GOOMBA,
- GOOMBA};
-
- enemyPositions[0] = new Point(450, KOOPAREDFLYINGHEIGHT);
- enemyPositions[1] = new Point(700, GOOMBAHEIGHT);
- enemyPositions[2] = new Point(1000, GOOMBAHEIGHT);
- enemyPositions[3] = new Point(1100, KOOPAGREENHEIGHT);
- enemyPositions[4] = new Point(2100, KOOPAREDFLYINGHEIGHT);
- enemyPositions[5] = new Point(2500, KOOPAGREENHEIGHT);
- enemyPositions[6] = new Point(2600, KOOPAGREENHEIGHT);
- enemyPositions[7] = new Point(2700, KOOPAGREENHEIGHT);
- enemyPositions[8] = new Point(3400, KOOPAREDFLYINGHEIGHT);
- enemyPositions[9] = new Point(3600, KOOPAREDFLYINGHEIGHT);
- enemyPositions[10] = new Point(4700, GOOMBAHEIGHT);
- enemyPositions[11] = new Point(4800, GOOMBAHEIGHT);
- enemyPositions[12] = new Point(4800, GOOMBAHEIGHT);
- break;
- // -----------------------------------------------
- // LEVEL 6
- // -----------------------------------------------
- case 6:
- for ( int i=0; i < obstacleNumber;i++){
- isTall[i] = false;
- piranhaPopping[i] = false;
- hasPiranha[i] = false;
- if (i == 2 || i == 3 || i == 4 || i == 5 || i == 7 || i == 10 || i == 11) {
- isTall[i]=true;
- }
- else {
- if (i == 13){
- piranhaPopping[i] = true;
- hasPiranha[i] = true;
- }
-
- }
- }
- obstaclePositions[0] = new Point(350, GROUNDLEVEL);
- obstaclePositions[1] = new Point(1091, GROUNDLEVEL);
- obstaclePositions[2] = new Point(1191, GROUNDLEVEL);
- obstaclePositions[3] = new Point(1600, GROUNDLEVEL);
- obstaclePositions[4] = new Point(1675, GROUNDLEVEL);
- obstaclePositions[5] = new Point(1750, GROUNDLEVEL);
- obstaclePositions[6] = new Point(2500, GROUNDLEVEL);
- obstaclePositions[7] = new Point(2600, GROUNDLEVEL);
- obstaclePositions[8] = new Point(2700, GROUNDLEVEL);
- obstaclePositions[9] = new Point(3975, GROUNDLEVEL);
- obstaclePositions[10] = new Point(4050, GROUNDLEVEL);
- obstaclePositions[11] = new Point(4150, GROUNDLEVEL);
- obstaclePositions[12] = new Point(4225, GROUNDLEVEL);
- obstaclePositions[13] = new Point(5550, GROUNDLEVEL);
-
- enemyPositions[0] = new Point(-400, BANZAIHEIGHT);
- enemyType[0] = BANZAI;
-
- break;
-
- // -----------------------------------------------
- // LEVEL 7
- // -----------------------------------------------
- case 7:
-
- for ( int i=0; i < obstacleNumber;i++){
- isTall[i] = false;
- piranhaPopping[i] = false;
- hasPiranha[i] = false;
- if (i == 1 || i == 2 || i == 8) {
- isTall[i]=true;
- }
- else {
- if (i == 0 || i == 3 || i == 5 || i == 7 || i == 9 || i == 10 || i == 11){
- piranhaPopping[i] = true;
- hasPiranha[i] = true;
- }
- }
- }
- obstaclePositions[0] = new Point(250, GROUNDLEVEL);
- obstaclePositions[1] = new Point(350, GROUNDLEVEL);
- obstaclePositions[2] = new Point(450, GROUNDLEVEL);
- obstaclePositions[3] = new Point(550, GROUNDLEVEL);
- obstaclePositions[4] = new Point(800, GROUNDLEVEL);
- obstaclePositions[5] = new Point(1000, GROUNDLEVEL);
- obstaclePositions[6] = new Point(1200, GROUNDLEVEL);
- obstaclePositions[7] = new Point(1400, GROUNDLEVEL);
- obstaclePositions[8] = new Point(1800, GROUNDLEVEL);
- obstaclePositions[9] = new Point(2400, GROUNDLEVEL);
- obstaclePositions[10] = new Point(2550, GROUNDLEVEL);
- obstaclePositions[11] = new Point(2700, GROUNDLEVEL);
- obstaclePositions[12] = new Point(3100, GROUNDLEVEL);
- obstaclePositions[13] = new Point(3600, GROUNDLEVEL);
-
- enemyType = new int[] {GOOMBA, GOOMBA, GOOMBA, GOOMBA, GOOMBA, WIGGLER};
- enemyPositions[0] = new Point(900, GOOMBAHEIGHT);
- enemyPositions[1] = new Point(1100, GOOMBAHEIGHT);
- enemyPositions[2] = new Point(1300, GOOMBAHEIGHT);
- enemyPositions[3] = new Point(1600, GOOMBAHEIGHT);
- enemyPositions[4] = new Point(2000, GOOMBAHEIGHT);
- enemyPositions[5] = new Point(3250, WIGGLERHEIGHT);
- break;
- // -----------------------------------------------
- // LEVEL 8
- // -----------------------------------------------
+ }
+ obstaclePositions[0] = new Point(250, GROUNDLEVEL);
+ obstaclePositions[1] = new Point(350, GROUNDLEVEL);
+ obstaclePositions[2] = new Point(450, GROUNDLEVEL);
+ obstaclePositions[3] = new Point(550, GROUNDLEVEL);
+ obstaclePositions[4] = new Point(800, GROUNDLEVEL);
+ obstaclePositions[5] = new Point(1000, GROUNDLEVEL);
+ obstaclePositions[6] = new Point(1200, GROUNDLEVEL);
+ obstaclePositions[7] = new Point(1400, GROUNDLEVEL);
+ obstaclePositions[8] = new Point(1800, GROUNDLEVEL);
+ obstaclePositions[9] = new Point(2400, GROUNDLEVEL);
+ obstaclePositions[10] = new Point(2550, GROUNDLEVEL);
+ obstaclePositions[11] = new Point(2700, GROUNDLEVEL);
+ obstaclePositions[12] = new Point(3100, GROUNDLEVEL);
+ obstaclePositions[13] = new Point(3600, GROUNDLEVEL);
+
+ enemyType = new int[] { GOOMBA, GOOMBA, GOOMBA, GOOMBA, GOOMBA, WIGGLER };
+ enemyPositions[0] = new Point(900, GOOMBAHEIGHT);
+ enemyPositions[1] = new Point(1100, GOOMBAHEIGHT);
+ enemyPositions[2] = new Point(1300, GOOMBAHEIGHT);
+ enemyPositions[3] = new Point(1600, GOOMBAHEIGHT);
+ enemyPositions[4] = new Point(2000, GOOMBAHEIGHT);
+ enemyPositions[5] = new Point(3250, WIGGLERHEIGHT);
+ break;
+ // -----------------------------------------------
+ // LEVEL 8
+ // -----------------------------------------------
case 8:
-
- for ( int i=0; i < obstacleNumber;i++){
- isTall[i] = false;
+
+ for (int i = 0; i < obstacleNumber; i++) {
+ isTall[i] = false;
piranhaPopping[i] = false;
hasPiranha[i] = false;
if (i == 2 || i == 3 || i == 4 || i == 6 || i == 8 || i == 11) {
- isTall[i]=true;
- }
- else {
- if (i == 0 || i == 1 || i == 10 || i == 12 || i == 13){
+ isTall[i] = true;
+ } else {
+ if (i == 0 || i == 1 || i == 10 || i == 12 || i == 13) {
piranhaPopping[i] = true;
- hasPiranha[i] = true;
+ hasPiranha[i] = true;
}
}
}
-
+
obstaclePositions[0] = new Point(100, GROUNDLEVEL);
obstaclePositions[1] = new Point(650, GROUNDLEVEL);
obstaclePositions[2] = new Point(1000, GROUNDLEVEL);
@@ -828,9 +819,8 @@ public class MarioGame extends Applet implements KeyListener, Runnable {
obstaclePositions[13] = new Point(4075, GROUNDLEVEL);
obstaclePositions[14] = new Point(5275, GROUNDLEVEL);
obstaclePositions[15] = new Point(5775, GROUNDLEVEL);
-
- enemyType = new int [] {BOO, FIREBOO, GOOMBA, BOO,
- GOOMBA, FIREBOO, GOOMBA, GOOMBA, BOBOMB};
+
+ enemyType = new int[] { BOO, FIREBOO, GOOMBA, BOO, GOOMBA, FIREBOO, GOOMBA, GOOMBA, BOBOMB };
enemyPositions[0] = new Point(350, BOOHEIGHT);
enemyPositions[1] = new Point(900, FIREBOOHEIGHT);
@@ -841,238 +831,230 @@ public class MarioGame extends Applet implements KeyListener, Runnable {
enemyPositions[6] = new Point(4175, GOOMBAHEIGHT);
enemyPositions[7] = new Point(4250, GOOMBAHEIGHT);
enemyPositions[8] = new Point(5375, BOBOMBHEIGHT);
- break;
- case 9:
- enemyType = new int [] { FLYER, GOOMBA, GOOMBA, KOOPAREDFLYING, KOOPAREDFLYING, KOOPAREDFLYING, KOOPAREDFLYING, KOOPAREDFLYING, CHOMP};
+ break;
+ case 9:
+ enemyType = new int[] { FLYER, GOOMBA, GOOMBA, KOOPAREDFLYING, KOOPAREDFLYING, KOOPAREDFLYING,
+ KOOPAREDFLYING, KOOPAREDFLYING, CHOMP };
enemyPositions[0] = new Point(400, FLYERHEIGHT);
enemyPositions[1] = new Point(950, GOOMBAHEIGHT);
enemyPositions[2] = new Point(1000, GOOMBAHEIGHT);
- enemyPositions[3] = new Point(1300, KOOPAREDFLYINGHEIGHT-10);
- enemyPositions[4] = new Point(1500, KOOPAREDFLYINGHEIGHT-10);
- enemyPositions[5] = new Point(1700, KOOPAREDFLYINGHEIGHT-10);
- enemyPositions[6] = new Point(1900, KOOPAREDFLYINGHEIGHT-10);
- enemyPositions[7] = new Point(2100, KOOPAREDFLYINGHEIGHT-10);
+ enemyPositions[3] = new Point(1300, KOOPAREDFLYINGHEIGHT - 10);
+ enemyPositions[4] = new Point(1500, KOOPAREDFLYINGHEIGHT - 10);
+ enemyPositions[5] = new Point(1700, KOOPAREDFLYINGHEIGHT - 10);
+ enemyPositions[6] = new Point(1900, KOOPAREDFLYINGHEIGHT - 10);
+ enemyPositions[7] = new Point(2100, KOOPAREDFLYINGHEIGHT - 10);
enemyPositions[8] = new Point(2850, CHOMPHEIGHT);
-
- for ( int i=0; i < obstacleNumber;i++){
-
+
+ for (int i = 0; i < obstacleNumber; i++) {
+
piranhaPopping[i] = false;
hasPiranha[i] = false;
if (i == 0 || i == 3 || i == 5) {
- isTall[i]=true;
- }
- else {
- if (i == 1 || i == 2 || i == 4){
+ isTall[i] = true;
+ } else {
+ if (i == 1 || i == 2 || i == 4) {
piranhaPopping[i] = true;
- hasPiranha[i] = true;
+ hasPiranha[i] = true;
}
}
}
-
-
- obstaclePositions[0] = new Point(200, GROUNDLEVEL);
- obstaclePositions[1] = new Point(900, GROUNDLEVEL);
- obstaclePositions[2] = new Point(1100, GROUNDLEVEL);
- obstaclePositions[3] = new Point(2400, GROUNDLEVEL);
- obstaclePositions[4] = new Point(2550, GROUNDLEVEL);
- obstaclePositions[5] = new Point(2700, GROUNDLEVEL);
-
-
-
-
-
-
-
+
+ obstaclePositions[0] = new Point(200, GROUNDLEVEL);
+ obstaclePositions[1] = new Point(900, GROUNDLEVEL);
+ obstaclePositions[2] = new Point(1100, GROUNDLEVEL);
+ obstaclePositions[3] = new Point(2400, GROUNDLEVEL);
+ obstaclePositions[4] = new Point(2550, GROUNDLEVEL);
+ obstaclePositions[5] = new Point(2700, GROUNDLEVEL);
+
default:
-
+
}
-
- for (int j=0; j < enemyNumber; j++) {
+
+ for (int j = 0; j < enemyNumber; j++) {
enemyFaceRight(j);
enemyDead[j] = false;
}
-
- for (int i=0; i < obstacleNumber; i++) {
+
+ for (int i = 0; i < obstacleNumber; i++) {
if (hasPiranha[i]) { // pick a random image number between 0 and 18 (inclusive)
- obstacleImageNo[i] = (int) (Math.random() * 18) / 1;
- }
- else obstacleImageNo[i] = 0;
+ obstacleImageNo[i] = (int) (Math.random() * 18) / 1;
+ } else
+ obstacleImageNo[i] = 0;
}
-
+
// position the warp zone at the end of the level
warpzone = new Point(levellength, GROUNDLEVEL);
// *********** END OF STUFF THAT DEPENDS WHAT LEVEL YOU ARE ON ************
-
+
ingame = true;
- showStatus("Started level " + level);
+ System.out.println("Started level " + level);
}
-
+
boolean isPlayerPosition(Point p) {
- return(p.x == playerPosition.x && p.y == playerPosition.y);
+ return (p.x == playerPosition.x && p.y == playerPosition.y);
}
-
+
int isEnemyPosition(Point p) {
- for (int i = 0 ; i < enemyNumber; i++) {
- if(isEnemyX(p) != -1 && isEnemyY(p) != -1 && !enemyDead[i]) return(i);
+ for (int i = 0; i < enemyNumber; i++) {
+ if (isEnemyX(p) != -1 && isEnemyY(p) != -1 && !enemyDead[i])
+ return (i);
}
- return(-1);
+ return (-1);
}
-
+
boolean isObstaclePosition(Point p, boolean forMario) {
int obby;
- for (int i = 0 ; i < obstacleNumber; i++) {
+ for (int i = 0; i < obstacleNumber; i++) {
obby = isObstacleX(p, forMario);
- if(obby != -1 && isObstacleY(p, obby, forMario) != -1) {
- return(true);
+ if (obby != -1 && isObstacleY(p, obby, forMario) != -1) {
+ return (true);
}
}
- return(false);
+ return (false);
}
-
+
boolean checkIfBlockingObstacle(Point p) {
boolean result = false;
- int obby, obby2;
+ int obby;
obby = isObstacleX(p, true);
- if(obby != -1 && isBlockingObstacleY(p, obby)) {
+ if (obby != -1 && isBlockingObstacleY(p, obby)) {
piranhaPopping[obby] = false;
result = true;
}
- for (int i = 0 ; i < obstacleNumber; i++) {
+ for (int i = 0; i < obstacleNumber; i++) {
if (i != obby || !result) {
- if (hasPiranha[i]) piranhaPopping[i] = true;
+ if (hasPiranha[i])
+ piranhaPopping[i] = true;
}
}
- if (!result) startPosY = GROUNDLEVEL;
- return(result);
+ if (!result)
+ startPosY = GROUNDLEVEL;
+ return (result);
}
-
+
int isObstacleX(Point p, boolean forMario) {
- int obstaclex;
- for (int i = 0 ; i < obstacleNumber; i++) {
- // if x is >= obstacleposition - (MARIOLEFTOFOBSTACLE) and x <= obstacleposition + (MARIORIGHTOFOBSTACLE)
+ int obstaclex;
+ for (int i = 0; i < obstacleNumber; i++) {
+ // if x is >= obstacleposition - (MARIOLEFTOFOBSTACLE) and x <= obstacleposition
+ // + (MARIORIGHTOFOBSTACLE)
obstaclex = obstaclePositions[i].x;
if (forMario) {
- if(p.x >= (obstaclex - MARIOLEFTOFOBSTACLE) && p.x <= (obstaclex + MARIORIGHTOFOBSTACLE))
- return(i); // return the number of the matching obstacle
- }
- else {
- if(p.x >= (obstaclex - ENEMYLEFTOFOBSTACLE) && p.x <= (obstaclex + ENEMYRIGHTOFOBSTACLE))
- return(i); // return the number of the matching obstacle
+ if (p.x >= (obstaclex - MARIOLEFTOFOBSTACLE) && p.x <= (obstaclex + MARIORIGHTOFOBSTACLE))
+ return (i); // return the number of the matching obstacle
+ } else {
+ if (p.x >= (obstaclex - ENEMYLEFTOFOBSTACLE) && p.x <= (obstaclex + ENEMYRIGHTOFOBSTACLE))
+ return (i); // return the number of the matching obstacle
}
}
- return(-1);
+ return (-1);
}
-
+
boolean isBlockingObstacleY(Point p, int obstaclenumber) {
- String s = "Is Mario blocking pipe " + obstaclenumber + " which is " + (isTall[obstaclenumber] ? "" : "not ") + "tall";
if (isTall[obstaclenumber]) {
- if(p.y <= obstaclePositions[obstaclenumber].y-(OBSTACLEHEIGHT+TALLOBSTACLEDIFF)) {
- //System.out.println(s+": Yes");
- return(true);
+ if (p.y <= obstaclePositions[obstaclenumber].y - (OBSTACLEHEIGHT + TALLOBSTACLEDIFF)) {
+ // System.out.println(s+": Yes");
+ return (true);
}
- }
- else {
- if(p.y <= obstaclePositions[obstaclenumber].y-OBSTACLEHEIGHT) {
- //System.out.println(s+": Yes");
- return(true);
+ } else {
+ if (p.y <= obstaclePositions[obstaclenumber].y - OBSTACLEHEIGHT) {
+ // System.out.println(s+": Yes");
+ return (true);
}
}
- //System.out.println(s+": No");
- return(false);
+ // System.out.println(s+": No");
+ return (false);
}
-
+
int isObstacleY(Point p, int obstaclenumber, boolean forMario) {
if (isTall[obstaclenumber]) {
- if(p.y > obstaclePositions[obstaclenumber].y-(OBSTACLEHEIGHT+TALLOBSTACLEDIFF)) {
- return(obstaclenumber);
+ if (p.y > obstaclePositions[obstaclenumber].y - (OBSTACLEHEIGHT + TALLOBSTACLEDIFF)) {
+ return (obstaclenumber);
}
- }
- else {
- if(p.y > obstaclePositions[obstaclenumber].y-OBSTACLEHEIGHT) {
- return(obstaclenumber);
+ } else {
+ if (p.y > obstaclePositions[obstaclenumber].y - OBSTACLEHEIGHT) {
+ return (obstaclenumber);
}
}
- return(-1);
+ return (-1);
}
int isEnemyX(Point p) {
- int enemyx;
- for (int i = 0 ; i < enemyNumber; i++) {
- // if x is >= enemyposition - (LEFTOFENEMY) and x <= enemyposition + (RIGHTOFENEMY)
+ int enemyx;
+ for (int i = 0; i < enemyNumber; i++) {
+ // if x is >= enemyposition - (LEFTOFENEMY) and x <= enemyposition +
+ // (RIGHTOFENEMY)
enemyx = enemyPositions[i].x;
- //System.out.println("Player got by enemy if " +
- // p.x + " >= " + (enemyx - MARIOLEFTOFENEMY) + " && " + p.x + " <= " + (enemyx + MARIORIGHTOFENEMY));
- if(p.x >= (enemyx - MARIOLEFTOFENEMY) && p.x <= (enemyx + MARIORIGHTOFENEMY) && !enemyDead[i])
- return(i); // return the number of the matching enemy
+ // System.out.println("Player got by enemy if " +
+ // p.x + " >= " + (enemyx - MARIOLEFTOFENEMY) + " && " + p.x + " <= " + (enemyx
+ // + MARIORIGHTOFENEMY));
+ if (p.x >= (enemyx - MARIOLEFTOFENEMY) && p.x <= (enemyx + MARIORIGHTOFENEMY) && !enemyDead[i])
+ return (i); // return the number of the matching enemy
}
- return(-1);
+ return (-1);
}
-
+
int isEnemyY(Point p) {
int offset = herocrouching ? MARIOCROUCHOFFSET : MARIOOFFSET;
- for (int i = 0 ; i < enemyNumber; i++) {
- if(!enemyDead[i] &&
- ((p.y+offset <= enemyPositions[i].y+enemySize[enemyType[i]]) &&
- (p.y+MARIOHEIGHT) >= enemyPositions[i].y))
- return(i);
+ for (int i = 0; i < enemyNumber; i++) {
+ if (!enemyDead[i] && ((p.y + offset <= enemyPositions[i].y + enemySize[enemyType[i]])
+ && (p.y + MARIOHEIGHT) >= enemyPositions[i].y))
+ return (i);
}
- return(-1);
+ return (-1);
}
public void finished() {
finished = true;
System.exit(0);
}
-
+
public String getAppletInfo() {
return ("Mario Game");
- }
-
+ }
+
int randomMove() {
// return + or - value (randomly)
- if (Math.random() >= 0.5) return(24);
- else return(-24);
+ if (Math.random() >= 0.5)
+ return (24);
+ else
+ return (-24);
}
-
+
private synchronized void incKeysDown(int whichone) {
keysdown[whichone] = 1;
}
-
+
private synchronized void decKeysDown(int whichone) {
keysdown[whichone] = 0;
}
-
+
// this class will use just the key pressed event
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_F1) {
displayStatus();
}
if (ingame) {
- if (!
- (e.getKeyCode() == KeyEvent.VK_LEFT && playerPosition.x <= (LEFTEDGE + XAMOUNT))) {
-
+ if (!(e.getKeyCode() == KeyEvent.VK_LEFT && playerPosition.x <= (LEFTEDGE + XAMOUNT))) {
+
// valid move: move the player and then move the enemies
- if (e.getKeyCode() == KeyEvent.VK_DOWN) {
+ if (e.getKeyCode() == KeyEvent.VK_DOWN) {
herocrouching = true;
incKeysDown(DOWNDOWN);
setSomethingChangedSinceRepaint(true);
- }
- else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
+ } else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
incKeysDown(LEFTDOWN);
leftPressed(false);
setSomethingChangedSinceRepaint(true);
- }
- else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
+ } else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
incKeysDown(RIGHTDOWN);
rightPressed(false);
setSomethingChangedSinceRepaint(true);
- }
- else if (e.getKeyCode() == KeyEvent.VK_SPACE) {
+ } else if (e.getKeyCode() == KeyEvent.VK_SPACE) {
if (!jumping) {
startPosY = playerPosition.y;
jumping = true;
- onTheWayUp=true;
+ onTheWayUp = true;
setSomethingChangedSinceRepaint(true);
}
}
@@ -1080,149 +1062,157 @@ public class MarioGame extends Applet implements KeyListener, Runnable {
area.repaint();
}
} // if valid key press
- }
- else if (e.getKeyCode() == KeyEvent.VK_ENTER) {
- if (level == MAXLEVEL || dead) doLevel(level);
- else doLevel(++level);
- page=0;
+ } else if (e.getKeyCode() == KeyEvent.VK_ENTER) {
+ if (level == MAXLEVEL || dead)
+ doLevel(level);
+ else
+ doLevel(++level);
+ page = 0;
area.repaint();
}
}
-
- /*synchronized*/ void setSomethingChangedSinceRepaint(boolean val) {
+
+ /* synchronized */ void setSomethingChangedSinceRepaint(boolean val) {
somethingChangedSinceRepaint = val;
}
-
+
void leftPressed(boolean skid) {
if (!herocrouching) {
// if Hero was facing right, turn him left
- if (!heroleft)
+ if (!heroleft)
faceLeft();
else {
// if the target position is not occupied by a obstacle...
- for (int i=0; i < obstacleNumber; i++) {
- if (isObstaclePosition(new Point(playerPosition.x-XAMOUNT, playerPosition.y), true))
+ for (int i = 0; i < obstacleNumber; i++) {
+ if (isObstaclePosition(new Point(playerPosition.x - XAMOUNT, playerPosition.y), true))
return; // can't move
}
playerPosition.x -= XAMOUNT;
- if (!skid) incrementHeroImage();
+ if (!skid)
+ incrementHeroImage();
}
}
}
-
+
void rightPressed(boolean skid) {
if (!herocrouching) {
- if ((playerPosition.x + SPACE_FROM_X_TO_MARIO) >= (warpzone.x+4)) {
+ if ((playerPosition.x + SPACE_FROM_X_TO_MARIO) >= (warpzone.x + 4)) {
// level complete!
- ingame=false;
- }
- else {
+ ingame = false;
+ } else {
// if Hero was facing left, turn him right
- if (heroleft)
+ if (heroleft)
faceRight();
else {
- for (int i=0; i < obstacleNumber; i++) {
- if (isObstaclePosition(new Point(playerPosition.x+XAMOUNT, playerPosition.y), true))
+ for (int i = 0; i < obstacleNumber; i++) {
+ if (isObstaclePosition(new Point(playerPosition.x + XAMOUNT, playerPosition.y), true))
return; // can't move
}
playerPosition.x += XAMOUNT;
- //System.out.println("Mario's x position is " + playerPosition.x);
- if (!skid) incrementHeroImage();
+ // System.out.println("Mario's x position is " + playerPosition.x);
+ if (!skid)
+ incrementHeroImage();
}
}
}
}
-
+
boolean anythingVisibleChanged() {
- return(somethingChangedSinceRepaint);
+ return (somethingChangedSinceRepaint);
}
-
+
public void run() {
- boolean odd=true; // only change piranha image every other cycle
+ boolean odd = true; // only change piranha image every other cycle
while (true) {
if (juststarted) {
- try {Thread.sleep(750);}
- catch (Exception e) {}
+ try {
+ Thread.sleep(750);
+ } catch (Exception e) {
+ }
area.repaint();
juststarted = false;
}
- try {Thread.sleep(DELAY);}
- catch (InterruptedException e){}
+ try {
+ Thread.sleep(DELAY);
+ } catch (InterruptedException e) {
+ }
if (ingame) {
- if (keysdown[LEFTDOWN] == 0 &&
- keysdown[RIGHTDOWN] == 0 &&
- keysdown[DOWNDOWN] == 0) standStill();
-
+ if (keysdown[LEFTDOWN] == 0 && keysdown[RIGHTDOWN] == 0 && keysdown[DOWNDOWN] == 0)
+ standStill();
+
if (keysdown[LEFTDOWN] > 0) {
leftPressed(false);
setSomethingChangedSinceRepaint(true);
- }
- else if (keysdown[RIGHTDOWN] > 0) {
+ } else if (keysdown[RIGHTDOWN] > 0) {
rightPressed(false);
setSomethingChangedSinceRepaint(true);
}
-
+
if (!odd) {
// for each obstacle, cycle through the piranha pictures
- for (int i=0; i < obstacleNumber; i++) {
+ for (int i = 0; i < obstacleNumber; i++) {
if (piranhaPopping[i]) {
incrementObstacleImage(i);
- if (isVisibleObstacle(i)) setSomethingChangedSinceRepaint(true);
+ if (isVisibleObstacle(i))
+ setSomethingChangedSinceRepaint(true);
}
}
}
odd = !odd;
-
+
// for each enemy, move the enemy in the direction it was going
- for (int i=0; i < enemyNumber; i++) {
- // TODO if there is a fatal obstacle at that position, fall into it and decrement count of enemies
+ for (int i = 0; i < enemyNumber; i++) {
+ // TODO if there is a fatal obstacle at that position, fall into it and
+ // decrement count of enemies
// and set that enemy's position to -1, -1
/*
- if (isObstaclePosition(enemyPositions[i])) {
- showStatus("A enemy fell into a obstacle");
-
- enemyPositions[i] = new Point(-1, -1);
- enemiesRemaining--;
- showStatus(enemyNumber-enemiesRemaining + " down, " + enemiesRemaining + " to go...");
- }
- */
- // if there is a non-fatal obstacle
- if (isObstaclePosition(enemyPositions[i],false) && enemyType[i] != BANZAI) {
+ * if (isObstaclePosition(enemyPositions[i])) {
+ * System.out.Println("A enemy fell into a obstacle");
+ *
+ * enemyPositions[i] = new Point(-1, -1); enemiesRemaining--;
+ * System.out.Println(enemyNumber-enemiesRemaining + " down, " +
+ * enemiesRemaining + " to go..."); }
+ */
+ // if there is a non-fatal obstacle
+ if (isObstaclePosition(enemyPositions[i], false) && enemyType[i] != BANZAI) {
// change direction
changeDirection(i);
- if (isVisibleEnemy(i)) setSomethingChangedSinceRepaint(true);
+ if (isVisibleEnemy(i))
+ setSomethingChangedSinceRepaint(true);
}
if (!enemyDead[i]) {
enemyPositions[i] = move(i, enemyPositions[i], enemyDirection[i], odd);
- if (isVisibleEnemy(i)) setSomethingChangedSinceRepaint(true);
+ if (isVisibleEnemy(i))
+ setSomethingChangedSinceRepaint(true);
}
-
+
// if player is caught by a enemy, end the game
int enemyno = isEnemyPosition(playerPosition);
if (enemyno > -1) {
- int NEEDTOBEABOVE = enemyPositions[enemyno].y+enemyTopSpace[enemyno]-MARIOHEIGHT;
- if (easymode) NEEDTOBEABOVE = enemyPositions[enemyno].y-enemyHeight[enemyType[enemyno]];
- if ((!onTheWayUp && (playerPosition.y <=NEEDTOBEABOVE)) && enemyType[enemyno] != BANZAI) {
+ int NEEDTOBEABOVE = enemyPositions[enemyno].y + enemyTopSpace[enemyno] - MARIOHEIGHT;
+ if (easymode)
+ NEEDTOBEABOVE = enemyPositions[enemyno].y - enemyHeight[enemyType[enemyno]];
+ if ((!onTheWayUp && (playerPosition.y <= NEEDTOBEABOVE)) && enemyType[enemyno] != BANZAI) {
// player may have squished an enemy
if (enemyType[enemyno] == KOOPAREDFLYING) {
enemyType[enemyno] = KOOPARED;
enemyPositions[enemyno].y = KOOPAREDHEIGHT;
- if (enemyDirection[enemyno] == LEFT) enemyFaceLeft(enemyno);
- else enemyFaceRight(enemyno);
- }
- else {
- enemyDead[enemyno]=true;
+ if (enemyDirection[enemyno] == LEFT)
+ enemyFaceLeft(enemyno);
+ else
+ enemyFaceRight(enemyno);
+ } else {
+ enemyDead[enemyno] = true;
enemyDie(enemyno);
}
// player bounces
bouncing = true;
startPosY = playerPosition.y;
setSomethingChangedSinceRepaint(true);
- }
- else {
+ } else {
int offset = herocrouching ? MARIOCROUCHOFFSET : MARIOOFFSET;
- if (playerPosition.y > NEEDTOBEABOVE &&
- (playerPosition.y+offset <= enemyPositions[enemyno].y+enemySize[enemyType[enemyno]])) {
+ if (playerPosition.y > NEEDTOBEABOVE && (playerPosition.y
+ + offset <= enemyPositions[enemyno].y + enemySize[enemyType[enemyno]])) {
die();
setSomethingChangedSinceRepaint(true);
}
@@ -1231,151 +1221,151 @@ public class MarioGame extends Applet implements KeyListener, Runnable {
}
if (!dead) {
if (onTheWayUp) {
- if (playerPosition.y > startPosY-JUMPAMOUNT) {
+ if (playerPosition.y > startPosY - JUMPAMOUNT) {
playerPosition = new Point(playerPosition.x, playerPosition.y - RISEAMOUNT);
setSomethingChangedSinceRepaint(true);
+ } else {
+ onTheWayUp = false;
}
- else {
- onTheWayUp=false;
- }
- }
- else if (bouncing) {
- if (playerPosition.y > startPosY-BOUNCEAMOUNT) {
+ } else if (bouncing) {
+ if (playerPosition.y > startPosY - BOUNCEAMOUNT) {
playerPosition = new Point(playerPosition.x, playerPosition.y - RISEAMOUNT);
setSomethingChangedSinceRepaint(true);
- }
- else {
- bouncing=false;
+ } else {
+ bouncing = false;
wasbouncing = true;
}
- }
- else {
+ } else {
int obstacleno = isObstacleX(playerPosition, true);
if (obstacleno == -1) { // no obstacle at this position
if (!onTheWayUp && !bouncing) {
if (playerPosition.y < startPosY) {
- playerPosition = new Point(playerPosition.x, playerPosition.y+FALLAMOUNT);
+ playerPosition = new Point(playerPosition.x, playerPosition.y + FALLAMOUNT);
if (playerPosition.y >= GROUNDLEVEL && floorIsIcy()) {
if (!wasbouncing) {
- if (heroleft) skidLeft();
- else skidRight();
+ if (heroleft)
+ skidLeft();
+ else
+ skidRight();
}
}
wasbouncing = false;
setSomethingChangedSinceRepaint(true);
- }
- else jumping = false;
+ } else
+ jumping = false;
}
- }
- else {
+ } else {
Point obstaclepos = obstaclePositions[obstacleno];
// if hero's y position <= obstacle's height
- int thisObstacleHeight = isTall[obstacleno] ? OBSTACLEHEIGHT+TALLOBSTACLEDIFF : OBSTACLEHEIGHT;
- if (playerPosition.y <= (obstaclepos.y-thisObstacleHeight) && // can't land on the obstacle if just < (??!)
- (playerPosition.y+FALLAMOUNT >= (obstaclepos.y-thisObstacleHeight))
- ) {
+ int thisObstacleHeight = isTall[obstacleno] ? OBSTACLEHEIGHT + TALLOBSTACLEDIFF
+ : OBSTACLEHEIGHT;
+ if (playerPosition.y <= (obstaclepos.y - thisObstacleHeight) && // can't land on the
+ // obstacle if just < (??!)
+ (playerPosition.y + FALLAMOUNT >= (obstaclepos.y - thisObstacleHeight))) {
// allow hero to land on the obstacle
- jumping=false;
- if (playerPosition.y != obstaclepos.y-thisObstacleHeight) setSomethingChangedSinceRepaint(true);
- playerPosition = new Point(playerPosition.x, obstaclepos.y-thisObstacleHeight);
+ jumping = false;
+ if (playerPosition.y != obstaclepos.y - thisObstacleHeight)
+ setSomethingChangedSinceRepaint(true);
+ playerPosition = new Point(playerPosition.x, obstaclepos.y - thisObstacleHeight);
// if the piranha was up, Hero dies
if (obstacleImages[obstacleImageNo[obstacleno]] != area.obstacle) {
die();
- }
- else {
+ } else {
// otherwise stop this Piranha
piranhaPopping[obstacleno] = false;
}
- }
- else {
+ } else {
if (!onTheWayUp && !bouncing) {
if (playerPosition.y < startPosY) {
setSomethingChangedSinceRepaint(true);
- playerPosition = new Point(playerPosition.x, playerPosition.y+FALLAMOUNT);
+ playerPosition = new Point(playerPosition.x, playerPosition.y + FALLAMOUNT);
if (playerPosition.y >= GROUNDLEVEL && floorIsIcy()) {
if (!wasbouncing) {
- if (heroleft) skidLeft();
- else skidRight();
+ if (heroleft)
+ skidLeft();
+ else
+ skidRight();
}
}
wasbouncing = false;
- }
- else jumping = false;
+ } else
+ jumping = false;
}
}
- }
+ }
}
if (!dead) {
checkIfBlockingObstacle(playerPosition);
- if (playerPosition.y > GROUNDLEVEL) playerPosition.y = GROUNDLEVEL;
+ if (playerPosition.y > GROUNDLEVEL)
+ playerPosition.y = GROUNDLEVEL;
}
if (anythingVisibleChanged()) {
- area.repaint();
+ area.repaint();
}
- }
- else {
- if (!area.showingMessage)
- area.repaint();
+ } else {
+ if (!area.showingMessage)
+ area.repaint();
}
}
}
}
-
+
boolean isVisibleObstacle(int i) {
// TODO - this probably needs fixing when obstacle is near page boundary
- return ((obstaclePositions[i].x >= page*PAGEWIDTH) &&
- (obstaclePositions[i].x < (page+1)*PAGEWIDTH));
+ return ((obstaclePositions[i].x >= page * PAGEWIDTH) && (obstaclePositions[i].x < (page + 1) * PAGEWIDTH));
}
-
+
boolean isVisibleEnemy(int i) {
// TODO - this probably needs fixing when enemy is near page boundary
- return ((enemyPositions[i].x >= page*PAGEWIDTH) &&
- (enemyPositions[i].x < (page+1)*PAGEWIDTH) && !enemyDead[i]);
+ return ((enemyPositions[i].x >= page * PAGEWIDTH) && (enemyPositions[i].x < (page + 1) * PAGEWIDTH)
+ && !enemyDead[i]);
}
-
+
void changeDirection(int enemyno) {
if (enemyDirection[enemyno] == LEFT) {
enemyFaceRight(enemyno);
- }
- else {
+ } else {
enemyFaceLeft(enemyno);
}
}
-
+
synchronized void die() {
- showStatus("The Player is dead. Press the Enter key to restart the level");
- ingame=false;
+ System.out.println("The Player is dead. Press the Enter key to restart the level");
+ ingame = false;
dead = true;
displayStatus();
}
-
+
synchronized void incrementObstacleImage(int i) {
obstacleImageNo[i]++;
- if (obstacleImageNo[i] == OBSTACLEIMAGES) obstacleImageNo[i] = 0;
+ if (obstacleImageNo[i] == OBSTACLEIMAGES)
+ obstacleImageNo[i] = 0;
}
-
+
synchronized void incrementHeroImage() {
heroImageNo++;
- if (heroImageNo == HEROIMAGES) heroImageNo = 0;
+ if (heroImageNo == HEROIMAGES)
+ heroImageNo = 0;
}
-
+
synchronized void incrementEnemyImage(int i) {
enemyImageNo[i]++;
if (enemyType[i] == WIGGLER) {
- if (enemyImageNo[i] > (ENEMYIMAGES-1) ) enemyImageNo[i] = 0;
- }
- else {
- if (enemyImageNo[i] > (ENEMYIMAGES-2) ) enemyImageNo[i] = 0;
+ if (enemyImageNo[i] > (ENEMYIMAGES - 1))
+ enemyImageNo[i] = 0;
+ } else {
+ if (enemyImageNo[i] > (ENEMYIMAGES - 2))
+ enemyImageNo[i] = 0;
}
}
-
+
Point move(int enemyNo, Point start, int direction, boolean odd) {
- if (odd) incrementEnemyImage(enemyNo);
+ if (odd)
+ incrementEnemyImage(enemyNo);
if (direction == LEFT) {
- return(new Point(start.x -enemyMove[enemyType[enemyNo]], start.y));
- }
- else {
- return(new Point(start.x +enemyMove[enemyType[enemyNo]], start.y));
+ return (new Point(start.x - enemyMove[enemyType[enemyNo]], start.y));
+ } else {
+ return (new Point(start.x + enemyMove[enemyType[enemyNo]], start.y));
}
}
@@ -1383,135 +1373,137 @@ public class MarioGame extends Applet implements KeyListener, Runnable {
if (e.getKeyCode() == KeyEvent.VK_DOWN) {
herocrouching = false;
decKeysDown(DOWNDOWN);
- }
- else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
+ } else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
if (floorIsIcy()) {
- skidLeft();
+ skidLeft();
}
decKeysDown(LEFTDOWN);
- }
- else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
+ } else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
if (floorIsIcy()) {
- skidRight();
+ skidRight();
}
decKeysDown(RIGHTDOWN);
}
}
-
+
public void keyTyped(KeyEvent e) {
}
-
+
synchronized Image getHeroImage() {
- return(heroImages[heroImageNo]);
+ return (heroImages[heroImageNo]);
}
synchronized Image getObstacleImage(int obstaclenum) {
- return(obstacleImages[obstacleImageNo[obstaclenum]]);
+ return (obstacleImages[obstacleImageNo[obstaclenum]]);
}
-
+
synchronized Image getEnemyImage(int enemyno) {
- return(enemyImage[enemyno][enemyImageNo[enemyno]]);
+ return (enemyImage[enemyno][enemyImageNo[enemyno]]);
}
-
+
boolean floorIsIcy() {
- return(floors[level-1] == area.icefloor);
+ return (floors[level - 1] == area.icefloor);
}
-
+
void skidLeft() {
for (int i = 0; i < 6; i++) {
leftPressed(true);
- try {Thread.sleep(7);}
- catch (Exception e) {}
+ try {
+ Thread.sleep(7);
+ } catch (Exception e) {
+ }
area.repaint();
}
}
-
+
void skidRight() {
for (int i = 0; i < 6; i++) {
rightPressed(true);
area.repaint();
- try {Thread.sleep(7);}
- catch (Exception e) {}
+ try {
+ Thread.sleep(7);
+ } catch (Exception e) {
+ }
}
}
void displayStatus() {
/*
- // when a certain F Key is pressed, display positions of Mario,
- // all pipes and all enemies and the end flag (warp zone)
- System.out.println("--------");
- System.out.println("Mario is " + (dead? "dead" : "alive"));
- if (dead) {
- int enemyno = isEnemyPosition(playerPosition);
- System.out.println("Mario was killed by enemy " + enemyno);
- }
- System.out.println("In game is " + ingame);
- System.out.println("Mario is " + (onTheWayUp? "on the way up" : "not on the way up"));
- System.out.println("Mario's position is (" + playerPosition.x + ", " + playerPosition.y + ")");
- System.out.println("Mario's visible left, bottom co-ordinates are " + (playerPosition.x + 55) + " and " + (playerPosition.y + MARIOHEIGHT));
- System.out.println("Mario is on page " + page + " (which shows x positions from " + (page*PAGEWIDTH) + " to " + ((page+1)*PAGEWIDTH) + ")");
- System.out.println("Screen bounds are (" + getBounds().width + ", " + getBounds().height + ")");
- System.out.println("");
- for (int enemy=0; enemy < enemyNumber; enemy++) {
- System.out.println("Enemy " + enemy + " is " + enemyTypeString(enemyType[enemy]) + " and is " +
- (enemyDead[enemy] ? " " : "not ") + "dead");
- System.out.println("Enemy " + enemy + " is at position (" + enemyPositions[enemy].x +
- ", " + enemyPositions[enemy].y+") and has size " + enemySize[enemyType[enemy]]);
- }
- //System.out.println("");
- //for (int obstacle=0; obstacle < obstacleNumber; obstacle++) {
- // System.out.println("Obstacle " + obstacle + " is at position (" + obstaclePositions[obstacle].x +
- // ", " + obstaclePositions[obstacle].y+")");
- //}
- System.out.println("");
- System.out.println("The warp zone is positioned at (" + warpzone.x + ", " + warpzone.y + ")");
- System.out.println("========");
- */
+ * // when a certain F Key is pressed, display positions of Mario, // all pipes
+ * and all enemies and the end flag (warp zone) System.out.println("--------");
+ * System.out.println("Mario is " + (dead? "dead" : "alive")); if (dead) { int
+ * enemyno = isEnemyPosition(playerPosition);
+ * System.out.println("Mario was killed by enemy " + enemyno); }
+ * System.out.println("In game is " + ingame); System.out.println("Mario is " +
+ * (onTheWayUp? "on the way up" : "not on the way up"));
+ * System.out.println("Mario's position is (" + playerPosition.x + ", " +
+ * playerPosition.y + ")");
+ * System.out.println("Mario's visible left, bottom co-ordinates are " +
+ * (playerPosition.x + 55) + " and " + (playerPosition.y + MARIOHEIGHT));
+ * System.out.println("Mario is on page " + page +
+ * " (which shows x positions from " + (page*PAGEWIDTH) + " to " +
+ * ((page+1)*PAGEWIDTH) + ")"); System.out.println("Screen bounds are (" +
+ * getBounds().width + ", " + getBounds().height + ")"); System.out.println("");
+ * for (int enemy=0; enemy < enemyNumber; enemy++) { System.out.println("Enemy "
+ * + enemy + " is " + enemyTypeString(enemyType[enemy]) + " and is " +
+ * (enemyDead[enemy] ? " " : "not ") + "dead"); System.out.println("Enemy " +
+ * enemy + " is at position (" + enemyPositions[enemy].x + ", " +
+ * enemyPositions[enemy].y+") and has size " + enemySize[enemyType[enemy]]); }
+ * //System.out.println(""); //for (int obstacle=0; obstacle < obstacleNumber;
+ * obstacle++) { // System.out.println("Obstacle " + obstacle +
+ * " is at position (" + obstaclePositions[obstacle].x + // ", " +
+ * obstaclePositions[obstacle].y+")"); //} System.out.println("");
+ * System.out.println("The warp zone is positioned at (" + warpzone.x + ", " +
+ * warpzone.y + ")"); System.out.println("========");
+ */
}
-
+
String enemyTypeString(int fortype) {
switch (fortype) {
- case GOOMBA:
- return("GOOMBA");
- case KOOPARED:
- return("KOOPA RED");
- case KOOPAGREEN:
- return("KOOPA GREEN");
- case KOOPAREDFLYING:
- return("KOOPA RED FLYING");
- case BANZAI:
- return("BANZAI");
- case WIGGLER:
- return("WIGGLER");
- case BOO:
- return("BOO");
- case FIREBOO:
- return("FOREBOO");
- case BOBOMB:
- return("BOBOMB");
- case BULLET:
- return("BULLET");
- case WARSHIP:
- return("WARSHIP");
- case YETI:
- return("YETI");
- case FLYER:
- return("FLYER");
- default:
- return("Unknown type (" + fortype + ")");
+ case GOOMBA:
+ return ("GOOMBA");
+ case KOOPARED:
+ return ("KOOPA RED");
+ case KOOPAGREEN:
+ return ("KOOPA GREEN");
+ case KOOPAREDFLYING:
+ return ("KOOPA RED FLYING");
+ case BANZAI:
+ return ("BANZAI");
+ case WIGGLER:
+ return ("WIGGLER");
+ case BOO:
+ return ("BOO");
+ case FIREBOO:
+ return ("FOREBOO");
+ case BOBOMB:
+ return ("BOBOMB");
+ case BULLET:
+ return ("BULLET");
+ case WARSHIP:
+ return ("WARSHIP");
+ case YETI:
+ return ("YETI");
+ case FLYER:
+ return ("FLYER");
+ default:
+ return ("Unknown type (" + fortype + ")");
}
}
-
+
void changePageIfNecessary() {
- if (playerPosition.x == LEFTEDGE) return;
- if ((playerPosition.x+SPACE_FROM_X_TO_MARIO) > (page*PAGEWIDTH+RIGHTEDGE-XAMOUNT)) {
- //System.out.println("Change page up: (" + playerPosition.x+ "+" + SPACE_FROM_X_TO_MARIO+ ") > (" + page+ "*" + PAGEWIDTH + "+" + RIGHTEDGE + "-" + XAMOUNT + ")");
+ if (playerPosition.x == LEFTEDGE)
+ return;
+ if ((playerPosition.x + SPACE_FROM_X_TO_MARIO) > (page * PAGEWIDTH + RIGHTEDGE - XAMOUNT)) {
+ // System.out.println("Change page up: (" + playerPosition.x+ "+" +
+ // SPACE_FROM_X_TO_MARIO+ ") > (" + page+ "*" + PAGEWIDTH + "+" + RIGHTEDGE +
+ // "-" + XAMOUNT + ")");
page++;
- }
- else if ((playerPosition.x+SPACE_FROM_X_TO_MARIO)-(page*PAGEWIDTH) < (LEFTEDGE+XAMOUNT)) {
- //System.out.println("Change page down: (" + playerPosition.x+ "+" + SPACE_FROM_X_TO_MARIO+ ")-(" + page+ "*" + PAGEWIDTH + ") < (" + LEFTEDGE+ "+" + XAMOUNT+")");
- page--;
+ } else if ((playerPosition.x + SPACE_FROM_X_TO_MARIO) - (page * PAGEWIDTH) < (LEFTEDGE + XAMOUNT)) {
+ // System.out.println("Change page down: (" + playerPosition.x+ "+" +
+ // SPACE_FROM_X_TO_MARIO+ ")-(" + page+ "*" + PAGEWIDTH + ") < (" + LEFTEDGE+
+ // "+" + XAMOUNT+")");
+ page--;
}
}
}
-
diff --git a/Zombie/src/ZombieArea.java b/Zombie/src/ZombieArea.java
@@ -34,6 +34,8 @@ public class ZombieArea extends JPanel implements ActionListener {
@Override
public void paintComponent(Graphics g) {
+ super.paintComponent(g);
+
if (myApplet == null) return;
final int w = getBounds().width;
final int h = getBounds().height;