import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
public class Midlet extends MIDlet {
cv c=new cv();
public void startApp() {
Display.getDisplay(this).setCurrent(c);
c.start();
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}
class cv extends GameCanvas implements Runnable{
Graphics g;
TiledLayer tl;
int w,h,xa,ya,ia,xb=0;
int fr=0,x=w/2-9,y=h/2-9,f=5;
Image im,img,im1;
Sprite sp,spz;
boolean bl=false;
int[][] map={
{1,2,1,2,2,2,1,2,1,2,1,2,1,2,2,2,1,2,2,1,2,2,2,1,1,2,2,1,2,2},
{2,2,2,2,2,2,1,1,1,1,2,1,2,1,2,2,1,1,2,1,2,1,2,2,2,1,1,1,1,1},
{1,1,1,1,1,2,1,1,1,2,1,1,1,2,2,2,1,2,2,1,2,2,2,1,1,2,2,1,2,2},
{2,2,1,2,1,2,1,1,1,1,2,1,2,1,2,2,1,1,2,1,2,1,2,2,2,1,1,1,1,1},
{1,2,1,1,1,2,1,2,1,2,1,1,1,1,2,1,1,2,2,1,2,2,2,1,1,2,2,1,2,2},
{2,2,1,1,1,2,1,1,1,1,2,1,2,1,2,2,1,1,2,1,2,1,2,2,2,1,1,1,1,1},
{1,2,1,2,2,2,1,2,1,2,1,2,1,2,2,2,1,2,2,1,2,2,2,1,1,2,2,1,2,2},
{2,2,2,1,2,2,1,1,1,2,2,1,1,1,2,2,1,1,2,1,2,1,2,2,2,1,1,1,1,1},
{1,2,1,2,2,2,1,2,1,2,1,2,1,2,2,2,1,2,2,1,2,2,2,1,1,2,2,1,2,2},
{2,1,2,1,2,2,1,1,1,1,2,1,2,1,2,2,1,1,2,1,2,1,2,2,2,1,1,1,1,1}};
public cv(){
super(false);
setFullScreenMode(true);
w=getWidth();
h=getHeight();
tl=new TiledLayer(30,10,im1,16,16);
g=getGraphics();
try{
im1=Image.createImage("/map.png");
im=Image.createImage("/nv.png");
img=Image.createImage("/skil.png");
}catch(Exception exc){}
sp=new Sprite(im,18,18);
spz=new Sprite(img,18,5);
for(int i=0;i<30;i++){
for(int in=0;in<10;in++){
tl.setCell(i,in,map[in][i]);
}}}
public void start(){
new Thread(this).start();
}
public void run(){
while(true){
key();
pain(g);
try{
Thread.sleep(30);
}catch(Exception exc){}
}}
public void key(){
int k=getKeyStates();
if(k==RIGHT_PRESSED){
if(x<=w-18){
if(f>4&&f<10){
x+=4;
xa=x+18;
f++;}else{
x+=4;
f=5;}}}
if(k==DOWN_PRESSED){
if(y<h-18){
if(f>9&&f<15){
y+=4;
ya=y+18;
f++;}else{
y+=4;
f=10;}}}
if(k==LEFT_PRESSED){
if(x>0){
if(f>14&&f<=19){
x-=4;
xa=x-18;
f++;}else{
x-=4;
f=15;}}}
if(k==UP_PRESSED){
if(y>0){
if(f<5){
y-=4;
ya=y-18;
f++;}else{
y-=4;
f=0;}}}
if(k==FIRE_PRESSED&&xa==x-18){
bl=true;
ia=1;}
if(k==FIRE_PRESSED&&xa==x+18){
bl=true;
ia=2;}
if(k==FIRE_PRESSED&&ya==y+18){
bl=true;
ia=3;}
if(k==FIRE_PRESSED&&ya==y-18){
bl=true;
ia=4;}}
public void pain(Graphics g){
g.setColor(0);
g.fillRect(0,0,w,h);
g.translate(xb,0);
if(xb>0){xb=0;}
if(xb<-tl.getWidth()+w){
xb=-tl.getWidth()+w;}
tl.setPosition(0,0);
tl.paint(g);
sp.setPosition(x,y);
sp.setFrame(f);
sp.paint(g);
if(bl){
spz.setPosition(xa,ya);
spz.setFrame(fr);
spz.paint(g);
if(ia==1){xa-=3;}
if(ia==2){xa+=3;}
if(ia==3){ya+=3;}
if(ia==4){ya-=3;}
if(fr>2){fr=0;}
if(xa<0){bl=false;}
if(xa>w){bl=false;}
if(ya<0){bl=false;}
if(ya>h){bl=false;}
}
flushGraphics();}}Fi