⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 maincanvas.java

📁 S60系列手机的游戏起舞街车源码
💻 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 + -