📄 game.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 + -