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

📄 game.java

📁 Java程序的一个游戏小Demo 里面包括了许多工具类 用起来很方便
💻 JAVA
字号:
package src;

import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Graphics;
import javax.microedition.midlet.MIDlet;

import tools.Tools;

import man.Man;
import map.Map;
import map.mapArry;

public class Game extends MyCanvas implements StaticInter,
											DataInitObject,MapData{
	//----------系统参数---------------------------------
	int nowState;//当前系统状态
	LoadingSystem loding = null;//多线程资源加载类
	MapLoading mapLoading = null;
//-------logo------------------------------------
	Image img_logo;
	String logoName[] = {"logo","cp"};
	int logoIndex;
	long logoLock;
//--------loading---------------------------------
	int h,loadingspeed = 3;
//--------MENU---------------------------------
	Image menuBack;//菜单背景
	Image menuWord;//菜单文字
	int menuButton;//菜单指针
	int menuPlace[][] = {{10,40},{10,60},{10,80},{10,100}};
//-----------------------------------------------
	Map map ;
	Man man;
	public Game(MIDlet mid){
		super(mid);
		nextSystemState(LOGO);
		new Thread(this).start();
	}
	/**
	 * 进入下一状态方法
	 * @param nextState下一个需要进入的状态
	 */
	public void nextSystemState(int nextState){
		loding = new LoadingSystem(this,nowState, nextState);
		h = 0;
		nowState = LOADING;
	}
	/**
	 * 进入下一地图方法
	 * @param nextmap
	 */
	public void nextMap(int nextmap){
		mapLoading = new MapLoading(this,nextmap);
		h = 0;
		nowState = LOADING;
	}
	/**
	 * 单键按下
	 */
	protected void keyPressed(int key) {
		switch(this.getGameAction(key)){
		case UP:
			is_up = true;
			switch(nowState){
			case MENU:
				menuButton = menuButton>0 ? --menuButton:menuPlace.length-1;
				break;
			}
			break;
		case DOWN:
			is_down = true;
			switch(nowState){
			case MENU:
				menuButton = menuButton<menuPlace.length-1 ? ++menuButton:0;
				break;
			}
			break;
		case LEFT:
			is_left = true;
			break;
		case RIGHT:
			is_right = true;
			break;
		case FIRE:
			is_fire = true;
			switch(nowState){
			case MENU:
				menuOk();
				break;
			case GAME:
				nextMap(1);
				break;
			}
			break;
		}
	}
	/**
	 * 菜单确定
	 *
	 */
	private void menuOk() {
		switch(menuButton){
		case MENU_START:
			nextSystemState(GAME);
			break;
		case MENU_OPTION:
			nextSystemState(OPTION);
			break;
		case MENU_HELP:
			nextSystemState(HELP);
			break;
		case MENU_EXIT:
			exit();
			break;
		}
	}
	/**
	 * 连续按键监听线程
	 */
	protected void keepKey() {
		switch(nowState){
		case GAME:
			if(is_up){
				man.movU();
			}
			if(is_down){
				man.movD();
			}
			if(is_left){
				man.movL();
			}
			if(is_right){
				man.movR();
			}
			break;
		case HELP:
			break;
		case END:
			break;
		case OVER:
			break;
		}

	}
	/**
	 * 绘制线程
	 */
	protected void myPaint() {
		switch(nowState){
		case LOGO:
			g.setColor(-1);
			g.fillRect(0, 0, canvasW, canvasH);
			g.drawImage(img_logo, canvasW>>1,
						canvasH>>1,
						Graphics.HCENTER|Graphics.VCENTER);
			
			break;
		case MENU:
			g.setColor(-1);
			g.fillRect(0, 0, canvasW, canvasH);
			g.setColor(0);
			g.drawImage(menuBack, 
					canvasW>>1,canvasH>>1,Graphics.HCENTER|Graphics.VCENTER);
			for(int i = 0 ; i < menuPlace.length ; i ++){
				Tools.drawFram(g, menuWord,
						menuPlace[i][0],
						menuPlace[i][1], 2, 4, i*2);
			}
			Tools.drawFram(g, menuWord,
					menuPlace[menuButton][0],
					menuPlace[menuButton][1], 2, 4, (menuButton<<1)+1);
			break;
		case GAME:
			g.setColor(-1);
			g.fillRect(0, 0, canvasW, canvasH);
			g.setColor(0);
			map.showMap(g, map.DOWN_MAP);
			man.show(g);
			map.showMap(g, map.UP_MAP);
			break;
		case HELP:
			break;
		case END:
			break;
		case OVER:
			break;
		case LOADING:
			g.setColor(0);
			g.fillRect(0, 0, canvasW, canvasH);
			g.setColor(-1);
			g.fillRect(0, 0, canvasW, h);
			g.fillRect(0, canvasH - h, canvasW, h);
			
			break;
		}
	}
	/**
	 * 数据计算线程
	 */
	protected void upData() {
		switch(nowState){
		case LOGO:
			if(System.currentTimeMillis() - logoLock >= 3000){
				logoLock = System.currentTimeMillis();
				logoIndex ++;
				if(logoIndex < logoName.length){
					img_logo = Tools.getImage(logoName[logoIndex]);
				}else{
					nextSystemState(MENU);
				}
			}
			break;
		case MENU:
			break;
		case GAME:
			map.setXY(man.getX(), man.getY());
			man.upData();
			break;
		case HELP:
			break;
		case END:
			break;
		case OVER:
			break;
		case LOADING:
			if(h<0)
				loadingspeed = 3;
			else if(h>canvasH>>1){
				loadingspeed = -3;
			}
			h += loadingspeed;
			break;
		}
	}
	/**
	 * 系统资源加载
	 */
	public void dataInit(int state) {
		switch(state){
		case LOGO:
			logoIndex = 0;
			img_logo = Tools.getImage(logoName[logoIndex]);
			logoLock = System.currentTimeMillis();
			break;
		case MENU:
			menuBack = Tools.getImage("menu/title");//菜单背景
			menuWord = Tools.getImage("menu/menu");//菜单文字
			menuButton = 0;//菜单指针
			break;
		case GAME:
			man = new Man();
			//加载地图
			mapInit(0);
			break;
		case HELP:
			break;
		case END:
			break;
		case OVER:
			break;
		}
		
	}
	/**
	 * 系统资源释放
	 */
	public void dataOut(int state) {
		switch(state){
		case LOGO:
			img_logo = null;
			break;
		case MENU:
			menuBack = null;//菜单背景
			menuWord = null;//菜单文字
			break;
		case GAME:
			break;
		case HELP:
			break;
		case END:
			break;
		case OVER:
			break;
		}
	}
	/**
	 * 系统资源加载结束进入下一系统状态
	 */
	public void goTonextState(int next) {
		nowState = next;
		loding = null;
	}
	/**
	 * 地图资源释放
	 */
	public void mapOut() {
		map = null;
	}
	/**
	 * 地图资源加载
	 */
	public void mapInit(int newMap) {
		switch(newMap){
		case 0:
			mapArry maptemp = new mapArry();
			map = new Map("map1",maptemp.mapcity_map0,maptemp.mapcity_map1,maptemp.mapcity_map2, 16,16);
			map.setXY(10, 10);
			man.setMap(map);
			break;
		case 1:
			mapArry maptemp1 = new mapArry();
			map = new Map("map1",maptemp1.mapcity_map0,maptemp1.mapcity_map1,maptemp1.mapcity_map2, 16,16);
			map.setXY(1000,1000);
			man.setMap(map);
			break;
		}
		
	}
	/**
	 * 地图资源加载结束
	 */
	public void maploadingOver() {
		nowState = GAME;
		mapLoading = null;
	}

}

⌨️ 快捷键说明

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