package examples.matrixminer; import jgame.*; import jgame.platform.*; import examples.StdMazeMonster; import examples.StdMazePlayer; public class MatrixMiner extends StdGame { JGColor intro_color = new JGColor(60,100,255); public static void main(String [] args) { new MatrixMiner(parseSizeArgs(args,0)); } public MatrixMiner() { initEngineApplet();} public MatrixMiner(JGPoint size) { initEngine(size.x,size.y); } public void initCanvas() { setCanvasSettings(19,15,16,16,intro_color,null,null); setScalingPreferences(3.0/4.0,4.0/3.0, 0,5,5,5); } public void initGame() { defineMedia("matrix_miner.tbl"); setVideoSyncedUpdate(true); if (isMidlet()) { setFrameRate(12,1); setGameSpeed(2.0); } else { setFrameRate(40,4); } lifelost_ingame=true; startgame_ticks=0; gameover_ticks=0; leveldone_ticks=120; defineLevel(); } String bonus_msg; Player player=null; public void doFrameInGame() { moveObjects(); checkCollision(1,8); // player hits goodies checkCollision(2+16,1); // enemies and enemy bullets hit player checkCollision(2,32); // enemies hit goodies checkCollision(4,2); // bullets hit robots checkBGCollision(1,4+16); // walls hit bullets if (checkTime((int)(gametime < 30+4*level ? 5 : 55-level*3 )) ) { String enemy_gfx = "enemy"+(1+stage%3)+"_"; switch ((int)random(0,4)) { case 0: new Enemy(enemy_gfx,(int)random(1,19,2), -0.8, 0, 1); break; case 1: new Enemy(enemy_gfx,(int)random(1,19,2), 14.8, 0, -1); break; case 2: new Enemy(enemy_gfx,-0.8,(int)random(1,15,2), 1,0); break; case 3: new Enemy(enemy_gfx,18.8,(int)random(1,15,2),-1,0); break; } } if (countObjects("@goodie",8)==0) { int bonus = countObjects("@goodie",0); if (bonus < 20) { bonus_msg = "25 X "+bonus+"..."+(25*bonus)+" PTS"; score += 25*bonus; } else { bonus_msg = "PERFECT! 1000 PTS"; score += 1000; } removeObjects(null,0); playAudio("leveldone"); levelDone(); } } public void incrementLevel() { if (level<9) level++; stage++; } JGFont scorefont = new JGFont("Helvetica",0,18); public void paintFrame() { setColor(JGColor.white); //drawImageString(""+score,0,0,-1,"font_map",32,2); setFont(scorefont); drawString(""+score,16,0,-1); for (int i=1; i y+8) ydir = -1; if (player.xdir!=0 && player.y < y-8) ydir = 1; if (player.ydir!=0 && player.x > x+8) xdir = -1; if (player.ydir!=0 && player.x < x-8) xdir = 1; if (!and(getTileCid(getCenterTile(),xdir,ydir),1)) { clearBBox(); x += xdir*16; y += ydir*16; is_in_tile=false; score += 5; playAudio("extract"); } } else { // player collects goodie colid=32; // put goodie at beginning of linked list if (((Player)obj).following!=null) ((Player)obj).following.to_follow=this; ((Player)obj).following=this; to_follow=obj; prevpos = new JGPoint[(int)(6/gamespeed)]; for (int i=0; i 0) bullettimer--; if (!isOnPF(0,0)) remove(); } public void hit(JGObject o) { playAudio("explo"); for (int i=0; i < (isMidlet() ? 5 : 8); i++) new JGObject("explo",true,x,y,0,"explo", random(-2,2),random(-2,2), (int)random(8,32) ); o.remove(); remove(); score += 5; } } }