?? maincanvas.java
字號:
import java.io.*;
import javax.microedition.lcdui.*;
/*
import com.nokia.mid.ui.FullCanvas;
import com.nokia.mid.ui.DirectGraphics;
import com.nokia.mid.ui.DirectUtils;
import com.nokia.mid.sound.Sound;
*/
class mainCanvas extends Canvas
{
public int touchNum;
public int gameResult;
public int status;
int WIDTH;
int HEIGHT;
Image street;
Image streetback;
Image car[];
Image biao[];
Image post[];
Image strike;
Image girl[];
public final int CONLEVEL2NUM=90;
public int level2Num;
int carposition; //每一道占的寬度
////////////////////
public int ZAtype;//0:biao; 1:post; 2:girl;
public int ZAlayer; // 2: 外道 3: 里道
public int ZAXposition; //一個小于零的隨機整數,每次刷新加上位移ZAspeed;
int ZAspeed=5;
int ZAbomXspeed=20;
int ZAbomYspeed=15;
//public int ZAYposition;
public boolean valid;//當前是否有個物體,真:有;
public int touch ; //平常為0;碰上后每次刷新遞增。隨著它的遞增,每個視圖都會改變,每次ZAspeed變化會加大,y方向也會有增量;
int carlayer ;
int carno;
/*
private final byte[] data = {
(byte)0x02, (byte)0x4a, (byte)0x3a, (byte)0x40,
(byte)0x04, (byte)0x01, (byte)0xd9, (byte)0x1a,
(byte)0xa3, (byte)0x0d, (byte)0x59, (byte)0x3a,
(byte)0xa0, (byte)0xd3, (byte)0x56, (byte)0x4e,
(byte)0xa8, (byte)0x39, (byte)0x12, (byte)0x14,
(byte)0x51, (byte)0x1a, (byte)0x13, (byte)0x69,
(byte)0xc8, (byte)0x2c, (byte)0xad, (byte)0x4a,
(byte)0xb0, (byte)0xac, (byte)0x08, (byte)0x50,
(byte)0x85, (byte)0x14, (byte)0x5e, (byte)0xa6,
(byte)0x18, (byte)0x42, (byte)0x07, (byte)0x2a,
(byte)0x93, (byte)0x91, (byte)0x21, (byte)0x42,
(byte)0x14, (byte)0x59, (byte)0x8a, (byte)0xa8,
(byte)0xc3, (byte)0x08, (byte)0x50, (byte)0x85,
(byte)0x16, (byte)0x62, (byte)0xa9, (byte)0x26,
(byte)0xc5, (byte)0x13, (byte)0x61, (byte)0x0a,
(byte)0x10, (byte)0xa2, (byte)0xca, (byte)0xc0,
(byte)0xba, (byte)0x0d, (byte)0x30, (byte)0x85,
(byte)0x0c, (byte)0x55, (byte)0x24, (byte)0xd8,
(byte)0x42, (byte)0x04, (byte)0x28, (byte)0x4e,
(byte)0x05, (byte)0x60, (byte)0xa2, (byte)0xf5,
(byte)0x21, (byte)0x45, (byte)0x93, (byte)0x69,
(byte)0x08, (byte)0x13, (byte)0x89, (byte)0x3a,
(byte)0x93, (byte)0x61, (byte)0x08, (byte)0x24,
(byte)0x8d, (byte)0x49, (byte)0xb5, (byte)0x47,
(byte)0x20, (byte)0x42, (byte)0x0b, (byte)0x2a,
(byte)0xc2, (byte)0xb5, (byte)0x49, (byte)0x58,
(byte)0x90, (byte)0xa1, (byte)0x0a, (byte)0x2c,
(byte)0x8d, (byte)0x54, (byte)0x61, (byte)0x84,
(byte)0x28, (byte)0x72, (byte)0x04, (byte)0x28,
(byte)0xb3, (byte)0x51, (byte)0x35, (byte)0x13,
(byte)0x51, (byte)0x35, (byte)0x13, (byte)0x4c,
(byte)0x34, (byte)0xc2, (byte)0x14, (byte)0x49,
(byte)0x74, (byte)0x2c, (byte)0xe3, (byte)0x14,
(byte)0x72, (byte)0x24, (byte)0x20, (byte)0x42,
(byte)0x8b, (byte)0x23, (byte)0x44, (byte)0x98,
(byte)0x81, (byte)0x08, (byte)0x10, (byte)0xa2,
(byte)0x0d, (byte)0x55, (byte)0x27, (byte)0x2a,
(byte)0x42, (byte)0x0b, (byte)0x27, (byte)0x42,
(byte)0x68, (byte)0x2b, (byte)0x12, (byte)0x10,
(byte)0x21, (byte)0x45, (byte)0x11, (byte)0xa1,
(byte)0x86, (byte)0x90, (byte)0x81, (byte)0x36,
(byte)0x2c, (byte)0x9b, (byte)0x08, (byte)0x40,
(byte)0x85, (byte)0x09, (byte)0xa0, (byte)0x84,
(byte)0x08, (byte)0x51, (byte)0x46, (byte)0x1a,
(byte)0x42, (byte)0x0b, (byte)0x34, (byte)0x94,
(byte)0x98, (byte)0x6a, (byte)0xcb, (byte)0xd5,
(byte)0x47, (byte)0x10, (byte)0xb2, (byte)0xb1,
(byte)0x2b, (byte)0x12, (byte)0x0c, (byte)0x21,
(byte)0x42, (byte)0x6c, (byte)0x21, (byte)0x42,
(byte)0x14, (byte)0x51, (byte)0x86, (byte)0x90,
(byte)0xa1, (byte)0x34, (byte)0x10, (byte)0x62,
(byte)0xc9, (byte)0xb0, (byte)0x83, (byte)0x08,
(byte)0x40, (byte)0xbc, (byte)0x14, (byte)0x65,
(byte)0x04, (byte)0x28, (byte)0xb2, (byte)0xb1,
(byte)0x20, (byte)0xc2, (byte)0x14, (byte)0x2a,
(byte)0xc2, (byte)0x71, (byte)0x2f, (byte)0x53,
(byte)0x4d, (byte)0x39, (byte)0x13, (byte)0x48,
(byte)0x21, (byte)0x05, (byte)0x18, (byte)0x62,
(byte)0xc8, (byte)0xd5, (byte)0x46, (byte)0x1a,
(byte)0xb2, (byte)0x35, (byte)0x26, (byte)0x85,
(byte)0x13, (byte)0x42, (byte)0xc8, (byte)0xb4,
(byte)0xc4, (byte)0x4c, (byte)0x30, (byte)0x83,
(byte)0x0a, (byte)0xc4, (byte)0x9b, (byte)0x08,
(byte)0x40, (byte)0xbd, (byte)0x4d, (byte)0x34,
(byte)0xe5, (byte)0x12, (byte)0x4d, (byte)0x0b,
(byte)0x26, (byte)0x82, (byte)0x14, (byte)0x26,
(byte)0xd4, (byte)0x98, (byte)0x6a, (byte)0xc9,
(byte)0xb4, (byte)0xd3, (byte)0x4c, (byte)0x55,
(byte)0x24, (byte)0xda, (byte)0x42, (byte)0x06,
(byte)0x1a, (byte)0x42, (byte)0x06, (byte)0x20,
(byte)0x62, (byte)0x06, (byte)0x20, (byte)0xa3,
(byte)0x14, (byte)0x21, (byte)0x43, (byte)0x54,
(byte)0x21, (byte)0x42, (byte)0x14, (byte)0x23,
(byte)0x42, (byte)0x10, (byte)0x2b, (byte)0x43,
(byte)0x14, (byte)0x59, (byte)0xc8, (byte)0x90,
(byte)0x81, (byte)0x14, (byte)0x10, (byte)0xa1,
(byte)0x54, (byte)0x90, (byte)0xa1, (byte)0x0a,
(byte)0x13, (byte)0x00, (byte)0x00
}; */
/////////////////////////////////////////
public mainCanvas ( )
{
status=0;
carno=0;
gameResult=0;
level2Num=0;
WIDTH=getWidth();
HEIGHT=getHeight();
car=new Image[6];
biao=new Image[6];
post=new Image[6];
girl=new Image[8];
carlayer=0;
valid=false;
try
{
street=Image.createImage("/png-picture/street.png");
streetback=Image.createImage("/png-picture/streetback.png");
// Image tempcar=Image.createImage("/png-picture/car6.png");
car[0]=Image.createImage("/png-picture/2car0.png");
car[1]=Image.createImage("/png-picture/2car1.png");
car[2]=Image.createImage("/png-picture/2car2.png");
car[3]=Image.createImage("/png-picture/2car3.png");
car[4]=Image.createImage("/png-picture/2car4.png");
car[5]=Image.createImage("/png-picture/2car5.png");
strike=Image.createImage("/png-picture/strike.png");
for( int x=0; x<6; x++)
{
String te="/png-picture/biao"+x+".png" ;
biao[x]=Image.createImage(te);
}
for( int y=0; y<6; y++)
{
String te="/png-picture/post"+y+".png" ;
post[y]=Image.createImage(te);
}
}
catch(IOException e)
{ System.out.println("mainCanvas failue!"); }
carposition=(76-street.getHeight())/3;
// Sound music=new Sound(data,Sound.FORMAT_WAV);
// music.play(0);
}
public void paint( Graphics g )
{
if(status==0)
{
g.setColor(0,0,0);
g.fillRect(0,0,WIDTH,HEIGHT);
}
g.setClip(0,(HEIGHT-76)/2,WIDTH,76);
g.setColor(156,156,0);
g.fillRect(0,(HEIGHT-76)/2,WIDTH,76);
int streetid=status%20;
g.drawImage(street, WIDTH+streetid*10,(HEIGHT-76)/2,Graphics.TOP|Graphics.RIGHT);
if( gameResult==1 && level2Num>0 )
{
int streetHeight=street.getHeight();
if( level2Num>CONLEVEL2NUM/3)
{
g.setColor(156,156,0);
g.fillRect(0,(HEIGHT-76)/2,(CONLEVEL2NUM-level2Num)*10,streetHeight);
}
else
{
g.setColor(156,156,0);
g.fillRect((CONLEVEL2NUM/3-level2Num)*10,(HEIGHT-76)/2,WIDTH,streetHeight);
}
level2Num--;
}
if(valid && (3-ZAlayer)>carlayer)
drawItem(g);
int carid=status%4;//每四個刷新周期一次車刷新
if(carid==3)
carno++;
carid=carno%6;
g.drawImage(car[carid],WIDTH/2,(HEIGHT+76)/2-(carlayer+1)*carposition,Graphics.HCENTER|Graphics.BOTTOM);
if(valid && (3-ZAlayer)<=carlayer)
drawItem(g);
int backid=status%24;
g.drawImage(streetback,WIDTH+backid*7,(HEIGHT+76)/2,Graphics.BOTTOM|Graphics.RIGHT);
if( valid && touch==1)
g.drawImage(strike, ZAXposition,(HEIGHT+76)/2-(3-ZAlayer+1)*carposition- touch*ZAbomYspeed - 20, Graphics.HCENTER|Graphics.VCENTER);
if( gameResult==-1)
{
g.setColor(0,0,0);
g.drawString("GAME OVER", WIDTH/2,HEIGHT/2,Graphics.HCENTER|Graphics.BOTTOM);
g.setColor(255,255,255);
g.drawString("GAME OVER", WIDTH/2-1,HEIGHT/2-1,Graphics.HCENTER|Graphics.BOTTOM);
g.drawString("GAME OVER", WIDTH/2+1,HEIGHT/2-1,Graphics.HCENTER|Graphics.BOTTOM);
g.drawString("GAME OVER", WIDTH/2-1,HEIGHT/2+1,Graphics.HCENTER|Graphics.BOTTOM);
g.drawString("GAME OVER", WIDTH/2+1,HEIGHT/2+1,Graphics.HCENTER|Graphics.BOTTOM);
}
if( gameResult==2)
{
g.setColor(0,0,0);
g.drawString("WON", WIDTH/2,HEIGHT/2,Graphics.HCENTER|Graphics.BOTTOM);
g.setColor(255,255,255);
g.drawString("WON", WIDTH/2-1,HEIGHT/2-1,Graphics.HCENTER|Graphics.BOTTOM);
g.drawString("WON", WIDTH/2+1,HEIGHT/2-1,Graphics.HCENTER|Graphics.BOTTOM);
g.drawString("WON", WIDTH/2-1,HEIGHT/2+1,Graphics.HCENTER|Graphics.BOTTOM);
g.drawString("WON", WIDTH/2+1,HEIGHT/2+1,Graphics.HCENTER|Graphics.BOTTOM);
}
if( gameResult==1 && level2Num>30 && level2Num<CONLEVEL2NUM*2/3)
{
g.setColor(0,0,0);
g.drawString("LEVEL 2", WIDTH/2,HEIGHT/2,Graphics.HCENTER|Graphics.BOTTOM);
g.drawString("LEVEL 2", WIDTH/2-1,HEIGHT/2-1,Graphics.HCENTER|Graphics.BOTTOM);
g.drawString("LEVEL 2", WIDTH/2+1,HEIGHT/2-1,Graphics.HCENTER|Graphics.BOTTOM);
g.drawString("LEVEL 2", WIDTH/2-1,HEIGHT/2+1,Graphics.HCENTER|Graphics.BOTTOM);
g.drawString("LEVEL 2", WIDTH/2+1,HEIGHT/2+1,Graphics.HCENTER|Graphics.BOTTOM);
}
status++;
}
public void keyPressed( int code )
{
if( gameResult==-1 )
return;
int action=getGameAction(code);
if(action==UP)
carlayer=1;
else if(action==DOWN)
carlayer=0;
else
{ }
}
/*
public int ZAtype;//0:biao; 1:post; 2:girl;
public int ZAlayer; // 2: 外道 3: 里道
public int ZAXposition; //一個小于零的隨機整數,每次刷新加上位移ZAspeed;
int ZAspeed;
int ZAbomXspeed;
int ZAbomYspeed;
public int ZAYposition;
public boolean valid;//當前是否有個物體,真:有;
int touch ; *///平常為0;碰上后每次刷新遞增。隨著它的遞增,每個視圖都會改變,每次ZAspeed變化會加大,y方向也會有增量;
void drawItem(Graphics g)
{
Image temp[];
Image tempItem;
if( !valid )
return;
if(touch>5)
{
valid=false;
return;
}
if(ZAtype==0)
temp=biao;
else if( ZAtype==1)
temp=post;
else if(ZAtype==2)
temp=girl;
else
return;
tempItem=temp[touch];
ZAXposition += ( touch==0? ZAspeed : ZAbomXspeed ) ;
int Y = (HEIGHT+76)/2-(3-ZAlayer+1)*carposition- touch*ZAbomYspeed - 5;;
if(ZAXposition<-30)
return;
if(ZAXposition>WIDTH+30)
{
valid=false;
touch=0;
return;
}
g.drawImage(tempItem, ZAXposition, Y , Graphics.BOTTOM|Graphics.HCENTER);
if( touch!=0 )
{
touch++;
return;
}
if( ZAXposition>= (WIDTH-90)/2 && ZAXposition<=WIDTH/2 && 3-ZAlayer==carlayer )
{
touch=1;
touchNum++;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -