《java课程设计贪吃蛇大学论文.docx》由会员分享,可在线阅读,更多相关《java课程设计贪吃蛇大学论文.docx(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、java课程设计贪吃蛇大学论文 课程设计说明书 课程名称:Java语言程序设计 设计题目:学生成绩管理系统 院系:计算机科学与信息工程学院 学生姓名:肖文 学号:14031010141 专业班级:计算机科学与技术(14嵌入) 指导教师:张阳 2022 年12月27 日 课程设计任务书 设计题目贪吃蛇小游戏程序 学生姓名肖文所在院系计科专业、年级、班14计科嵌入 设计要求: 1. 贪吃蛇游戏是大家很常见的小游戏,在生活工作之余大家可以玩它,已达到放松 各种压力的目的。 2. 游戏可以进行升级,也就是增加吃食物的难度,以便使大家更有挑战性,不觉得 太无趣。 3. 游戏界面大小可以任意指定,数据从文
2、件读入。 4. 利用swing实现良好的GUI界面。 学生应完成的工作: 1. 贪食蛇的前移算法主要是蛇身结点前移,后面的覆盖前面的蛇身结点。依靠的调 用编写的成员方法实现。 2. 在贪吃蛇中蛇头来控制蛇的移动方向,依靠的调用编写的成员方法实现。 3. 要求用户界面采用图形用户界面,影响方向键的控制。 4. 重复的调用paint()函数来实现对界面的重绘和食物的重置。 5. 源程序中要有充分的注释,报告中要有详细的流程图。 6. 运行的结果以及图形用户界面要进行屏幕拷贝,插入报告中。 幕拷贝,插入报告中。 参考文献阅读: 1. Java语言程序设计(美)YDaniel Liang 机械工业出版
3、社 2. 赵毅主编.跨平台程序设计语言Java.西安:西安电子科技大学出版社,2022 3. 王路群.Java高级程序设计.北京:中国水利水电出版社,2022 工作计划: 1,12月21日,选择该课题,然后分析结构。 2,12月21日至25日开始编写各个模块。 3,12月28日至29日,对设计的系统进行测试以及进行修改。 4,12月30日,贪吃蛇完成。 任务下达日期:2022 年12月10 日 任务完成日期:2022 年12月24 日 指导教师(签名):学生(签名): 贪吃蛇小游戏 摘要:贪吃蛇是家喻户晓的益智类小游戏,选择这题目一是为了将自己所学的知识加以运用,二是一直以来贪吃蛇这个游戏深深
4、的吸引着我,它的制作方法对于提前的我而言都是神秘的。我希望通过自己所学知识把它剖析开来,真真正正的了解它的本质和精髓。虽然我的编程能力不是很强,但是我有信心,在这次学习中我将从实践的项目中提高自己的编程能力,因此我选定了这个项目。 关键词: 贪吃蛇;java;学习;放松 目录 1. 设计背景 (4) 1.1问题描述 (4) 1.2 问题分析 (4) 2.设计方案 (4) 2.1 算法分析 (5) 2.2 类的设计 (5) 3.用户界面设计 (6) 4. 模块划分及调用关系 (8) 5. 运行说明及系统运行测试 (9) 6. 收获与致谢 (4) 7. 参考文献. 错误!未定义书签。 8. 附件
5、(15) 9. 附录源代码 (16) 1. 设计背景 1.1问题描述 贪吃蛇是家喻户晓的益智类小游戏,选择这题目一是为了将自己所学的知识加以运用,二是一直以来贪吃蛇这个游戏深深的吸引着我,它的制作方法对于提前的我而言都是神秘的。我希望通过自己所学知识把它剖析开来,真真正正的了解它的本质和精髓。虽然我的编程能力不是很强,但是我有信心,在这次学习中我将从实践的项目中提高自己的编程能力,因此我选定了这个项目。 1.2 问题分析 这个程序是用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块。移动时必须从蛇头开始,也就是蛇尾不能改作蛇头。当游戏者按了方向键后,蛇头朝着指定的方向移动,一步移动一节
6、身体。图形的实现是从蛇头的新位置开始画出蛇。用户可以用上下左右键控制蛇头的方向。非常简单。 2.设计方案 2.1算法分析 1. 贪吃蛇是很经典的格子游戏。所谓格子游戏就是在设计游戏时的主要思想是每个设对象都是由格子组成,游戏运行界面也是由格子组成。格子思想决定了此类游戏在设计时的算法思想。 2. 方向键控制一个方块的移动的方法,一个方块的移动是靠移动其坐标位置来实现的。 3. 方向键控制是上下左右对一个方块的控制,用四个判断语句实现。 4. 蛇的移动算法思想可以看成是第一个方块移动,第二个方块移到第一个方块的位置, 第三个方块移动到第二个方块的位置?第N个方块移动到第N-1个方块的位置。这样连
7、续的移动就是蛇的移动了。方向控制键控制了第一个方块的移动后,后面方块跟着移动 ,这样也实现了方向键控制对长蛇的移动。 5. 食物的随机产生的方法食物的随机产生需要一个随机种子函数然后利用系统时间做为随机种子。 6. 蛇的身体变长的方法当然要当蛇吃到食物时才能使身体变长。因此有两个需要解决的问题:问题一:如何知道是否吃到食物?问题二:吃到食物后身体变长?解决问题一的方法是需要一个判断语句,当蛇头即构成蛇的第一个方块跟食物所在方块的坐标一样时判断吃到食物。解决问题二则要相对复杂一些,需要多个判断语句构成。 7. 游戏结束的方法,当蛇碰到边框时或者吃到自己时游戏结束。根据这个思想可以用判断语句实现。
8、然后是游戏结束后的处理,比如显示继续玩游戏还是退出游戏,并显示 所吃到的食物的个数和时间等。 2.2类的设计 1.创建的类的描述。 1. Login类,登陆界面要求输入登陆者输入用户名和密码,分别设Go和Cancel两个登 陆选项。 Login 属性:用户名密码 Go(进入游戏) Cancel(取消) 操作: Enter() Close() 2.SnakeFrame类,创建游戏窗口主界面。采用图形界面设计,有窗体,菜单栏 和游戏操作界面。 3.SnakeModel类,此类为蛇的初始化状态及模型,所有的游戏的开始都通过此 类初始化及对蛇的操作。 SnakeModel 属性: rows,cols,
9、snakeHead,runingDiriction,locRO,snake,playBlocks snakeFood,gameScore,AddScore 操作: LocationRO getSnakeHead(),LocationRO getSnakeTail(), Location getRuningDiriction(),LinkedList getSnake(), LinkedList getOthers(), getScore(),getAddScore(), setSnakeHead(Location snakeHead),LocationRO getSnakeFood(), se
10、tSnakeFood(),moveTo(Object a,LinkedList fromlist,LinkedList tolist), init(),SnakeModel(int rows1,int cols1),move(Location direction) 4. SnakePanel类,此类为游戏界面创建蛇的面板和蛇的移动控制实现。 SnakePanel 属性:gridsPanel, row; col; gridsPanel;direction;snake; snakeBody; otherBlocks;snakeHead; snakeFood; gameScore=0; speed;
11、 AddScore; t; isEnd; notExit; 操作:SnakePanel(SnakeFrame parent,int row,int col),newGame(long speed) stopGame(),returnGame(),getGameScore(),updateTextFiled(String str) updateColors(),run(),keyPressed(KeyEvent event) keyReleased(KeyEvent event),keyTyped(KeyEvent event) change(SnakeFrame parent,int row2
12、, int col2) 5. LocationRO类,随机生成的食物位置。用来随机生成食物。引导蛇的移动方向。 6. Location类,对蛇的位置的描述类。 Location 属性: x y 操作:Location(int x,int y) ,getX(),getY(),setX(int x), setY(int y) ,equalOrRev(Location e),equals(Location e) , reverse(Location e) 2.类之间的调用关系。 3.用户界面 1. 登陆界面 Login 登陆 SnakeFrame Location SnakeModel SnakeP
13、anel LocationRO 2.游戏主界面 1. 为游戏设置权限,为游戏设置登陆界面。 2. 游戏界面采用图形界面美观大方易操作。 3. 功能齐全,可以选择开始,暂停,继续可以随时操控游戏状态,方便易操作, 人性化设计。 4. 设置菜单功能齐全,可以让界面显示网格和取消显示网格,还可以根据自己 的实际能力情况选择游戏的等级。 5. 窗口大小菜单可以根据自己的需要和爱好调整窗体的大小,可以选择大中小 三种窗体。适合不同的需要。 6. 本程序设置了作者信息菜单可以查询程序的制作人的信息等。 7. 对于新手用户,我为他们设置了操作指南菜单,帮助他们方便快捷的学会游 戏的操作步骤。 4.模块划分及
14、调用关系 主要模块 1. 游戏界面模块和登陆模块流程图。 开始 登陆界面 游戏界面 取消登录 退出程序 结束 开始 登陆界面 输入用户名和密码 进入游戏 取消登录 设置 作者信息 结束游戏 帮助 窗口大小 文件 操作指南 开始 暂停 继续 等级 显示网格 视图 软件信息 中 小 大 退出 2. 游戏模块 否 是 否 是 否 是 5.运行说明及系统运行测试 1.安装eclipse ,在其上运行。 2. 如图在eclipse 中创建java 项目,在src 下建立SnakeGameDemo 包将所有的源程序放入包中,在项目中建立img 图片文件夹,将文件中需要的图片放入其中以便调用。 是否碰到蛇身
15、墙 是否吃到食物 蛇身加长,分数增加 提示游戏结 结束 随机显示食物 蛇蛇运动 是否开始 游戏开始 创建贪吃蛇 是否结束 暂停 3. 主函数在Login类中,只需运行Login.java程序进入登陆界面,输入用户名 和密码进入游戏。 4. 在文件菜单下开始,暂停,继续游戏。 5. 对第一次进入的用户请先看操作说明。 1、程序上机调试报告 1. 将所有外部类定义为公共类,可以直接拿来应用,必须引入一个包来定义一 个类来进行使用。程序中的蛇是用网格布局中的小面板组成,蛇的身体由等大的小网格组成。 2. 键盘事件未进行监听以致键盘操作无法进行,监听函数有错误。最后加入正 确的监听函数。 3. 在eclipse上运行,程序出现乱码,通过调试编辑器解决。 1. 游戏开始出现的方块是随机给的,但每个游戏中只给一种形状的方块,最后 将随机函数放在游戏开始中,程序方可执行; 2. 贪吃蛇在吃掉一个食物后,不能实现分数累加,在游戏中改变成员方法 public boolean getAddScore() return AddScore; 3. 游戏在运行过程中不能暂停,在游戏中增加暂停控制 public void stopGame() requestFocus(); isEnd=true; 2、程序测试结果 1. 游戏登陆测试,用户名:,密码:123456. 2. 进入主界面。
限制150内