您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 疯狂贪吃蛇JAVA实现课程设计报告
安阳工学院计算机科学与信息工程学院JAVA程序设计课程综合项目报告项目题目:疯狂贪吃蛇专业班级:11计科信息学生姓名:潘强学生学号:201103020005指导教师姓名:许研2013年12月2目录一、系统目标.............................................................................................3二、系统设计思路.....................................................................................3三、系统详细设计.....................................................................................4四、系统实现.............................................................................................8五、系统设计总结...................................................................................14六、参考文献...........................................................................................153疯狂贪吃蛇一、系统目标运用java技术开发出贪吃蛇游戏,这个程序是用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块。移动时必须从蛇头开始,也就是蛇尾不能改作蛇头。当游戏者按了方向键后,蛇头朝着指定的方向移动,一步移动一节身体。图形的实现是从蛇头的新位置开始画出蛇。用户可以用上下左右键控制蛇头的方向。非常简单!可以实现如下功能:1.贪吃蛇游戏是大家很常见的小游戏,在生活工作之余大家可以玩它,已达到放松各种压力的目的。2.游戏可以进行升级,也就是增加吃食物的难度,以便使大家更有挑战性,不觉得太无趣。3.游戏界面大小可以任意指定,数据从文件读入。4.利用swing实现良好的GUI界面。二、系统设计思路1.贪吃蛇是很经典的格子游戏。所谓格子游戏就是在设计游戏时的主要思想是每个设对象都是由格子组成,游戏运行界面也是由格子组成。格子思想决定了此类游戏在设计时的算法思想。2.方向键控制一个方块的移动的方法,一个方块的移动是靠移动其坐标位置来实现的。3.方向键控制是上下左右对一个方块的控制,用四个判断语句实现。4.蛇的移动算法思想可以看成是第一个方块移动,第二个方块移到第一个方块的位置,第三个方块移动到第二个方块的位置⋯⋯第N个方块移动到第N-1个方块的位置。这样连续的移动就是蛇的移动了。方向控制键控制了第一个方块的移动后,后面方块跟着移动,这样也实现了方向键控制对长蛇的移动。45.食物的随机产生的方法食物的随机产生需要一个随机种子函数然后利用系统时间做为随机种子。6.蛇的身体变长的方法当然要当蛇吃到食物时才能使身体变长。因此有两个需要解决的问题:问题一:如何知道是否吃到食物?问题二:吃到食物后身体变长?解决问题一的方法是需要一个判断语句,当蛇头即构成蛇的第一个方块跟食物所在方块的坐标一样时判断吃到食物。解决问题二则要相对复杂一些,需要多个判断语句构成。7.游戏结束的方法,当蛇碰到边框时或者吃到自己时游戏结束。根据这个思想可以用判断语句实现。然后是游戏结束后的处理,比如显示继续玩游戏还是退出游戏,并显示所吃到的食物的个数和时间等。三、系统详细设计【类的设计】1.创建的类的描述。1.Login类,登陆界面要求输入登陆者输入用户名和密码,分别设Go和Cancel两个登陆选项。Login属性:用户名密码Go(进入游戏)Cancel(取消)操作:Enter()Close()2.SnakeFrame类,创建游戏窗口主界面。采用图形界面设计,有窗体,菜单栏和游戏操作界面。3.SnakeModel类,此类为蛇的初始化状态及模型,所有的游戏的开始都通过此类初始化及对蛇的操作。SnakeModel属性:rows,cols,snakeHead,runingDiriction,locRO,snake,playBlockssnakeFood,gameScore,AddScore操作:LocationROgetSnakeHead(),LocationROgetSnakeTail(),LocationgetRuningDiriction(),LinkedListgetSnake(),LinkedListgetOthers(),getScore(),getAddScore(),setSnakeHead(LocationsnakeHead),LocationROgetSnakeFood(),setSnakeFood(),moveTo(Objecta,LinkedListfromlist,LinkedListtolist),init(),SnakeModel(introws1,intcols1),move(Locationdirection)4.SnakePanel类,此类为游戏界面创建蛇的面板和蛇的移动控制实现。5SnakePanel属性:gridsPanel,row;col;gridsPanel;direction;snake;snakeBody;otherBlocks;snakeHead;snakeFood;gameScore=0;speed;AddScore;t;isEnd;notExit;操作:SnakePanel(SnakeFrameparent,introw,intcol),newGame(longspeed)stopGame(),returnGame(),getGameScore(),updateTextFiled(Stringstr)updateColors(),run(),keyPressed(KeyEventevent)keyReleased(KeyEventevent),keyTyped(KeyEventevent)change(SnakeFrameparent,introw2,intcol2)5.LocationRO类,随机生成的食物位置。用来随机生成食物。引导蛇的移动方向。6.Location类,对蛇的位置的描述类。Location属性:xy操作:Location(intx,inty),getX(),getY(),setX(intx),setY(inty),equalOrRev(Locatione),equals(Locatione),reverse(Locatione)2.类之间的调用关系。【用户界面】1.登陆界面2.游戏主界面Login登陆SnakeFrameLocationSnakeModelSnakePanelLocationRO6【程序技巧】1.为游戏设置权限,为游戏设置登陆界面。2.游戏界面采用图形界面美观大方易操作。3.功能齐全,可以选择开始,暂停,继续可以随时操控游戏状态,方便易操作,人性化设计。4.设置菜单功能齐全,可以让界面显示网格和取消显示网格,还可以根据自己的实际能力情况选择游戏的等级。5.窗口大小菜单可以根据自己的需要和爱好调整窗体的大小,可以选择大中小三种窗体。适合不同的需要。6.本程序设置了作者信息菜单可以查询程序的制作人的信息等。7.对于新手用户,我为他们设置了操作指南菜单,帮助他们方便快捷的学会游戏的操作步骤。【模块划分及调用关系】7主要模块【模块流程图】1.游戏界面模块和登陆模块流程图。开始登陆界面游戏界面取消登录退出程序结束开始登陆界面输入用户名和密码进入游戏取消登录设置作者信息结束游戏帮助窗口大小文件操作指南开始暂停继续等级显示网格视图软件信息中小大退出结束82.游戏模块否是否是否是四、系统实现【测试数据】1.游戏登陆测试,用户名:杨文,密码:123456.2.进入主界面。3.测试文件菜单;游戏开始,贪吃蛇窗墙则游戏结束;退出提示。4.测试设置菜单。5.测试窗口大小菜单。6.测试作者信息菜单。7.测试帮助菜单。【输出结果】1.登陆测试2.进入主界面是否碰到蛇身\墙是否吃到食物蛇身加长,分数增加提示游戏结结束随机显示食物蛇蛇运动是否开始游戏开始创建贪吃蛇是否结束暂停93.测试文件菜单文件主界面1.菜单/开始102.贪吃蛇窗墙则游戏结束3.退出提示。文件/退出。114.测试设置菜单.5.测试窗口大小菜单。126.测试作者信息菜单。137.测试帮助菜单。14五、系统设计总结通过一学期的学习,我自己认为自己学java没学好,而在整个新技术专题中我觉得贪吃蛇的游戏应该是最简单的。通过这次课程设计,我对java又有了更深刻的认识。也有了更深一步的喜爱,决定一定要努力学好java,并能更好的应用于以后的工作中。这次贪吃蛇的设计,我做的不是很完美,也没想象中的那么好,但也获得了许多宝贵的经验:1)在设计程序之前,务必要对自己所要设计的题目和内容有一个系统的,大概的了解,知道所设计的题目和内容包含哪些资源。152)设计程序采用什么编程语言并不是非常重要,关键是要有一个清晰的思路和一个完整的软件流程图,所有要先把设计原理与思路搞清楚,再把流程图画出来,这样设计起来就简单多了。3)在设计程序时,不能妄想一次就将整个程序设计好,“反复修改,不断改进”是程序设计的必经之路,发现错误也是取得成绩及成绩的一种必经之路。4)要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白自己的思路,这样也为资料的保存和交流提供了方便。在以后的学习和工作中,我希望我能把这些经验应用起来。为以后的工作顺利进行,也让自己获得一定的能力,能够拥有一份好的工作。六、参考文献[1]魏伟译.JBuilder开发人员指南[M].北京:机械工业出版社,2001.1.[2]胡雷,叶曙光,徐饪.JBuilder9.0入门与提高[M].北京:机械工业出版社,2004.[3]田勇,孙新.Jbuilder开发人员指南[M].北京:机械工业出版社,2001.[4]李尊朝,苏军.Java语言程序设计(第二版)[M].北京:中国铁道出版社2009.[5]黄晓东.Java课程设计案例精编(第二版)[M].北京:中国水利水电出版社,2008.[6]陆光义,宋现锋.Java游戏编程导学[M].北京:清华大学出版社.2004.附件:详细代码1.Login类packageSnakeGameDemo;importjava.awt.Color;importjava.awt.Container;importjava.awt.Graphics;importjava.awt.GridLayout;importjava.awt.Image;importjava.awt.Label;16importjava.awt.Panel;importjava.awt.TextField;importjava.awt.Toolkit;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JOptionPane;importjavax.swing.JPanel;//登陆界面publicclassLoginextendsJFrame{privateTextFieldf1;//创建文本框privateTextFieldf2;privateJButtonb1;//创建按钮privateJButtonb2;publicLogin(){//登陆界面Containercp=getContentPane();//获取容器
本文标题:疯狂贪吃蛇JAVA实现课程设计报告
链接地址:https://www.777doc.com/doc-6365569 .html