java课程设计贪吃蛇.doc

上传人:jian****018 文档编号:8804020 上传时间:2020-04-01 格式:DOC 页数:11 大小:115KB
返回 下载 相关 举报
java课程设计贪吃蛇.doc_第1页
第1页 / 共11页
java课程设计贪吃蛇.doc_第2页
第2页 / 共11页
java课程设计贪吃蛇.doc_第3页
第3页 / 共11页
点击查看更多>>
资源描述
华 北 科 技 学 院课程设计说明书面向对象程序设计(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课程的大实验做的,所以将模块功能的按钮放在了菜单里边,这样玩家看到的游戏界面给玩家身临其境的感觉不是很强。即便是程序有好几处不足的地方,但是还是有优点的,如可以使用键盘是蛇移动的速度加快,能将玩家的分数进行记录。能够显示最高纪录,当蛇吃到事物的时候会有系统的提示音,可以设置游戏的难易程度等。希望在以后的实践中能够将这些不足都改掉,首先添加上暂停和继续功能,这样就方便了玩家在玩的过程中有事的话就可以暂停游戏等到忙完了在接着玩,添加上这个功能之后贪吃蛇这个游戏显得更加人性化。再者将画布分成两个区域,左边用来放游戏的主界面(贪吃蛇的运行及食物),右边放置功能按钮,这样玩家在玩得过程中如果想改变一下玩的难易程度等时就不用点击菜单,直接点击自己想要的就可以实现,这样就方便了玩家,也使游戏界面显得更加的具有游戏的特色。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!