合金弹头框架代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

最近研究的一段时间的游戏代码,获益不小!细节的掌握不多,但对游戏的框架有了一定的了解。

现总结出几套游戏框架,在此写出供大家参考!
合金代码下载地址http://www.j2m /Soft/src/gam e/200610/789.ht ml
Mid.java
开始启动线程
publicclassMidextendsMIDletimplementsRunnable
publicMid() {
m screen =newGame();
Display.getDisplay(this).setCurrent(m screen);
}
publicvoidrun(){
if(m screen.process())this.notifyDestroyed();
}
publicvoidstartApp() {
(newThread(this)).start();
}
publicvoidpauseApp() {
m screen.stayapp();
}
publicvoiddestroyApp(booleanunconditional) {
m screen.exitapp();
}
}
//游戏主体部分
Game.java
publicclassGameextendsCanvas {
publicMScreen() {
face_load();//地图数据
sound_load();//声音载入
screen_index = SCREEN_RESSLOAD;//这个索引为游戏主索引
}
/////////////////////////////////
///////技巧部分/////////
///////////////////////////////
publicfinalvoidrefresh() { repaint(); serviceRepaints(); }//刷新屏幕publicfinalvoidstayapp() { running =false; } //退出循环publicfinalvoidexitapp() { exitapp =true; } //退出程序
//相对坐标的转换
privatefinalinttoScreenx(intx) {returnx - position_x; } privatefinalinttoScreeny(inty) {returny - position_y; }
////////////////////////////////////////////
///////// ////////////
//////// 描绘////////////
////////////////////////////////////////////
protectedvoidpaint(Graphics g) {
if(process_lock)return;//游戏关键进程锁
g.setClip(0,0,screen_w, screen_h);
process_draw();
}
protectedvoidprocess_draw() {
if(process_lock)return;
switch(screen_index){
caseSCREEN_MAINMENU: mainmenu_draw();break;
caseSCREEN_HELPINFO: helpinfo_draw();break;
caseSCREEN_COPYRIGH: copyrigh_draw();break;
caseSCREEN_GAMEBODY: gam ebody_draw();brea k;
caseSCREEN_GAMEOVER: gameover_draw();break;
caseSCREEN_HIGHLIST: highlist_draw();break;
caseSCREEN_RESSLOAD: ressload_draw();break;
caseSCREEN_SELEGATE: selegate_draw();break;
}
}
//////////////////////////////////////////////
/////////////// 按键处理//////////////
//////////////////////////////////////////// protectedvoidkeyPressed(intkeyCode) {
setkeystate(keyConvert(keyCode),true);
process_key(keyConvert(keyCode));
}
protectedvoidkeyRepeated(intkeyCode) {
setkeystate(keyConvert(keyCode),true);
}
protectedvoidkeyReleased(intkeyCode) {
setkeystate(keyConvert(keyCode),false);
}
protectedfinalvoidprocess_key(intkeycode){
if(process_lock)return;
switch(screen_index){
caseSCREEN_GAMEBODY: gam ebody_key(keycode);break;
caseSCREEN_MAINMENU: mainmenu_key(keycode);break;
caseSCREEN_HELPINFO: helpinfo_key(keycode);break;
caseSCREEN_COPYRIGH: copyrigh_key(keycode);break;
caseSCREEN_GAMEOVER: gameover_key(keycode);break;
caseSCREEN_HIGHLIST: highlist_key(keycode);break;
caseSCREEN_SELEGATE: selegate_key(keycode);break;
caseSCREEN_RESSLOAD: ressload_key(keycode);break;
}
}
///////////////////////////////////////////
///// 运行控制////////////////////
/////////////////////////////////////////
publicfinalbooleanprocess(){
intcount =0;
longsecon =0;
longtim eold =0;
longtim enow =0;
running =t rue;
while(running && !exitapp) {
if(exitapp)returntrue;
tim enow = System.currentTim eMillis();
if(tim enow >= interval + tim eold) {//FPS控制参见文章如何控制游戏中的FPS
http://www.j2m /code/j2me/gui/200611/3802.ht ml
tim eold = tim enow;
fram enum = (framenum <9999)? framenum +1:0;
process_tick();//转入分支运行控制
//计算当前的刷新帧数
if(secon < (tim enow /1000)){
secon = tim enow/1000;
fram esec = count;
count =1;
}else
count ++;
}
}
returnexitapp;
}
publicfinalvoidprocess_tick() {
if(process_lock)return;
switch(screen_index){
caseSCREEN_GAMEBODY: gam ebody_run();break;
caseSCREEN_MAINMENU: mainmenu_run();break;
caseSCREEN_HELPINFO: helpinfo_run();break;
caseSCREEN_COPYRIGH: copyrigh_run();break;
caseSCREEN_GAMEOVER: gameover_run();break;
caseSCREEN_HIGHLIST: highlist_run();break;
caseSCREEN_RESSLOAD: ressload_exec();break;
caseSCREEN_SELEGATE: selegate_run();break;
}
}
////////////////////////////////
///////各部分方法/////////
///////////////////////////////
游戏分为GAMEBODY//游戏主体
MAINMENU//主菜单
HELPINFO//帮助信息
COPYRIGH//版权所有
HIGHLIST//高分显示
RESSLOAD//载入画面
SELEGATE//关卡选择
7个部分
每个部分都有5个方法
以m ainmenu为例写出
//初使化
privatefinalvoidmainmenu_init(){初使化mainmenu_index m ainmenu_index =0;
}
////响应按键
privatefinalvoidmainmenu_key(intkeycode){/*里面内容省略*/
case KEY_SOFT1:
m ainmenu_execute(m ainmenu_index);//转入按键执行
break;
}
//按键执行
private final void m ainmenu_execute(int index){
/*按键响应相应命令*/ }
//命令描绘
privatefinalvoidmainmenu_run(){
refresh();
//描绘部分
privatefinalvoidmainmenu_draw(){}
}
总结来看这个游戏的框架是
主结构
构造函数(声音载入图片载入)
PAINT (描绘-->分支描绘)
RUN (运行-->分支运行)
KEY (按键响应-->分支按键)
分支结构
init()
key(intkeycode)
execute(intindex)//转入命令执行(注不是所有的都需要此执行可以把这个命令归进key 执行)
run()//运行(描绘)
draw()
这个游戏很清晰的显示游戏运行思路将大框架再小框架,便于修改和查找;
这里所给出的只是游戏框架部分,具体的AI和游戏主体框架出于篇幅没有给出,希望这篇文章能对新手有一定帮助!。

相关文档
最新文档