贪吃蛇Java课程设计

上传人:新** 文档编号:430803363 上传时间:2023-08-27 格式:DOCX 页数:25 大小:148.21KB
返回 下载 相关 举报
贪吃蛇Java课程设计_第1页
第1页 / 共25页
贪吃蛇Java课程设计_第2页
第2页 / 共25页
贪吃蛇Java课程设计_第3页
第3页 / 共25页
贪吃蛇Java课程设计_第4页
第4页 / 共25页
贪吃蛇Java课程设计_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《贪吃蛇Java课程设计》由会员分享,可在线阅读,更多相关《贪吃蛇Java课程设计(25页珍藏版)》请在金锄头文库上搜索。

1、目录1. 设计任务与要求11.1设计任务11.2具体要求12. 软件主要模块流程图23. 总体方案与说明33.1总体方案33.2系统模块33.2.1游戏界面设计33.2.2贪吃蛇蛇身及运动设置53.2.3游戏控制设置34. 程序设计44.1GamePanel 类44.2.Snake 类45. 分析问题与解决方案55.1问题处理56小结与体会6参考文献(资料)7程序代码:8基于Java的游戏“贪吃蛇”的设计和实现内容提要:“贪吃蛇游戏是一个经典的游戏,它因操作简单、娱乐性强而广 受欢迎。本文基于Java技术开发环境,开发了一个操作简单、界面美观、 功能较齐全的“贪吃蛇游戏。整个游戏程序分六个类模

2、块,实现了游戏 的开始、暂停、结束。通过本游戏的开发,达到学习Java技术和熟悉软 件开发流程的目的。1.设计任务与要求1.1设计任务设计一个贪吃蛇的游戏功能要求:能够显示贪吃蛇的运动,能通过键盘控制贪吃蛇的运行, 能够处理蛇在运行中各种情况,以及其它的辅助功能。 设计任务要完成设计、编码、测试等过程,给出设计思路、 主要代码。源代码以及可运行的贪吃蛇游戏。1.2具体要求具体内容如下:1)设计任务与要求2)总体方案与说明3)面向对象的设计(主要类的设计)4)源程序清单与注释5)软件主要模块流程图6)问题分析与解决方案(包括调式记录、调式报告,即在调式 过程中遇到的主要问题、解决方法及改进设想)

3、;7)小结与体会2.软件主要模块流程图软件的主要模块流程如下图5-1所示图51游戏处理流程3. 总体方案与说明3.1总体方案我们设计的贪吃蛇主要利用键盘控制蛇的前进移动方向,是否吃到食 物,是否撞墙以及是否暂停、开始游戏等。当吃到食物的时候,蛇就自动 长大一格,在游戏中可进行暂停和开始操作。中途若是撞到墙或是撞到自 己,同样也结束。3.2系统模块根据总体方案,我把贪吃蛇游戏分为:游戏界面设置(即绘图贪吃 蛇蛇身及运动与碰撞问题(食物、蛇身、石头)设置三大模块来设计。 3.2.1游戏界面设计游戏界面设置包括:游戏区,蛇的长度信息,获得分数的信息以及历 史最高分的信息。游戏界面使用简单和直观的布局

4、设计,游戏区放置在界面的主题位置 上,在游戏区右上方放置蛇的长度数据及获得的分数数据,具体设计效果 如图2-1所示。贪吃蛇口曰%lengV1: 2!irukrn:0hiahnum01按Ent日r暂始uJJ-图2-1游戏界面-J附加代码:import java.awt.*;import java.io.*;import java.util.*;import javax.swing.JFrame;public class GameFrame extends JFrame (public GamePanel panel = new GamePanel(this);public Snake xiaoq

5、ing = new Snake(this);public Control ct = new Control(this);public Food food = new Food(this);public LinkedList rocks = new LinkedList();public GameFrame()(public void intiRocks()(public void inti() (private Snake snake;Properties dbconfig = new Properties();static FileInputStream file;public String

6、 msg() throws IOException(private class SnakeDriver implements Runnable (Overridepublic void run() (public static void main(String args) (GameFrame gf = new GameFrame();3.2.2贪吃蛇蛇身及运动设置贪吃蛇的蛇身设置是整个游戏设计的关键。它的基本思路是:移动 的时候去掉蛇尾,将其添加在蛇头(去尾加头),吃到食物时将之前去掉 的尾部在重新加上,完成蛇头吃食物的处理操作,显示蛇头。具体效果如 图2-2所示。而蛇运动的四个方向,则通过

7、按键来控制。蛇吃到一个食物,就加分。 每次食物出现的位置不能在蛇身上也不能在屏幕外面,如果蛇在运动的过图2-3就是蛇撞到墙之后,提示游戏结束。附加代码:蛇的移动public void move() ( /蛇的移动方法if(gf.panel.isPause() return; 判断游戏是否暂停 if(!life) return;/判断游戏是否GAME OVERtail = bady.getLast();/记录下它尾节点bady.removeLast();/删除它的尾节点int x = bady.getFirst().x;获取它头结点的Xint y = bady.getFirst().y;/获取它

8、头节点的 Yif (key + KeyBuffer != 0)( switch (key)( 就算其头结点坐标 /防止蛇跑出屏幕if (x Constant. COMPANY_WIDTH- 1) (x = 0;if(y Constant. COMPANY_HEIGHT- 1) (y = 0;bady.addFirst(new Point(x,y); /在其头部加上新的 X,Y 坐标蛇吃食物,撞墙,撞身体public boolean eatFood(Food food) public boolean eatRock(Rocks rock)(public boolean eatBody()(3.2

9、.3游戏控制设置游戏控制设置就是控制游戏的暂停与开始及重新游戏。W、S、A、D或 上、下、左、右键控制蛇的上、下、左、右移动,设置enter按键来暂停 或开始进行中的游戏,设置F1来重新开始游戏。4. 程序设计贪吃蛇游戏各模块及程序流程有若干类实现,下面阐述各个类的设计 与实现。4.1GamePanel 类该类包含六个主要的功能方法,分别是:(1) 构造函数public paintComponrnt (),主要用来设置用户控制面。(2) public void keyPressed()方法,主要用来对游戏的按键操作进 行处理。(3) void drawFood() drawRocks()主要用

10、来绘制游戏界面食物和石 头。(4) public void drawfenshu ()方法主要用来改变积分器。(5) public void drawPause()方法用来实现暂停(6) void drawGameOver()方法用来控制游戏的开始界面。4.2.Snake 类该类包含多个功能方法,分别是:(1) 构造函数public Snake(),该方法主要用来初始化游戏界蛇 的位置及大小且给其一个初始方向。用一个LinkedList,用来保 存蛇的每一节;在利用drawMe()方法遍历LinkedList中保存的 节点来画出游戏界面中的蛇。(2) public void move()方法主

11、要用来改变蛇的运动方向,首先判断游戏是否暂停,还有是否GameOver跳出该方法,蛇 不能移动否则先保存它的尾节点,在将其尾节点删除,获取其头 节点的XY坐标,如果你同时按下2个按键其和为0则按原始方向 移动,在获取到移动后XY坐标,将其加在蛇的头部(3) public boolean eatRocks()方法使实现蛇吃石头的函数,首先判断蛇身体的头节点是否和石头重合如果重合,去除蛇身体的头节点,在再其尾节点出加一节身体,并设置Life为false。(4) public boolean eatBody()方法实现蛇吃到自己的身体。(5) public Boolean eatFood()方法实现

12、蛇吃到食物5. 分析问题与解决方案5.1问题处理问题一:不能实现游戏中最高分数的存储与读取使用.properties来存储其最高分数在用msg()方法来实现其对应数据的读取与存储问题二:蛇在吃掉食物时,画出其身体的方法将先前去除的尾节点在重新加在其尾部问题三:图形界面的覆盖使用双缓冲技术:双缓冲技术在很多动画中被采用。主要 原理是创建一幅图像,将每一帧画入图 像,然后将整个图像一次画到屏幕上去, 将其原来的东西覆盖掉。问题四:线程的使用如何将其节点无限重画,及睡眠时间使用死循环问题五:实现键盘操控游戏使用键盘监听器6小结与体会回顾这个设计过程,我学到了许多书本上没有学到的知识。通过这次自 己制作的软件,丰富了自己的实践技能,扩展了本专业的知识面,使我受益 非浅,同时也体验到了搞软件开发的困难度。在这次设计的同时,我又从中 学到了许多东西。但由于我

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号