Stringpd=f_name.substring(dex+1).toLowerCase();
if(pd.equals(ext))
returntrue;
}
returnfalse;
}
publicStringgetDescription(){
if(ext.equals("hzk"))
return"地图文件(*.hzkml)";
if(ext.equals("hzks"))
return"游戏进度文件(*.hzkmls)";
return"";
}
}
zi_map类:
是自定义地图类(地图的绘画);主要代码:
classzi_mapextendsJPanelimplementsKeyListener,ActionListener{·······}//自定义地图容器
publicFilefile;
publicchuangkouaa1=null;
publicJFileChooserkuang=null;//文件框
publicguigo=null;
publicContainergames=null;
publicbooleanps[]=newboolean[6];//按键检测
publicJButtonb1,b2,b3;
publicJLabelts,ah,ah1,ah2,ah3;
publicJTextFieldx1,y1;
publicstaticinti,j;
publiczi_map(chuangkouaa1,Containergames,guigo,JFileChooserkuang){
publicvoidpaint(Graphicsg){·······}//画框
publicvoidkey(){·······}//按键处理
publicvoidkeyReleased(KeyEvente){·······}//释放某个键时调用此方法
publicvoidkeyPressed(KeyEvente){{·······}/按下某个键时调用此方法
publicvoidkeyTyped(KeyEvente){·······}
publicvoidactionPerformed(ActionEventea){·······}//按键
}
ml_map类:
是游戏地图类;主要代码:
classml_map{
publicstaticinti,j,chcae_mali,yun_ti;//chcae_mali缓存玛丽初始的数组位置信息,yun_ti缓存云梯数组位置信息
publicstaticfinalintRGD[][]={{79,128,250},{0,0,0}};//地图背景色(蓝天,黑夜)
publicstaticintrgd[]=newint[3],rgd_cache[]=newint[3];//rgd背景色,rgd_cache缓存背景色
publicstaticintmaps[][]=newint[14][400];//地图(数组值意义0无,1~20地图组件100撞墙特效1,101撞墙特效2,200敌人2,201敌人2)
publicstaticintnew_ml[][]=newint[15][2];//玛丽在地图中复活或产生的位置
publicstaticintreturn_surface[][]=newint[5][2];//玛丽从土里从回地表面的位置
publicstaticintup_map[]=newint[5];//下地下地图位置
publicstaticintsoil_map[]=newint[5];//地下地图的位置
publicstaticintsky_map[][]=newint[3][4];//天空地图的位置(x起,始,玛丽从天空下降的x坐标,y坐标)
publicstaticintyun_ladder[]=newint[3];//云梯位置
publicstaticintskip_qi=0;//过关跳旗地图位置(开始seat地图位置)
publicstaticintseat=0,end_seat=0;//seat地图位置
publicstaticvoidinints(){····}//初始
publicstaticvoidinints_new_enemy_move_wall(intseats){····}//新地图(或地图初)初始产生敌人或会动的墙
publicstaticvoidstorage_mali_revive_position(intx,inty){····}//存储玛丽复活位置
publicstaticvoidstorage_mali_return_surface_position(intx,inty){····}//存储玛丽从土里从回地表面的位置
publicstaticvoidstorage_soil_map_position(intx,inty){····}//存储土地里的地图位置
publicstaticvoidstorage_up_map(intx,inty){····}//存储下(地下)地图位置
publicstaticvoidstorage_sky_map(intchoose,intchooses){····}//存储天空地图位置(x起始)
publicstaticvoidstorage_yun_ladder(intx){····}//存储云梯位置
publicstaticvoidvary_map(intx,intchoose){····}//变化地图(int玛丽的初始x坐标;int0上地表面,1下地表面,2上去过关拉旗,3上去天空,4下到土地里)
publicstaticvoidnew_yun_ti(intx,inty){····}//产生云梯
}
Photos类:
是图片类(用于读入游戏中的所有图片);主要代码:
classphotos{
publicstaticchuangkouaa1;
publicstaticImagephoto[]=newImage[41];//地图专用
publicstaticImagebody[][]=newImage[2][6];//敌人专用
publicstaticImagemy[][]=newImage[3][14];//玛丽专用
publicstaticImageskill[][]=newImage[4][2];//技能专用
publicstaticImagez_d[]=newImage[5];//子弹专用
publicstaticImagemoney[]=newImage[2];//撞击金币特效专用
publicstaticImageeat_ml[]=newImage[2];//食人花专用
publicphotos(chuangkouaa1){····}/*地图*/
}
Wav类:
是声音类(此类在游戏中添加了一些特定的声音,是为了让游戏的效果更完美);主要代码:
classwav{
publicstaticvoidgames(){
try{
FileInputStreamfileau=newFileInputStream("wav/地上.wav");
AudioStreamas=newAudioStream(fileau);
AudioPlayer.player.start(as);//播放
//AudioPlayer.player.stop(as);//停止播放
}catch(Exceptione){}
}
publicstaticvoidmoney(){····}//吃金币
publicstaticvoidq1(){····}//玛丽撞墙(不损坏)
publicstaticvoidq2(){····}//玛丽撞墙(损坏)
publicstaticvoidskip(){····}//玛丽跳
publicstaticvoidnew_eat(){····}//产生技能
publicstaticvoideat(){····}//玛丽吃技能
publicstaticvoidzd(){····}//玛丽发子弹
publicstaticvoidsmall(){····}//玛丽变小
publicstaticvoidd_die(){····}//敌人死亡
publicstaticvoidml_die(){····}//玛丽死亡
publicstaticvoidpull(){····}//过关拉旗
publicstaticvoidadd_life(){····}//加生命
publicstaticvoidend_games(){····}//游戏结束声音
publicstaticvoidml_town(){····}//进入城堡声音
}
ma_li类:
是玛丽类(包含玛丽的一切动作);主要代码:
classma_liextendsThread{
publicstaticml_mapmap;//引入地图maps[14][400];地图移动seat;
publicstaticfinalintdes[]={0,0,7,1,0};//初始玛丽坐标数据0.玛丽类型,1.玛丽高度,2.玛丽显示形状,3.玛丽方向,4.玛丽是否发子弹;
publicstaticintcoordinate[]=newint[7];//坐标(地图坐标)0.x,1.y,2.玛丽形状大小(0,1,2)3.玛丽高度(0,1)4,玛丽显示形状5.玛丽方向(0左,1右)6玛丽是否发子弹(0,1)
publicstaticintmoneys[]=newint[3],ml_x;//撞击金币坐标0.x,1.y,2上升高度
publicstaticbooleanmoneys_p=false,via=false,mali_die=false;//撞击金币显示控制;via过关还是死亡(初始选择);mali_die玛丽是否死亡
publicstaticinti,j,kfc=0,ml_tall=0;//die玛丽死亡位置
publicstaticintmove[]={2,8,1,1};
publicstaticbooleanskip_qi=false,left_right=false,skip=false,caches=false,
launch=false,down=false,yan_enemy,abc=true;;//yan_enemy玛丽压死着敌人特效
publicstaticintyan_enemys[]=newint[3];//压玛丽的坐标x,y,类型
publicstaticintml_skip;//控制弹跳的高度
publicstaticintmoney,cache[]=newint[3],tame[]=newint[2];//money控制钱箱的撞击次数();cache[]墙特效缓存x,y,形状;tame[]记录损坏墙的位置
publicstaticbooleanbelow=false,sky=false;//below是否在土里;sky是否在天上
publicstaticbooleanshow_mali=true;//是否显示玛丽
publicstaticinthigh_low,around;//high_low上下,around左右
publicstaticvoidinints(){····}//初始
publicstaticvoidinint_mali_behaviour(){····}//初始玛丽行为
publicstaticvoidinint_mali_coordinate(intmali_x){····}//初始玛丽坐标(传入玛丽参考x坐标)
publicstaticvoidnew_mali(intx,inty){····}//产生玛丽初始坐标
publicstaticvoiddie_ml(){····}//玛丽死亡
publicstaticvoidml_surface(intchoose){····}//(0.从地下上表面,1.进入过关拉旗,2.从天空掉下)玛丽回到地表
publicstaticvoidml_below(){····}//玛丽下降到地里
publicstaticvoidml_sky(){····}//玛丽上升到天上
publicstaticvoidup(){····}//向上
publicstaticvoiddown(booleanch){····}//下蹲
publicstaticvoidright(){····}//右移
publicstaticvoidlaunch(){····}//发射子弹
publicstaticvoidnew_cartridge(){····}//产生子弹技能
publicstaticvoidsmall_skip(){····}//小跳(1个单位)
publicstaticvoidbig_skip(){····}//大跳(3个单位)
publicstaticvoidimpact_enemy(){····}//玛丽碰撞了敌人
publicstaticvoidml_money(intx,inty){····}//玛丽碰撞了金币箱
publicstaticvoideat_skill(intchoose,intchse){····}//玛丽碰撞了技能
publicstaticvoideat_wall(intx,inty){····}//玛丽也撞墙(跳起时)传入(地图)碰撞位置
publicstaticvoidup_enemy_money(intx,inty){····}//判断敌人(或金币)是否在玛丽撞击墙的上面(传入地图坐标)
publicstaticvoidml_eat(intx,inty){····}//判断是否吃(走动非撞墙)吃道具
publicstaticintjudge(intx,inty)