game over, game over
The Midlet starts but it can't see the sprites at all. Just the tiled layer. And the only thing shown on console is:
GAME OVER
GAME OVER
So what's wrong on on my code? See it:
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import javax.microedition.media.*;
import java.io.InputStream;
publicclass GameCanvasClassextends GameCanvasimplements Runnable{
privateboolean playing;
// TiledLayer.
private TiledLayer tiledCenary;
// Layer.
private LayerManager layer1 =new LayerManager();
// Game settings;
publicstaticint gameLevel = 0;
publicstaticint numLives = 3;
publicstaticint MAX_ENEMIES = 4;
publicstaticfinalint NUMBER_LEVELS = 10;
publicstaticboolean[] doneBuildLevel =newboolean[10];
// Sprites.
private CharacterClass player;
private CharacterClass[] enemy =new CharacterClass[4];
// Sounds.
private Player playerSound;
// Thread.
private Thread thread;
/** Creates a new instance of GameCanvasClass */
public GameCanvasClass()throws Exception{
super(true);
for(int i = 0; i < 10; i++)
doneBuildLevel[i] =false;
Image image = Image.createImage("/bear.PNG");
player =new CharacterClass(image, 16, 16);
player.setPosition(16, 16);
}
publicvoid start()throws Exception{
playing =true;
thread =new Thread(this);
thread.start();
try{
InputStream is = getClass().getResourceAsStream("background.mid");
playerSound = Manager.createPlayer(is,"audio/midi");
playerSound.realize();
playerSound.prefetch();
playerSound.start();
}
catch(Exception e){
System.out.println(e);
}
}
publicvoid run(){
try{
setupGameLevel(gameLevel);
}
catch(Exception e){
e.printStackTrace();
}
Graphics g = getGraphics();
while(playing ==true){
drawGameScreen(g);
checkCollision(MAX_ENEMIES);
checkInput();
moveEnemies(MAX_ENEMIES);
try{
Thread.sleep(15);
}
catch(InterruptedException ie){
}
}
}
publicvoid stop(){
playing =false;
numLives--;
// Restart position of player and enemies.
player.setPosition(16, 16);
enemy[0].setPosition(190, 32);
enemy[1].setPosition(32, 132);
enemy[2].setPosition(175, 170);
enemy[3].setPosition(94, 80);
if(numLives >= 1 )
playing =true;
else{
System.out.println("GAME OVER");
try{
if(playerSound !=null){
playerSound.stop();
playerSound.close();
playerSound =null;
}
}
catch(Exception e){
System.out.println(e);
}
}
}
privatevoid setupGameLevel(int level)throws Exception{
if( (level == 0) && (doneBuildLevel[level] ==false) ){
// Building cenary for the first level.
tiledCenary = TiledLayerClass.buildTiledCenary(gameLevel);
// Append to the layer.
layer1.append(tiledCenary);
layer1.append(player);
doneBuildLevel[level] =true;
Image imagem = Image.createImage("/enemy1.PNG");
for(int i = 0; i < 4; i++){
enemy[i] =new CharacterClass(imagem, 16, 16);
enemy[i].setDirectionLeft(true);
enemy[i].setDirectionRight(false);
layer1.append(enemy[i]);
}
enemy[0].setPosition(190, 32);
enemy[1].setPosition(32, 132);
enemy[2].setPosition(175, 170);
enemy[3].setPosition(94, 80);
}
}
privatevoid checkInput(){
int keyState = getKeyStates();
if( (keyState & UP_PRESSED) != 0){
player.setPosition(player.getPosX(), player.getPosY() - 1);
}
if( (keyState & DOWN_PRESSED) != 0){
player.setPosition(player.getPosX(), player.getPosY() + 1);
}
if( (keyState & RIGHT_PRESSED) != 0){
player.setPosition(player.getPosX() + 1, player.getPosY());
}
if( (keyState & LEFT_PRESSED) != 0){
player.setPosition(player.getPosX() - 1, player.getPosY());
}
}
/* Check collision of player against cenary, enemies, itens. Also check collision of all enemies against cenary.
Method must receive the number of enemies on the current level. */
privatevoid checkCollision(int numberEnemies){
if(player.collidesWith(tiledCenary,true)){
// TODO SOMETHING...
}
for(int i = 0; i < numberEnemies; i++){
if(player.collidesWith(enemy[i],true))
stop();
if(enemy[i].collidesWith(tiledCenary,true)){
if(enemy[i].getDirectionRight() ==true){
enemy[i].setDirectionRight(false);
enemy[i].setDirectionLeft(true);
}
elseif(enemy[i].getDirectionLeft() ==true){
enemy[i].setDirectionLeft(false);
enemy[i].setDirectionRight(true);
}
}
}
}
privatevoid moveEnemies(int numberEnemies){
for(int i = 0; i < numberEnemies; i++)
if(enemy[i].getDirectionLeft() ==true)
enemy[i].setPosition(enemy[i].getPosX() - 1, enemy[i].getPosY());
elseif(enemy[i].getDirectionRight() ==true)
enemy[i].setPosition(enemy[i].getPosX() + 1, enemy[i].getPosY());
}
privatevoid drawGameScreen(Graphics g){
g.fillRect(0, 0, 256, 256);
player.setPosition(player.getPosX(), player.getPosY());
for(int i = 0; i < MAX_ENEMIES; i++)
enemy[i].setPosition(enemy[i].getPosX(), enemy[i].getPosY());
layer1.setViewWindow(player.getPosX() - 32, player.getPosY() - 32, 128, 110);
layer1.paint(g, 0, 0);
g.setColor(0, 0, 0);
flushGraphics();
}
}

