1、Java程序设计报告贪吃蛇Java程序设计课程设计报告题 目 贪吃蛇游戏的设计与实现 指导老师: 沈泽刚 专 业: 计算机科学与技术 班 级: 10-3 姓 名: 梁潇 课程设计目的贪吃蛇游戏一款非常经典的手机游戏, 因为它比较简单有趣, 无 论老少都比较适合。目的是更好地了解和掌握 java 语言,并熟练的 运用 java 语言来实现项目。培养自主学习的能力。本软件在设计方面本着方便、 实用及娱乐性高的宗旨, 在外界进 行设计的过程中,始终坚持清晰明了,在性能方面能够实现效率高, 不易出错等优点。二、 课程设计要求贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模 块、游戏控制模块。三
2、、 课程设计报告内容( 一 ) 系统设计1、程序概述本程序是一个利用 Java 应用软件制作的贪吃蛇小游戏。在游戏过程中,用户通过点击小键盘区的方向键来控制蛇的运 行方向;当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。本程序的另一个功能是在程序运行窗口的左上角显示, 用户在 游戏过程中所得的分数, 不过缺点就是在退处程序后, 下次打开程序 时无法保存。2、游戏的主界面设计游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主 要包括游戏图形区域界面、 游戏的速度选择更新界面、 游戏分数的显 示更新界面、游戏开始按钮、暂停游戏按钮、退出游戏按钮以及游戏 排行榜按钮。3、游戏控制模块设计这个模
3、块是游戏的中心环节, 主要完成控制游戏的开始、 暂停、 退出等功能。 为了能够给玩家一个很好的游戏环境, 这部分应该做到 易懂、易操作。( 二) 主界面设计游戏界面主框架主要包括游戏图形区域界面、游戏的开始按钮、暂停按钮、游戏的退出按钮、 困难程度、积分排行、关于作者( 三 ) 代码设计import java.awt.Color;import java.awt.Container;import java.awt.Graphics;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.Act
4、ionListener;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import javax.swing.*;public class TanChiShe extends JFrame implements ActionListener, KeyListe ner,R unn ableprivate JMe nuBar men uBar;private JMe nu youXiMe nu,nan DuMe nufen ShuMe nu ,gua
5、 nYuMenu;private JMe nultem kaiShiYouXi,exitltem,zuoZheltem,fe nShultem;private JCheckBoxMe nultem cJia nDan ,cPuT on g,cK unNan;privateintlen gth = 6;privateToolkit toolkit;privateinti,x,y, z,o bjectX,objectY,object=0,growth=0,timeprivateintdifficult=2;privateintm= new int 50;privateintn= new int 5
6、0;privateThread she = null ;privateintlife=0;privateintfoods = 0;privateintfen shu=0;publicvoidrun() / 运行time=500;for (i=0;i=length-1;i+)mi=90-i*10; n i=60;x=m0;y=n0;z=4;while (she!= null )check();tryshe. sleep (time);catch (Exception ee)System. out .println(z+);public TanChiShe()创建新对象*setVisible( t
7、rue);men uBar = n ewJMe nuBar();Container con=getC onten tPa ne();toolkit=getToolkit();youXiMenu = newJMenu(” 游戏); kaiShiYouXi = newJMenultem(” 开始游戏);exitItem = newJMenultem(” 退出游戏);nanDuMenu = newJMenu(困难程度); cJianDan = newJCheckBoxMenultem(” 简单); cPuTong = newJCheckBoxMenultem(” 普通); cKunNan = new
8、JCheckBoxMenultem(” 困难);newJMenu(” 积分排行); newJMenultem(最高记录);偽 *guanYuMenu = newJMenu(” 关于); zuoZheltem = newJMenultem(” 关于作者);*设置困难程度菜单*设置关于菜单*gua nYuMenu .add(zuoZheltem);nan DuMe nu .add(cJia nDan); nan DuMe nu .add(cPuT on g); nan DuMe nu .add(cKu nNan);/*设置分数菜单 *fen ShuMe nu.add(fe nShultem);/*
9、设置游戏菜单 *youXiMe nu.add(kaiShiYouXi); youXiMe nu .add(exitltem);*设置主菜 *men uBar.add(youXiMe nu); men uBar.add( nan DuMe nu); men uBar.add(fe nShuMe nu);men uBar.add(gua nYuMenu);zuoZheltem.addActionListener( this );kaiShiYouXi.addActionListener( this );exitltem.addActionListener( this );addKeyListene
10、r( this );fenShultem.addActionListener( this );加快捷键*keyOpenCTRL_DOWN_M)A; SKkeyExitCTRL_DOWN_M)A; SKKeyStrokeKeyStroke. getKeyStroke (O,InputEvent. kaiShiYouXi.setAccelerator(keyOpen);KeyStrokeKeyStroke. getKeyStroke (X,InputEvent.exitItem.setAccelerator(keyExit);设置框架*setJMenuBar(menuBar); setTitle(
11、 贪吃蛇 );setResizable( false ); setBounds(300,200,400,400); validate();setDefaultCloseOperation( EXIT_ON_CLOS);E public static void main(String args)newTanChiShe(); *public void actionPerformed(ActionEvent e) if (e.getSource()=kaiShiYouXi)length = 6;life = 0;foods = 0;if (she= null )she= newThread( th
12、is );she.start();else if (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+); /*检查一下 *publ
13、ic void check() isDead();if (she!= null )if (growth=0)reform();elseupgrowth();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)
14、 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) n
15、0=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_DOW) Nif (z!=1)z=2;check();else if (e.getKeyCode()=KeyEvent. VK_LEFT)if (z!=4)z=3;check();else if (e.getKeyCode()=KeyEvent. VK_RIG
16、H)Tif (z!=3)z=4;check();public void keyReleased(KeyEvent e)/ TODO自动生成方法存根public void keyTyped(KeyEvent e)/ TODO自动生成方法存根public void paint(Graphics g)/* 画图 * g.setColor(Color. DARK_GR)A;Y 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.
17、 green );g.fillRect(objectX,objectY,10,10);g.setColor(Color. white );g.drawString( 当前 分数 + this .life,6,60);g.drawString( 当前已吃食物数 + this .foods,6,72); (四)测试(五)使用说明在游戏过程中,用户通过点击小键盘区的方向键来控制蛇的运行 方向;当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。同时,游戏可以使用快捷键, Ctrl+O 为开始游戏,Cirl+X为退出游戏。四、总结(心得体会)在设计过程中遇到一些问题,在游戏过程中,左上角显示所得的分数,不过缺点就是在退处程序后,下次打开程序时无法保存整个设计过程是不断学习,不断发现问题、分析问题、解决问题 的过程。使我受益良多。 设计期间有很多感触, 想法,对以后的学习、 工作有很大的益处。如有侵权请联系告知删除,感谢你们的配合!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1