

已阅读5页,还剩123页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
j2se泡泡堂游戏制作(代码内容) 学生姓名院系名称专业名称班 级学 号指导教师 目录1. window包311 gamemain类312 gamemenu类513 gamestart类72. sprite包921 bigbubble类922 bubble类1623 drawitem类2824 gamesprite类3225 gametime类3626 player类403. control包6031 controlgamemain类6032 controlgamemenu类8033 controlgamestart类8734 controlhelp类9135 controlmusic类9436 controlselectmap类9637 controlteam类1004. util包10241 drawmap类10242 filecontrol类10743 framesetting类10944 gameimage类11145 gamemusic类12146 gameproperty类12547 maptools类1271. window包11 gamemain类package com.lovo.popot.window;import java.awt.event.mouseadapter;import java.awt.event.mouseevent;import javax.swing.jframe;import javax.swing.jpanel;import com.lovo.popot.control.controlgamemain;import com.lovo.popot.sprite.gamesprite;import com.lovo.popot.util.framesetting;/* * 显示游戏界面的窗口类 * author 刘胜利 * version 1.0 * 2007-4-4创建 */public class gamemain extends jframe/* * 默认序列化id:1l */private static final long serialversionuid = 1l;/* * 判断选择地图的字符串 */private string selectedmap;/* * 构造方法 * param selectedmap - 选择地图的字符串 */public gamemain(string selectedmap) this.selectedmap = selectedmap;init();/* * 初始化窗口属性 */private void init() setcursor(framesetting.cursor);createcontent();seticonimage(gamesprite.icon);setsize(800,600);framesetting.setcenter(this);setundecorated(true);settitle(泡泡堂);setvisible(true);/* * 加入容器面板 */private void createcontent() final jpanel panel = new controlgamemain(this);this.getcontentpane().add(panel);/为当前窗口加入键盘监听事件(controlgamemain)panel).addlistener();this.addmouselistener(new mouseadapter()public void mouseclicked(mouseevent e) int getx = e.getx();int gety = e.gety();if(getx650&getx555&gety586)(controlgamemain)panel).dispose();dispose();new gamemenu(););/* * 从本类中获得选择地图的字符串 * return 返回被选择的地图,通过该字符串来确定加载的地图. */public string getselectedmap()return selectedmap;/*/ * param args/ */public static void main(string args) /new gamemain(海盗地图);/12 gamemenu类package com.lovo.popot.window;import java.applet.audioclip;import java.awt.cardlayout;import java.awt.mediatracker;import java.awt.event.windowevent;import javax.swing.jframe;import javax.swing.jpanel;import com.lovo.popot.control.controlgamemenu;import com.lovo.popot.control.controlhelp;import com.lovo.popot.control.controlselectmap;import com.lovo.popot.control.controlteam;import com.lovo.popot.sprite.gamesprite;import com.lovo.popot.util.framesetting;/* * 显示菜单界面的类. * author 白德柯 * version 1.0 * 2007-4-4创建 */public class gamemenu extends jframe/* * 默认序列化id:1l */private static final long serialversionuid = 1l;/* * 图象跟踪器类对象 */private mediatracker tracker;/* * 卡片布局管理器对象 */private cardlayout card;/* * 音乐播放器类对象,主要用于控制停止音乐的播放 */private audioclip audio;/* * 构造方法 */public gamemenu()init();private boolean isdispose;/* * 在窗口容器面板上添加其他容器 */private void createcontent() final jpanel jpanel = (jpanel)this.getcontentpane();controlgamemenu init = new controlgamemenu(this);controlhelp help = new controlhelp(this);controlselectmap gamestart = new controlselectmap(this);controlteam team = new controlteam(this);card = new cardlayout();jpanel.setlayout(card);init.addlabel();help.addlabel();gamestart.addlabel();team.addlabel();jpanel.add(init,title);jpanel.add(gamestart,gamestart);jpanel.add(help,help);jpanel.add(team,team);card.show(jpanel, title);/* * 初始化窗口属性 */private void init()setcursor(framesetting.cursor);tracker = new mediatracker(this);createcontent();seticonimage(gamesprite.icon);int insets = framesetting.insets;setsize(insets1 + insets3 + 800,insets0 + insets2 + 600);framesetting.setcenter(this);setresizable(false);settitle(泡泡堂);setvisible(true);/* * 获得mediatraker类对象 * return 返回mediatraker类的对象 */public mediatracker getmediatracker()return tracker;/* * 获得当前窗口的布局管理器 * return 返回当前窗口的布局管理器 */public cardlayout getcardlayout()return card;public void setaudioclip(audioclip audio)this.audio = audio;public audioclip getaudioclip()return audio;public void dispose()this.isdispose = true;super.dispose();public boolean getdispose()return isdispose;/* 关闭窗口,释放内存 * see javax.swing.jframe#processwindowevent(java.awt.event.windowevent) */protected void processwindowevent(windowevent e) if (e.getid() = windowevent.window_closing)system.exit(0);13 gamestart类package com.lovo.popot.window;import java.awt.event.mouseadapter;import java.awt.event.mouseevent;import java.awt.event.windowevent;import javax.swing.jframe;import com.lovo.popot.control.controlgamestart;import com.lovo.popot.sprite.gamesprite;import com.lovo.popot.util.framesetting;/* * 启动画面的窗口 * * author 刘胜利 * version 1.0 * 2007-4-2创建 */public class gamestart extends jframe /* * 默认序列化id:1l */private static final long serialversionuid = 1l;/* * 用于显示启动界面的jpanel面版类对象 */private controlgamestart startscene;public gamestart() init();/* * 初始化窗口的方法 */private void init() framesetting.setcursor();setcursor(framesetting.cursor);startscene = new controlgamestart(this);this.getcontentpane().add(startscene);seticonimage(gamesprite.icon);setsize(800,600);framesetting.setcenter(this);this.addmouselistener(new mouseadapter()public void mouseclicked(mouseevent e) startscene.dispose(););setresizable(false);settitle(泡泡堂);setvisible(true);framesetting.savemarinsize(this);/* * 程序入口 * param args */public static void main(string args) new gamestart();/* 关闭窗口,释放内存 * see javax.swing.jframe#processwindowevent(java.awt.event.windowevent) */protected void processwindowevent(windowevent e) if (e.getid() = windowevent.window_closing)system.exit(0);2. sprite包21 bigbubble类package com.lovo.popot.sprite;import java.applet.audioclip;import java.awt.component;import java.awt.graphics;import java.awt.image;import java.util.list;import com.lovo.popot.control.controlgamemain;/* * 大泡泡类。大泡泡即当角色碰到泡泡的水柱后那么该角色会在地图上消失, * 并在角色的当前位置出现大泡泡。经过一段时间等待后,大泡泡爆炸,表示 * 角色死亡,游戏结束。 * author 刘胜利 * version 1.0 * 2007-4-10创建 */public class bigbubble implements gamesprite /* * 绘制图片的容器 */private component component;/* * 大泡泡出现后到大泡泡爆炸的一组图片 */private image deadimages;/* * 角色的x坐标 */private int playerx = -1;/* * 角色的y坐标 */private int playery = -1;/* * 在大泡泡出现前的图片索引号 */private int cryindex;/* * 大泡泡出现的图片索引号 */private int bigpopoindex;/* * 大泡泡爆炸后的图片索引号 */private int deadindex;/* * 大泡泡结束时的标记 */private boolean bigpopoover;/* * 大泡泡开始时的标记 */private boolean bigpopostart;/* * 大泡泡爆炸时的标记 */private boolean deadstart;/* * 释放资源的标记 */private boolean isdispose;/* * 角色类的对象集合 */private list playerlist;/* * 角色类的对象 */private gamesprite player;/* * 地图的二维数组 */private int maparray;/* * 设置是否爆炸的标记,该字段用于其他类来对其进行设置。 * 比如当大泡泡还在等待过程中,一角色碰到该大泡泡,那么该 * 大泡泡就会立即爆炸。 */public static boolean isbomb;/* * 构造方法 * 覆盖默认的构造器 * param component - 绘制图片的容器 * param player - 角色类的对象 * param deadimages - 大泡泡出现后到大泡泡爆炸的一组图片 */public bigbubble(component component, gamesprite player,image deadimages) ponent = component;this.deadimages = deadimages;this.player = player;thread thread = new thread(this);thread.start();/* (non-javadoc) * see com.lovo.popot.sprite.gamesprite#draw(java.awt.graphics) */public void draw(graphics g) if (!bigpopostart) g.drawimage(deadimages2cryindex, playerx - 4, playery - 24,component); else if (bigpopoover) if (!deadstart)g.drawimage(deadimages0bigpopoindex, playerx - 16,playery - 32, component);elseg.drawimage(deadimages1deadindex, playerx - 4,playery - 60, component); else g.drawimage(deadimages2cryindex, playerx - 4, playery - 24,component);g.drawimage(deadimages0bigpopoindex, playerx - 20,playery - 29, 78, 78, component);/* (non-javadoc) * see com.lovo.popot.sprite.gamesprite#setmaparray(int) */public void setmaparray(int maparray) this.maparray = maparray;/* (non-javadoc) * see com.lovo.popot.sprite.gamesprite#setobject(java.util.list) */suppresswarnings(unchecked)public void setobject(list playerlist) this.playerlist = playerlist;/* (non-javadoc) * see com.lovo.popot.sprite.gamesprite#setrowimage(int) */public void setrowimage(int imagerow) /* * 传递角色的x坐标 */public void setx(int playerx) this.playerx = playerx;/* * 传递角色的y坐标 */public void sety(int playery) this.playery = playery;public void run() while (true) if(isdispose)return;if (playerx 0 | playery 0) try thread.sleep(50); catch (interruptedexception e) e.printstacktrace(); else break;for (int i = 0; i 8; i+) component.repaint();if (cryindex = 1)cryindex = 0;elsecryindex = 1;if (i = 4) bigpopostart = true;bigpopoindex+;try thread.sleep(40); catch (interruptedexception e) bigpopoindex = 3;for (int i = 0; i 100; i+) if(isdispose)return;maparray(int) math.round(double) playery - 40) / 40d)(int) math.round(double) playerx - 20) / 40d) = 100;try thread.sleep(40); catch (interruptedexception e) if (isbomb) break;bigpopoover = true;for (int i = 0; i 7) deadstart = true;deadindex+;if (deadindex = 10)break;bigpopoindex+;component.repaint();try thread.sleep(50); catch (interruptedexception e) if(!(player)player).getani()playerlist.remove(player);(player)player).setdead(true);component.repaint();(controlgamemain) component).setgameover(true);public void dispose() this.isdispose = true;/* (non-javadoc) * see com.lovo.popot.sprite.gamesprite#setcolumnimage(int) */public void setcolumnimage(int column) /* (non-javadoc) * see com.lovo.popot.sprite.gamesprite#getx() */public int getx() return 0;/* (non-javadoc) * see com.lovo.popot.sprite.gamesprite#gety() */public int gety() return 0;22 bubble类package com.lovo.popot.sprite;import java.awt.component;import java.awt.graphics;import java.awt.image;import java.util.list;import com.lovo.popot.control.controlgamemain;import com.lovo.popot.control.controlmusic;/* * 泡泡类。 * 功能:玩家按下放泡泡的键时,创建该类对象。在地图上绘制一个泡泡 * 该泡泡会经过4秒左右的等待,随即爆炸,产生爆炸效果。如果在爆炸 * 的范围内存在箱子,那么会炸开该箱子。并随机产生道具。如果爆炸范围 * 内有角色,那么该角色会变成大泡泡。如果有不可炸开的障碍物,那么会 * 阻隔该方向上的泡泡水柱。如果周围有道具,那么此道具消失。 * author 刘胜利 * version 1.0 * 2007-4-6创建 */public class bubble implements gamesprite/* * 绘制图片的容器 */private component component;/* * 泡泡等待时的图片数组 */private image bubble;/* * 泡泡的爆炸效果图片数组 */private image bubbleexplosion;/* * 泡泡在地图上的x坐标位置 */private int popox = -1;/* * 泡泡在地图上的y坐标位置 */private int popoy = -1;/* * 泡泡图片的索引号 */private int popoindex;/* * 泡泡的威力 */private int power;/* * 泡泡左边方向的长度 */private int leftlength;/* * 泡泡右边方向的长度 */private int rightlength;/* * 泡泡上边方向的长度 */private int toplength;/* * 泡泡下边方向的长度 */private int bottomlength;/* * 泡泡水柱增长的计数器 */private int addlength = 1;/* * 泡泡的水柱头所代表的图片索引号 */private int popohead;/* * 泡泡的水柱中间所代表的图片索引号 */private int popobody = 3;/* * 该值代表此类泡泡对象是哪个角色放出来的 */private int playerpopo;/* * 地图的二维数组 */private int maparray;/* * 判断泡泡是否爆炸的标记 */private boolean isexplosion;/* * 泡泡是否爆炸结束的标记 */private boolean isover;/* * 释放资源 */private boolean isdispose;/* * 泡泡水柱是否向左增长的标记 */private boolean addleft = true;/* * 泡泡水柱是否向右增长的标记 */private boolean addright = true;/* * 泡泡水柱是否向上增长的标记 */private boolean addtop = true;/* * 泡泡水柱是否向下增长的标记 */private boolean addbottom = true;/* * 泡泡的对象集合 */private list bubblelist;/* * 构造方法 * 覆盖默认构造器 * param component - 绘制图片的容器 * param bubble - 泡泡等待时的图片数组 * param bubbleexplosion - 泡泡在地图上的x坐标位置 * param power - 泡泡的威力 * param playerpopo - 该值代表此类泡泡对象是哪个角色放出来的 */public bubble(component component,image bubble,image bubbleexplosion,int power,int playerpopo)ponent = component;this.bubble = bubble;this.bubbleexplosion = bubbleexplosion;this.power = power;this.playerpopo = playerpopo;thread thread = new thread(this);thread.start();/* (non-javadoc) * see com.lovo.popot.sprite.gamesprite#setmaparray(int) */public void setmaparray(int maparray) this.maparray = maparray;/* * 设置泡泡在地图上的x坐标位置 */public void setx(int popox) this.popox = popox;/* * 设置泡泡在地图上的y坐标位置 */public void sety(int popoy) this.popoy = popoy;/* * 获得泡泡的x坐标 */public int getx() return popox;/* * 获得泡泡的y坐标 */public int gety() return popoy;/* * 传递泡泡的对象集合 */public void setobject(list bubblelist) this.bubblelist = bubblelist;/* (non-javadoc) * see com.lovo.popot.sprite.gamesprite#draw(java.awt.graphics) */public void draw(graphics g) if(!isexplosion)g.drawimage(bubblepopoindex, popox - 2, popoy - 1, component);elseif(!isover)for (int i = 1; i = addlength; i+)if(i = addlength)if(addtop)g.drawimage(bubbleexplosion0popohead, popox, popoy - 40*i, component);if(addbottom)g.drawimage(bubbleexplosion1popohead, popox, popoy + 40*i, component);if(addleft)g.drawimage(bubbleexplosion2popohead, popox - 40*i, popoy, component);if(addright)g.drawimage(bubbleexplosion3popohead, popox + 40*i, popoy, component);continue;if(i = toplength)g.drawimage(bubbleexplosion0popobody, popox, popoy - 40*i, component);if(i = bottomlength)g.drawimage(bubbleexplosion1popobody, popox, popoy + 40*i, component);if(i = leftlength)g.drawimage(bubbleexplosion2popobody, popox - 40*i, popoy, component);if(i = rightlength)g.drawimage(bubbleexplosion3popobody, popox + 40*i, popoy, component);g.drawimage(bubbleexplosion4popoindex, popox, popoy, component);/* * 泡泡等待时间结束,调用此方法产生爆炸效果,该方法由该类对象的线程调用。 */private void bombing()controlmusic music = new controlmusic(audios/explode.wav,false);music.start();int row = (popoy-40)/40;int column = (popox-20)/40;maparrayrowcolumn = gamesprite.index_space;while(addlength = power)if(isdispose)if(music != null)music.stop();music = null;return;tryif(maparrayrow - addlengthcolumn != gamesprite.index_space& maparrayrow - addlengthcolumn != gamesprite.index_bubble& maparrayrow - addlengthcolumn != gamesprite.index_explosion& maparrayrow - addlengthcolumn != gamesprite.player_dead& (maparrayrow - addlengthcolumn 19)addtop = false;catch (runtimeexception e1)addtop = false;tryif(maparrayrow + addlengthcolumn != gamesprite.index_space& maparrayrow + addlengthcolumn != gamesprite.index_bubble&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中医外科疾病辨治模拟测评答案及解析
- 2025年温州市瓯海区第三人民医院面向社会招聘工作人员5人笔试备考题库及答案解析
- 2026中国东方航空股份有限公司运行控制中心航务类招聘笔试参考题库附答案解析
- 2025年病理学实验室技术规范与质控考察模拟考试卷答案及解析
- 2025年内分泌科疾病诊治技巧考核模拟试卷答案及解析
- 2025广东梅州市蕉岭县蓝坊镇人民政府专职应急救援队员招聘1人笔试备考题库及答案解析
- 2025水利部牧区水利科学研究所招聘2人笔试备考题库及答案解析
- 2025农业农村部食物与营养发展研究所助理招聘3人笔试参考题库附答案解析
- 2025海南三亚航空旅游职业学院党群工作部部长、基建与采购处处长招聘笔试备考试题及答案解析
- 校园安全防范培训会课件
- 《高危药品管理》课件
- 天津工业大学804物理化学历年考研真题14-16
- 高血压糖尿病健康管理督导记录表
- 《医疗机构基本标准(试行)》2018年版
- 医院检验标本采集与运送
- 秋冬季猪的饲养管理课件(模板)
- 新能源汽车技术全套ppt
- 2022年8月20日云南省省直机关遴选笔试真题及答案解析
- SOP标准作业指导书样板
- 云南省地图含市县地图矢量分层地图行政区划市县概况ppt模板
- GB/T 41843-2022功能、残疾、健康分类的康复组合评定
评论
0/150
提交评论