《Java程序设计报告《贪吃蛇》 (2)(2020年12月整理).pptx》由会员分享,可在线阅读,更多相关《Java程序设计报告《贪吃蛇》 (2)(2020年12月整理).pptx(13页珍藏版)》请在金锄头文库上搜索。
1、Java 程序设计 课程设计报告,题目:,贪吃蛇游戏的设计与实现,指导老师: 沈泽刚,专业:,计算机科学与技术,班级:,10-3,姓名:,梁潇,1,2,一、 课程设计目的 贪吃蛇游戏一款非常经典的手机游戏,因为它比较简单有趣,无 论老少都比较适合。目的是更好地了解和掌握 java 语言,并熟练的 运用 java 语言来实现项目。培养自主学习的能力。 本软件在设计方面本着方便、实用及娱乐性高的宗旨,在外界进 行设计的过程中,始终坚持清晰明了,在性能方面能够实现效率高, 不易出错等优点。,二、 课程设计要求 贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模 块、游戏控制模块。 三、课程设计
2、报告内容 (一)系统设计 1、程序概述 本程序是一个利用 Java 应用软件制作的贪吃蛇小游戏。 在游戏过程中,用户通过点击小键盘区的方向键来控制蛇的运行方 向;当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。 本程序的另一个功能是在程序运行窗口的左上角显示,用户在游戏过 程中所得的分数,不过缺点就是在退处程序后,下次打开程序时无法 保存。 2、游戏的主界面设计 游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要,3,包括游戏图形区域界面、游戏的速度选择更新界面、游戏分数的显示 更新界面、游戏开始按钮、暂停游戏按钮、退出游戏按钮以及游戏排 行榜按钮。,3、游戏控制模块设计 这个模块是游
3、戏的中心环节,主要完成控制游戏的开始、暂停、 退出等功能。为了能够给玩家一个很好的游戏环境,这部分应该做到 易懂、易操作。,(二) 主界面设计 游戏界面主框架主要包括游戏图形区域界面、游戏的开始按钮、 暂停按钮、游戏的退出按钮、困难程度、积分排行、关于作者。,(三) 代码设计 importjava.awt.Color; importjava.awt.Container; importjava.awt.Graphics; importjava.awt.Toolkit; importjava.awt.event.ActionEvent; importjava.awt.event.ActionLis
4、tener; importjava.awt.event.InputEvent; importjava.awt.event.KeyEvent; importjava.awt.event.KeyListener; importjavax.swing.*; publicclassTanChiSheextendsJFrameimplementsActionListener,4,KeyListener,Runnable privateJMenuBarmenuBar; privateJMenuyouXiMenu,nanDuMenu,fenShuMenu,guanYuMenu; privateJMenuIt
5、emkaiShiYouXi,exitItem,zuoZheItem,fenShuIte m; privateJCheckBoxMenuItemcJianDan,cPuTong,cKunNan; privateintlength=6; privateToolkittoolkit; privateinti,x,y,z,objectX,objectY,object=0,growth=0,time; privateintdifficult=2; privateintm=newint50; privateintn=newint50; privateThreadshe=null; privateintli
6、fe=0; privateintfoods=0; privateintfenshu=0; publicvoidrun()/运行 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(Exceptionee) System.out.println(z+); publicTanChiShe() /*创建新对象*,5,setVisible(true); menuBar=newJMenuBar(); Containe
7、rcon=getContentPane(); toolkit=getToolkit(); /*游戏菜单对象* youXiMenu=newJMenu( 游 戏 ); kaiShiYouXi=newJMenuItem(开始游戏); exitItem=newJMenuItem(退出游戏); /*困难程度对象* nanDuMenu=newJMenu(困难程度); cJianDan=newJCheckBoxMenuItem(简单); cPuTong=newJCheckBoxMenuItem(普通); cKunNan=newJCheckBoxMenuItem(困难); /*分数菜单对象* fenShuMe
8、nu=newJMenu( 积 分 排 行 ); fenShuItem=newJMenuItem(最高记录); /*关于对象* guanYuMenu=newJMenu(关于); zuoZheItem=newJMenuItem(关于作者); /*设置关于菜单* guanYuMenu.add(zuoZheItem); /*设置困难程度菜单* nanDuMenu.add(cJianDan); nanDuMenu.add(cPuTong); nanDuMenu.add(cKunNan); /*设置分数菜单*,6,fenShuMenu.add(fenShuItem); /*设置游戏菜单* youXiMen
9、u.add(kaiShiYouXi); youXiMenu.add(exitItem); /*设置主菜单* menuBar.add(youXiMenu); menuBar.add(nanDuMenu); menuBar.add(fenShuMenu); menuBar.add(guanYuMenu); /*监听注册* zuoZheItem.addActionListener(this); kaiShiYouXi.addActionListener(this); exitItem.addActionListener(this); addKeyListener(this); fenShuItem.
10、addActionListener(this); /*加快捷键* KeyStrokekeyOpen=KeyStroke.getKeyStroke(O,InputEvent.CT RL_DOWN_MASK); kaiShiYouXi.setAccelerator(keyOpen); KeyStrokekeyExit=KeyStroke.getKeyStroke(X,InputEvent.CT RL_DOWN_MASK); exitItem.setAccelerator(keyExit); /*设置框架* setJMenuBar(menuBar); setTitle(贪吃蛇); setResiza
11、ble(false); setBounds(300,200,400,400); validate(); setDefaultCloseOperation(EXIT_ON_CLOSE); publicstaticvoidmain(Stringargs) newTanChiShe(); /*菜单监听* publicvoidactionPerformed(ActionEvente) ,7,if(e.getSource()=kaiShiYouXi) length=6; life=0; foods=0; if(she=null) she=newThread(this); she.start(); els
12、eif(she!=null) she=null; she=newThread(this); she.start(); if(e.getSource()=exitItem) System.exit(0); if(e.getSource()=zuoZheItem) JOptionPane.showMessageDialog(this,梁潇+nn); if(e.getSource()=fenShuItem) JOptionPane.showMessageDialog(this,最高记录为+fenshu+); /*检查一下* publicvoidcheck() isDead(); if(she!=nu
13、ll) if(growth=0) reform(); else,8, upgrowth(); if(x=objectXi+),9, if(mi=x if(z=1),10, n0=n0-10; publicvoidkeyPressed(KeyEvente) if(she!=null) if(e.getKeyCode()=KeyEvent.VK_UP) if(z!=2) z=1; check(); elseif(e.getKeyCode()=KeyEvent.VK_DOWN) if(z!=1) z=2; check(); elseif(e.getKeyCode()=KeyEvent.VK_LEFT
14、) if(z!=4) z=3; check(); elseif(e.getKeyCode()=KeyEvent.VK_RIGHT) if(z!=3) z=4; check(); publicvoidkeyReleased(KeyEvente),11, /TODO自动生成方法存根 publicvoidkeyTyped(KeyEvente) /TODO自动生成方法存根 publicvoidpaint(Graphicsg) /*画图* 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,7