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();

}

}

[12156 byte] By [coffee95a] at [2007-11-27 2:37:57]
# 1
try debugging it a little, and giving us a snippet of code that you think is suspect. Nobody wants to read your entire pile of code and debug if for you.help us help you :)
pandora_fooa at 2007-7-12 2:58:40 > top of Java-index,Java Mobility Forums,Java ME Technologies...
# 2
Thanks, that helped me a lot...What was I thinking? Here is not the place to submit code...
coffee95a at 2007-7-12 2:58:40 > top of Java-index,Java Mobility Forums,Java ME Technologies...
# 3

despite your sarcasm, yes, you're right, this isn't a place to submit code. it's a place to ask questions about it, and discuss it with others.

but if you want to know how to fix your code that you posted, read the API for the LayerManager.append() method here:

http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/lcdui/game/LayerManager.html#append(javax.microedition.lcdui.game.Layer)

all you have to do is switch your layer append ordering. your sprites are behind your tiledCenary layer.

sufficient? ;)

-neil

pandora_fooa at 2007-7-12 2:58:40 > top of Java-index,Java Mobility Forums,Java ME Technologies...