




免费预览已结束,剩余6页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华 北 科 技 学 院课程设计说明书面向对象程序设计(Java)班级: B091(14) 姓名: 成晓晓 设计题目: 贪吃蛇 设计时间: 2012-01-09 至 2012-01-13 指导教师: 王养廷 评 语:_评阅成绩:_评阅教师:_课程设计说明书1、 课程设计的目的首先Java是一种易学易懂的通用程序设计语言,由于它具有功能性强,运用简洁,灵活兼有高级语言与低级语言的优点,以及“目标程序效率高”可移植性和能在各种系统上普遍实现等特点使它成为当今世界上的主流程序设计语言之一,同时被选作目前全世界广泛应用,同时也是大学期间好多专业的必修课程。作为当代的大学生要很好的利用它,学好一门设计语言,实现学以至用。 再者JAVA程序设计是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是我们学习完java课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使我较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为我综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。2、 功能模块简介和系统结构图 整体功能一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,当一只按着某一键的时候就会一值加速。蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记100分,接着又随机出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。模块划分贪吃蛇游戏设计与实现,主要分为以下三个模块:游戏主界面模块和游戏控制模块和查看游戏游戏基本信息模块。游戏主界面模块:游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形区域界面以及玩游戏所得的分数。游戏控制模块:这个模块是游戏的中心环节,我将它添加在了菜单条里边,主要完成控制游戏,有开始游戏,退出游戏,以及选择游戏的难易程度,还有加快蛇的爬行速度。以及计算当前的分数,以及蛇吃的食物个数。其中难易程度包括了困难,一般及简单。查看游戏基本信息模块:有查看游戏的最高记录以及游戏八本或者作者等基本信息。性能:本软件在设计方面本着方便、实用及娱乐性高的宗旨,在对界面进行设计的过程中,始终坚持清晰明了,在性能方面能够实现效率高,不易出错等优点。系统结构图点击 开始游戏 菜单项, 游戏开始,蛇开始随机。键盘操作: 向上左移右移向下没有吃到食物且蛇碰到边界或自身游戏停止吃到食物蛇长大,新的食物出现进入游戏画面再次单击游戏开始图1 游戏处理流程图 图2 菜单图 图3 贪吃蛇界面运行说明进入主界面后单击游戏,会弹出它的子菜单,然后选择开始游戏此时就会触发ks(开始游戏)事件,此时会出现蛇和食物,通过键盘的控制可以实现蛇的移动方向以及移动速度。当吃到事物的时候蛇的长度就增加,当蛇的长度增加时移动的速度也会加快,并且会随机出现新的食物。当吃不到食物或者碰到了墙壁或者碰到了自身时就会死亡。单击难易程度菜单时弹出它的子菜单,有简单,一般和困难,分别控制游戏的难易程度,单击积分排行时会出现最高分的记录。3、 主要源程序及代码import javax.swing.*; import java.awt.*; import java.awt.event.*; public class TanChiShe extends JFrame implements ActionListener, KeyListener,Runnable JMenuBar menuBar; JMenu youXi,ny,fs,gy; JMenuItem ks,tc,zz,fsi; JCheckBoxMenuItem jd,yb,kn; int length = 6; Toolkit toolkit; int i,x,y,z,objectX,objectY,object=0,growth=0,time; int difficult=2; int m=new int50; int n=new int50; Thread she = null; int life=0; int foods = 0; int fenshu=0; public void run() time=500; for(i=0;i=length-1;i+) mi=90-i*10;ni=60; x=m0; y=n0; z=4; while(she!=null) check(); try she.sleep(time); catch(Exception ee) System.out.println(z+); public TanChiShe() setVisible(true); menuBar = new JMenuBar(); Container con=getContentPane(); toolkit=getToolkit(); youXi = new JMenu(游戏); ks = new JMenuItem(开始(新)游戏); tc = new JMenuItem(推出); ny = new JMenu(难易程度); jd = new JCheckBoxMenuItem(简单); yb = new JCheckBoxMenuItem(一般); kn = new JCheckBoxMenuItem(困难); fs = new JMenu(积分排行); fsi = new JMenuItem(最高记录); gy = new JMenu(关于); zz = new JMenuItem(关于作者); gy.add(zz); ny.add(jd); ny.add(yb); ny.add(kn); fs.add(fsi); youXi.add(ks); youXi.add(tc); menuBar.add(youXi); menuBar.add(ny); menuBar.add(fs); menuBar.add(gy); zz.addActionListener(this); ks.addActionListener(this); tc.addActionListener(this); addKeyListener(this); fsi.addActionListener(this); KeyStroke keyOpen = KeyStroke.getKeyStroke(O,InputEvent.CTRL_DOWN_MASK); ks.setAccelerator(keyOpen); KeyStroke keyExit = KeyStroke.getKeyStroke(X,InputEvent.CTRL_DOWN_MASK); tc.setAccelerator(keyExit); setJMenuBar(menuBar); setTitle(贪吃蛇); setResizable(false); setBounds(300,200,400,400); validate(); setDefaultCloseOperation(EXIT_ON_CLOSE); public static void main(String args) TanChiShe tcs=new TanChiShe(); public void actionPerformed(ActionEvent e) if(e.getSource()=ks) length = 6; life = 0; foods = 0; if(she=null) she=new Thread(this); she.start(); else if(she!=null) she=null; she= new Thread(this); she.start(); if(e.getSource()=tc) System.exit(0); if(e.getSource()=zz) JOptionPane.showMessageDialog(this, 成晓晓+nn+n); if(e.getSource()=fsi) JOptionPane.showMessageDialog(this,最高记录为+fenshu+); public void check() isDead(); if(she!=null) if(growth=0) reform(); else upgrowth(); if(x=objectX&y=objectY) object=0; growth=1; toolkit.beep(); if(object=0) object=1; objectX=(int)Math.floor(Math.random()*39)*10; objectY=(int)Math.floor(Math.random()*29)*10+50; this.repaint(); void isDead() if(z=4) x=x+10; else if(z=3) x=x-10; else if(z=2) y=y+10; else if(z=1) y=y-10; if(x390|y390) she=null; for(i=1;ilength;i+) if(mi=x&ni=y) she=null; public void upgrowth() if(length50) length+; growth-; time=time-10; reform(); life+=100; if(fenshu0;i-) mi=mi-1; ni=ni-1; if(z=4) m0=m0+10; if(z=3) m0=m0-10; if(z=2) n0=n0+10; if(z=1) n0=n0-10; public void keyPressed(KeyEvent e) if(she!=null) if(e.getKeyCode()=KeyEvent.VK_UP) if(z!=2) z=1; check(); else if(e.getKeyCode()=KeyEvent.VK_DOWN) if(z!=1) z=2; check(); else if(e.getKeyCode()=KeyEvent.VK_LEFT) if(z!=4) z=3; check(); else if(e.getKeyCode()=KeyEvent.VK_RIGHT) if(z!=3) z=4; check(); public void keyReleased(KeyEvent e) public void keyTyped(KeyEvent e) public void paint(Graphics g) g.setColor(Color.DARK_GRAY); g.fillRect(0,50,400,400); g.setColor(Color.pink); for(i=0;i=length-1;i+) g.fillRect(mi,ni,10,10); g.setColor(Color.green); g.fillRect(objectX,objectY,10,10); g.setColor(Color.white); g.drawString(当前 分数+this.life,6,60); g.drawString(当前已吃食物数+this.foods,6,72); 4、 程序总结运行结果通过这次课程设计,我对这学期所学的JAVA语言程序设计有一个更深刻的了解,将所学的知识应用于实践,由于所学知识有限,为了使游戏能够实现自己预先的构想,我通过上网和去图书馆找程序,比较好的流程图及功能模块,不断阅读修改代码使程序达到预期所要实现的目标,完成课程设计后,可以感觉到自己对Java程序的又有了新的认识。虽然花了好大劲做完了这个小程序,但是其中还是有很多不足的地方,首先由于我的个人能力有限,没有设置贪吃蛇的暂停与继续,没有给游戏添加背景音乐只设置了重新开始和推出游戏以及难易程度,最高纪录。再者贪吃蛇的界面设置的不够好看,我是根据java课程的大实验做的,所以将模块功能的按钮放在了菜单里边,这样玩家看到的游戏界面给玩家身临其境的感觉不是很强。即便是程序有好几处不足的地方,但是还是有优点的,如可以使用键盘是蛇移动
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 修井工程考试试题及答案
- 山东航空考试试题及答案
- 中考监考考试试题及答案
- 建筑实务考试题及答案
- 食管癌患者的临床观察
- 外科三基试题及答案
- 家电公司税务风险防范办法
- 班主任初中工作计划总结
- 山东省宁阳四中2026届化学高一上期末调研试题含解析
- 2020-2025年消防设施操作员之消防设备中级技能综合检测试卷B卷含答案
- 景区演艺演员管理制度
- 2024年甘肃省张家川回族自治县教育局公开招聘试题含答案分析
- 亲子活动热狗活动方案
- 2025年黑龙江、吉林、辽宁、内蒙古高考生物真题试卷(解析版)
- 河南省郑州市2023-2024学年高一下学期6月期末物理试题(解析版)
- 2024年中级统计师《统计基础理论及相关知识》真题及答案解析
- 智能制造虚拟仿真实训基地建设目标
- 《慢性乙肝治疗策略》课件
- 施工用电合同协议书
- 国际制药工程协会(ISPE)制药工程基本指南水和蒸汽系统
- 中小企业数字化转型的成效评估与优化
评论
0/150
提交评论