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

📄 mygamecanvas.java

📁 是男人就撑过20秒,我写到了手机上,算法什么的都还未完工,但已能运行.加了个简单的时钟,可是不太准确,呵呵.
💻 JAVA
字号:
import java.util.Random;
import java.util.Timer;
import javax.microedition.lcdui.game.*;
import javax.microedition.lcdui.*;

class MyGameCanvas extends GameCanvas implements Runnable {

	private Graphics g;
	
	private int width;
	
	private int height;

	private int screenWidth = 0; //屏幕宽度

	private int screenHeight = 0; //屏幕高度

	private int drawX = 0; //要绘制的X坐标

	private int drawY = 0; //要绘制的Y坐标
	
	private Image img;
	
	private Image particle;
	
	private Image burst;
	
	private pardata[] particles;
	
	private int par_num;

	private boolean ishit;
	
	private final short STAGE_TITLE   =0;
	private final short STAGE_RUNNING =1;
	private final short STAGE_HIT     =2;
	private final short STAGE_RESTART =3;
	
	private short Game_State;
	
	private long timeLong;
	private int milSec;
	
	private Timer timer=null;
	
	protected void destroy(){
		particles=null;

		img=null;
		particle=null;
		burst=null;
	}
	
	protected MyGameCanvas() {
		
		super(true);
		g = this.getGraphics();
		screenWidth = this.getWidth();
		screenHeight = this.getHeight();
		drawX = screenWidth / 2 - width / 2;
		drawY = screenHeight / 2 - height / 2;

		try{
			img=Image.createImage("/myship.png");
			particle=Image.createImage("/par.png");
			burst=Image.createImage("/burst.png");
			
		}catch(Exception e){
		}
		timeLong=0;
		milSec=0;
		
		par_num=40;
		
		particles = new pardata[par_num];
		
		Random ran=new Random();
		
		for(int i=0;i<par_num;i++){
			int k=ran.nextInt();
			int j=ran.nextInt();
			//if(k<0||j<0)
			particles[i]=new pardata(drawX+100+k%30,drawY+100+j%30,k%5,j%5,screenWidth,screenHeight);
			//else
			//particles[i]=new pardata(drawX+70+k%30,drawY+70+j%30,k%6,j%6,screenWidth,screenHeight);
			
		}

		Game_State = STAGE_RUNNING;//游戏状态为running
		
		draw(g);	
		
//		doTimerStart();
		
		Thread thread = new Thread(this);
		thread.start();
	}


	protected void draw(Graphics g) {

		g.setColor(0x000000);
		g.fillRect(0, 0, screenWidth, screenHeight);


		switch(Game_State){
		case STAGE_RUNNING:
		
			addSec(g);
	
		
			g.drawImage(img,drawX,drawY,Graphics.TOP|Graphics.LEFT);
		
			for(int i=0;i<par_num;i++){
				if(ishit=particles[i].isHit(img,drawX,drawY)){
					g.drawImage(burst,drawX,drawY,Graphics.TOP|Graphics.LEFT);
					Game_State = STAGE_HIT;//一但hit,break
					break;
				}
			
			particles[i].drawParticle(g,particle);
			}
			flushGraphics();
		break;
		}		
	}
	

	public void keyPressed() {		
		int x, y;
		int keyState = getKeyStates();

		//判断上下左右键是否被按下
		if ((keyState & UP_PRESSED) != 0) {
			if (drawY - 3 > 0)
				drawY = drawY - 3;
			else
				drawY = screenHeight;

		}
		if ((keyState & DOWN_PRESSED) != 0) {
			if (drawY + 3 < screenHeight)
				drawY = drawY + 3;
			else
				drawY = 0;

		}
		if ((keyState & LEFT_PRESSED) != 0) {
			if (drawX - 3 > 0)
				drawX = drawX - 3;
			else
				drawX = screenWidth;

		}
		if ((keyState & RIGHT_PRESSED) != 0) {
			if (drawX + 3 < screenWidth)
				drawX = drawX + 3;
			else
				drawX = 0;
		}

	}
   
	public void run() {
		//无限循环检测键盘的输入
		while (true) {
			for(int i=0;i<par_num;i++){
				particles[i].updateParticle(20);
			}
			keyPressed();
			draw(g);
			try {
				Thread.sleep(20);
			} catch (InterruptedException ie) {
			}
		}
	}
	
	
	void addSec(Graphics g) {
		milSec++;
		if(milSec%50==0){
		timeLong++;
		milSec=1;
		}
	
		g.setColor(0xFFFFFF);
		//描绘计时器
			
		int hour = (int)(timeLong / 3600);
		int minute = (int)((timeLong - (hour * 3600)) / 60);
	
		String minuteSt = String.valueOf(minute);
		minuteSt = (minuteSt.length() < 2 ? "0"+minuteSt : minuteSt);//加上0变成两位数
	
		int sec = (int)(timeLong - (hour * 3600) - (minute * 60));
		String secSt = String.valueOf(sec);
		secSt = (secSt.length() < 2 ? "0"+secSt : secSt);//加上0变成两位数傞
	
		String drawSt = String.valueOf(hour) + ":" + minuteSt + ":" + secSt+":"+milSec;

		g.drawString(drawSt, 0, 0, Graphics.TOP|Graphics.LEFT);
	}

	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -