admin管理员组文章数量:1535840
2024年1月13日发(作者:)
贪吃蛇java实验报告
篇一:JAVA贪吃蛇课程设计报告
《Java应用开发》 课程设计报告
题 目:指导老师:姓 名:专 业:班 级:日 期:
JAVA小游戏 - 贪吃蛇
目录
一、系统总体设计 ................................. 1 (一)设计目标及完成功能 ........................ 1 (二)系统结构设计 .............................. 1 二、详细设计 ..................................... 2(一) 界面设计 ................................... 2 (二) 系统设计 ................................... 4 (三) 关键技术及算法 ............................. 6 四、测试 ......................................... 7五、安装使用说明 ................................. 7总结(体会) ..................................... 8参考文献 ......................................... 8
一、系统总体设计
(一)设计目标及完成功能
本软件是针对贪吃蛇小游戏的JAVA程序,利用上、下、左、右方向键来改变蛇的运动方向,长按某个方向键后,蛇1文档来源为:从网络收集整理.word版本可编辑.
的运动速度会加快,在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常进行游戏,在到达固定的分数后,游戏速度会加快。
1.窗口功能说明:设计了三个窗口,分别是游戏主窗口,成绩窗口,游戏帮助和关于作者窗口。
2.菜单栏分别为:游戏菜单和帮助菜单
其中,游戏菜单包括开始游戏和退出游戏两项;帮助菜单包括游戏帮助和关于作者两项。
(二)系统结构设计
图1-1 系统结构图
二、详细设计
(一) 界面设计
贪吃蛇游戏的基本运行界面 (1)生成初始界面:
图2-1 初始界面
(2)游戏菜单栏
:
图2-2 游戏菜单
(2)积分排行菜单栏
:
图2-3 积分排行菜单
(3)进行游戏界面:
点击“游戏”,进入游戏菜单,选择“开始游戏”,或者2文档来源为:从网络收集整理.word版本可编辑.
使用快捷键“Ctrl+O”来开始游戏。红色为贪吃蛇的身体部分,黑色方块为食物。得分后,分数和得到食物数在左上角处实时显示。
图2-4 进行游戏
篇二:JAVA开放性实验报告贪吃蛇
JAVA程序设计 开放性实验报告
专 业:
班 级: 学 号: 姓 名:
实验2贪吃蛇游戏设计(4学时) 1.实验内容
(1) 创建软件主窗体和相关控制菜单;在窗体中以图形模拟蛇的形状,使用键盘控制图
形在窗体中任意移动,模拟贪吃蛇的行为.
(2) 在窗体中可以设置障碍或奖励物品,以达到游戏的娱乐性。
2.预习内容
Java GUI编程;鼠标和键盘的事件处理;Java多媒体编程。
3.实验类型
综合性
4.实验目的
(1)了解JavaGUI编程特别是窗体,菜单;熟悉Java的事件委托处理机制,能完成
3文档来源为:从网络收集整理.word版本可编辑.
鼠标和键盘的事件处理;
(2)熟悉Java中的多媒体技术如:音频文件的播放控制,游戏中各种事件的音效添加。
熟悉Java中的绘图操作,可以使用绘图函数进行图形的绘制和重绘等基本操作;
(3)熟悉模块的划分及游戏控制类的编写,了解相关的游戏设计和实现模式;
(4)设计可视化界面,添加其他必要组件,对窗体进行相应的键盘事件处理,使蛇能
移动,依据实验内容结合自己的设计想法,实现模拟贪吃蛇的游戏效果。
5.实验要求
依据实验内容,编写相关类,实现所需软件功能。
6.实验过程(分析设计、源文件、执行结果)
代码如下:
1、Node类
public class Node { private int x; private int y;
public Node(){ }
public Node(int x,int y){this.x=x;this.y=y;
}
public int getX(){ return x; }
4文档来源为:从网络收集整理.word版本可编辑.
public void setX(int x){ this.x=x; }
public int getY(){ return y; }
public void setY(int y){this.y=y; }
public String toString(){//方便类型转换
//括号里不是String类型通过toString来转换,不然会输出一个地址return"("+x+","+y+")"; }
@Override
//伪代码可以理解为注释,重写:下面的方法名是否在父类中存在,如果没有 //的话会报错。 //
public int hashCode(){//假设Node是list集合里面,只有把Node节点对象//放在set集合时候写hashCode();
final int prime = 31;int result = 1;
result=prime*result+x;result=prime*result+y;return
result; }
@Override
//比较Node对象是否在同一坐标都要写上equals方法
public boolean equals(Object obj){
if(this==obj){ return true;}
if(this==null){ return false;}
if(getClass()!=ss()) return false;
Node other=(Node)obj;if(x!=other.x){ return
5文档来源为:从网络收集整理.word版本可编辑.
false;}
if(y!=other.y){ return false;}
return true; }}
2、Worm 类
import List; public class Worm {
private LinkedList worm = new LinkedList(); int
dir;
public static final int UP = -1; public static
final int DOWN = 1; public static final int LEFT = -10;
public static final int RIGHT = 10; public static
final int ROWS = 400;//ROWS行。宽度范围,
public static final int COLS = 500;//COLS列。长度范围
public Worm() {
getWorm().add(new Node(90, 90));//第90行90列,蛇扩大10倍
getWorm().add(new Node(80, 90));
getWorm().add(new Node(70, 90));
getWorm().add(new Node(60, 90));
getWorm().add(new Node(50, 90));
dir = RIGHT; }
public void step() {// 走一步Node
6文档来源为:从网络收集整理.word版本可编辑.
head=getWorm().get(0);// 找到头节点int x =
() + dir / 10 * 10;//X,Y横坐标与纵坐标
int y = () + dir % 10 * 10;
&&
if (x > 0 && x 0 && y
!getWorm().contains(new Node(x, y)))
{//!getWorm().contains(new Node(x, y))是否落到蛇身上
getWorm().addFirst(new Node(x, y));
getWorm().removeLast();//删除} else {
dir = 100; throw new RuntimeException("你错了!");} }
public void step(int dir) {// 控制蛇走的方向
= dir;step(); }
public LinkedList getLinkedListWorm() {return
getWorm(); }
public String toString() {return
getWorm().toString();//输出蛇 }
public LinkedList getWorm() {
return worm; }
public void setWorm(LinkedList worm) { =
worm; } }
3、WormDemo类
import ;
7文档来源为:从网络收集整理.word版本可编辑.
import Event; import
Listener;
import ;
import
import
; ar;
import tem;
public class WormDemo extends JFrame {//
private Wormpanel panel; private static int dir;
public WormDemo(){
panel=new Wormpanel();//形成蛇的界面
add(panel);//将蛇面板放到游戏里面去
setTitle("贪吃蛇");//题目setSize(500+15,400+35);//大小
setDefaultCloseOperation(_ON_CLOSE);//关闭窗口就是关闭程序
setCursor(new Cursor(12));//定义鼠标属性
setVisible(true);//可视化为true
tFocus();//面板后区信息焦点
setLocationRelativeTo(null);//设置窗口组建定义的位置
izable(false); }
public static void main(String[] args){
8文档来源为:从网络收集整理.word版本可编辑.
final WormDemo wd=new WormDemo();//new一个自己创建的一个属性游戏窗口
//设置一个监听
JMenuBar jmb=new JMenuBar();//导包,然后设置
nuBar(jmb);//往自己new的窗口加上监听
JMenu fm=new JMenu("选项");(fm);
JMenuItem mi=new JMenuItem("重新再来");//
ionListener(new
public void ActionListener(){
actionPerformed(ActionEvent e){
m(new Worm());
(10);
ds(ods(.n));
(1000);
t();//重新画 t(); } });
(mi);
JMenuItem mi2=new JMenuItem("暂停");
ionListener(new
public void ActionListener(){
actionPerformed(ActionEvent e){
dir=m().dir;
9文档来源为:从网络收集整理.word版本可编辑.
m().dir=-100; }});
(mi2);
JMenuItem mi3=new JMenuItem("开始");
ionListener(new
public void ActionListener(){
actionPerformed(ActionEvent e){
//dir=m().dir;
m().dir=dir; }});
(mi3); } }
4、 Wormpanel 类
import ; import ;
import cs;
import pter; import
nt;
import edImage; import
ption; import t; import
or; import ; import
;
import O; import
; //JPanel
public class Wormpanel extends JPanel{//蛇的面板上有蛇,食物
10文档来源为:从网络收集整理.word版本可编辑.
private static final String
TOOL_TIP_TEXT_KEY_ERROR = null; private Worm worm;
private MoveListener listener=new MoveListener();//监听器 private Set foods=new HashSet();//设置食物
public int n=10;//个数 public int t=1000;//时间
public int getN(){return n; }
public void setN(int n){
篇三:贪吃蛇JAVA设计报告
第一章 绪论
1.1 开发的背景
随着科技的发展,现在手机的功能已不仅仅是简单的打接电话、收发短信了。更多的手机用户希望在工作、学习之余通过方便灵巧可随身携带的仪器休闲娱乐。因此,为了迎合众多用户的需求并适应现在手机的规模,我们开发出一套适合各阶层人士的具有很强的娱乐性和交互性的贪吃蛇小游戏。
贪吃蛇,之所以取这样的名字,去用意还是很明显的.贪吃蛇其实并不贪,它是人不断向前追求的象征.就像现代的人只有不断努力向前才能得到自己想要的。而食物也是随机出现的,就像现在社会存在的机会,而我们只有找好自己的目标才能成功。
虽然现在市面上存在着各种各样的游戏版本,可是贪吃11文档来源为:从网络收集整理.word版本可编辑.
蛇其市场还是相当大的。因为它的特殊在于它能吸引人更深入,爱不释手.随着游戏速度不断加快,其刺激性也更强。可以说该游戏的优势在于它的简单易行,不论是手机,还是小游戏机,都能很快顺利的运行。对于在外忙碌的人,不可能花费大量时间在娱乐上,大型游戏是行不通的。这样的小游戏刚好迎合了他们的需求。
1.2 开发的目的
在如今社会,人们的工作学习压力逐渐增大,生活节奏逐渐加快,大多数人没有足够的时间去休闲娱乐,放松自己。这款小型的手机游戏,可以让我们随时随地都能享受游戏,。让我们从繁重的日常生活中解脱出来。
游戏的主界面应该力求美观,爽心悦目,以提高玩家对游戏的兴趣。游戏的控制模块应该做到易懂、易操作,以给玩家一个很好的游戏环境。
1.3 开发的意义
通过这个游戏可以使玩贪吃蛇的人感到心情轻松,愉悦。使心情得以舒畅,让工作的压力可以得到缓解。给大家一个愉悦的游戏环境。
1.4 开发工具简介
Sun Microsystems公司在推出Java语言的同时,推出了一套开发工具JDK。Sun提供的基于字符模式的Java开发工具包JDK: Java开发工具(JDK)是许多Java专家最初使12文档来源为:从网络收集整理.word版本可编辑.
用的开发环境。Java是平台无关的语言是指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。 Java源程序编写借助于记事本,Editpuls,UltraEdit等第三方编辑工具。
所有的Java文件编辑、编译、调试、解释运行都是通过使用字符命令来执行操作。JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。其核心Java
API是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。JDK 是整个Java的核心,包
括了Java运行环境(Java RuntimeEnvirnment),一堆Java工具和Java基础的类库()。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。
JDK里面是java类库和java的语言规范,它提供的是无论你用何种开发软件写java程序都必须用到的类库和java语言规范.没有jdk,你的java程序根本就不能用。
最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要比SunJDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比SunJDK好很多。13文档来源为:从网络收集整理.word版本可编辑.
但不管怎么说,我们还是需要先把Sun JDK掌握好。
第二章 需求分析
2.1 需求分析
本游戏主要是完成贪吃蛇游戏的基本操作。本游戏需要满足以下几点要求: (1) 利用方向键来改变蛇的运行方向。
(2) 在随机的地方产生食物。
(3) 吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。
2.2 可行性分析
贪吃蛇游戏是一种简单的大众的游戏,自从计算机实现以来,深受广大电脑玩家的喜爱,做一个简单的贪吃蛇小游戏。
贪吃蛇的核心算法是如何实现移动和吃掉食物,在没有碰到食物的时候,把当前运动方向上的下个节点入队,然后把头指针所指的节点出队,这样就可以达到移动的效果。而在吃到食物的时候,则只需把食物入队即可。实现贪吃蛇的基本的蛇身移动、吃到食物身体增长、和碰到墙壁或自身死亡,能够停止和运行。
本次设计主要运用java语言来完成。Java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,用Java写的应用程序不用修改就可在不同的软硬件平台上运行。
14文档来源为:从网络收集整理.word版本可编辑.
第三章 系统概要设计
3.1 设计目标
本软件是针对贪吃蛇小游戏的JAVA程序,利用方向键来改变蛇的运行方向,空格键暂停或继续游戏,并在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。
3.2 系统功能模块
本系统共包括1个java源文件和7个类文件。 1. 类之间的关系如图1所示。
图1类之间的关系
2.java源文件及其功能如表所示。
表1 java源文件及其功能
第四章 详细设计与实现
4.1 程序设计
1.主类贪吃蛇
(1)主类为此程序的入口,定义了贪吃蛇的对象frame,开始运行此程序。(2)源代码见详细代码。
2.类SnakeFrame
(1)成员变量见表2
表2主要成员变量
(2)方法见表3
3.类贪吃蛇
15文档来源为:从网络收集整理.word版本可编辑.
(1)成员变量见表4
表4 主要成员变量
16文档来源为:从网络收集整理.word版本可编辑.
版权声明:本文标题:贪吃蛇java实验报告doc 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1705110204a123518.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论