java贪吃蛇游戏软件设计.docx

上传人:b****4 文档编号:27331244 上传时间:2023-06-29 格式:DOCX 页数:99 大小:668.13KB
下载 相关 举报
java贪吃蛇游戏软件设计.docx_第1页
第1页 / 共99页
java贪吃蛇游戏软件设计.docx_第2页
第2页 / 共99页
java贪吃蛇游戏软件设计.docx_第3页
第3页 / 共99页
java贪吃蛇游戏软件设计.docx_第4页
第4页 / 共99页
java贪吃蛇游戏软件设计.docx_第5页
第5页 / 共99页
点击查看更多>>
下载资源
资源描述

java贪吃蛇游戏软件设计.docx

《java贪吃蛇游戏软件设计.docx》由会员分享,可在线阅读,更多相关《java贪吃蛇游戏软件设计.docx(99页珍藏版)》请在冰豆网上搜索。

java贪吃蛇游戏软件设计.docx

java贪吃蛇游戏软件设计

佛山科学技术学院

《可视化编程技术》课程设计报告

 

贪吃蛇游戏软件设计

 

学生姓名:

林敏婷

学号:

2012914227

年级专业:

12级教育技术学2班

指导老师:

容汝佳

学院:

教育科学学院

 

广东★佛山

提交日期:

2014年6月

1.前言………………………………………………………………………………2

2.概要设计…………………………………………………………………………3

2.1开发环境……………………………………………………………………3

2.2贪吃蛇游戏功能……………………………………………………………3

2.3界面设计……………………………………………………………………4

2.4类的框架结构图……………………………………………………………5

3.详细设计………………………………………………………………………8

3.1使用的java类的说明……………………………………………………8

3.2类的主要方法……………………………………………………………10

3.2.1游戏结束功能…………………………………………………………10

3.2.2游戏开始功能…………………………………………………………10

3.2.3游戏继续功能…………………………………………………………10

3.2.4游戏暂停功能…………………………………………………………10

3.2.5判断食物是否被蛇吃掉………………………………………………11

3.2.6蛇在运行中所采取的措施……………………………………………11

3.2.7设计总体认识………………………………………………………12

3.2.8程序流程图…………………………………………………………13

4.运行结果………………………………………………………………………14

5.测试分析………………………………………………………………………15

5.1程序运行情况……………………………………………………………15

5.2程序异常处理……………………………………………………………16

6.源程序…………………………………………………………………………17

6.1中央控制器………………………………………………………………17

6.2食物的产生变化…………………………………………………………26

6.3地形的产生变化…………………………………………………………29

6.4蛇的产生变化……………………………………………………………35

6.5选项面板…………………………………………………………………45

6.6主界面……………………………………………………………………51

6.7游戏监听器………………………………………………………………59

6.8蛇的监听器………………………………………………………………60

6.9工具………………………………………………………………………61

6.10游戏显示页面……………………………………………………………65

参考文献……………………………………………………………………………67

设计总结……………………………………………………………………………67

摘要:

“贪吃蛇”游戏是一个经典的游戏,本文基于Java技术和eclipse开发环境,设计了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。

其操作十分简单,使用人员能迅速掌握操作技巧并进行娱乐。

即时进行娱乐,享受游戏带来的乐趣,对提高人们的生活水平有一定的帮助。

整个游戏程序分为二个功能模块,八个类模块,实现了游戏的开始、暂停、结束。

可以进行不同游戏地图的选择,还可以对游戏中的背景、贪吃蛇、食物等进行不同颜色的设置,其中背景还可以设置显示指定颜色的网格。

在颜色设置这一块,除了提供给用户的样本之外,还有基于HSV、HLS、RGB、CMYK这四种色彩模式的颜色设置选择,给用户提供充分自由的选择空间。

本程序使用的默认设置为灰色背景,黑色石头,红色贪吃蛇、红色食物,用户可以通过恢复默认设置按钮,恢复默认设置。

关键字:

Java贪吃蛇游戏,游戏类,eclipse设计环境

1前言

贪吃蛇是世界知名的益智类小游戏,选择这一游戏的设计是为了将自己的所学知识加以运用;另一方面,虽然很小就接触这个游戏,但是它的制作方法对自己而言还是很神秘的。

希望通过自己的所学知识把它剖析开来,通过自己的动手实践,真正了解它的本质和精髓。

通过这次实践,希望自己能不断提高编程能力,并学会从零开始分析设计程序。

本游戏的开发语言为Java,开发工具选用Eclipse。

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE,JavaME,JavaSE)的总称。

它非常适合大型软件的开发,其特点是面向对象、跨平台、安全性、多线程和图形功能强。

这里采用Java作为开发语言主要是基于Java的面向对象和可移植性,Eclipse是一个开放源代码的、基于Java的可扩展开发平台。

Java自面世后就非常流行,发展迅速,Java语言去掉了C++语言的一些容易引起错误的特性,对C++语言形成了有力冲击。

其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。

Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

在全球云计算和移动互联网的产业环境下,Java更具备显著优势和广阔前景,Java已成为当今Internet上最流行、最受欢迎的一种程序开发语言。

2概要设计

2.1开发环境

开发平台:

MicrosoftWindows7ProfessionalServicePack2

开发工具:

JBuilder2007+JDK1.6.0_02

2.2贪吃蛇游戏功能

功能1:

按下“开始新游戏”、“继续游戏”、“停止游戏”按钮可开始、继续、停止游戏,控制游戏进程;

功能2:

在按下“开始新游戏”按钮之后,可以通过方向键、回车键、pageup及pagedown功能键分别控制贪吃蛇的前进方向、暂停或继续、加速或减速;

   功能3:

按下“设置背景颜色”按钮,可设置背景颜色 ,同时勾选网格可显示相应的颜色的网格;

功能4:

按下“设置蛇头颜色”、“设置蛇身颜色”按钮可设置贪吃蛇的蛇头以及蛇身的颜色;

功能5:

按下“设置食物颜色”按钮可以设置食物的颜色;

功能6:

通过点选“地图1”、“地图2”可以选择不同的贪吃蛇活动地图;

功能7:

按下“恢复默认设置“按钮,可恢复程序的默认设置;

功能8:

游戏结束,弹出“GAMEOVER”对话框,结束游戏。

 

2.3界面设计

图2.3.1贪吃蛇游戏界面

图2.3.2贪吃蛇游戏界面

2.4类的框架结构图

MainFrame类:

属性:

privatefinalGameOptionPaneloptionPanel;

privatefinalGamePanelgamePanel;

privatefinalSnakesnake;

privatefinalGroundground;

privatefinalFoodfood;

privatefinalJLabelinfoLabel;

privatefinalControllercontroller;

操作:

publicvoidgameOver();//游戏结束

publicvoidgameStart();//游戏开始

publicvoidgameContinue();//游戏继续

publicvoidgamePause();//游戏停止

Snake类:

属性:

publicstaticfinalintUP=1;

publicstaticfinalintDOWN=-1;

publicstaticfinalintLEFT=2;

publicstaticfinalintRIGHT=-2;

privateLinkedListbody=newLinkedList();

privateintoldDirection;

privateintnewDirection;

privatePointhead;

privatePointtail;

privateintspeed;

privatebooleanlive;

privatebooleanpause;

privateSetlisteners=newHashSet();

方法:

publicvoidmove();//移动(走一步)

publicvoidchangeDirection();//改变方向

publicvoideatFood();//改变食物(身体变长)

publicvoidisEatBody();//蛇是否吃到了自己的身体

publicvoiddrawMe();//显示

Food类:

属性:

privatestaticfinallongserialVersionUID=1L;

privateColorcolor=newColor(0xcc0033);

privateRandomrandom=newRandom();

方法:

publicBooleanisSnakeEatFood(Snakesnake);//判断蛇是否吃到了食物

publicvoiddrawMe();//显示

 

Ground类:

属性:

privatebooleanrocks[][]=newboolean[Global.WIDTH][Global.HEIGHT];

privatePointfreePoint=newPoint();

publicstaticfinalColorDEFAULT_ROCK_COLOR=newColor(0x666666);

privateColorrockColor=DEFAULT_ROCK_COLOR;

publicstaticfinalColorDEFAULT_GRIDDING_COLOR=

privateColorgriddingColor=DEFAULT_GRIDDING_COLOR;

privateRandomrandom=newRandom();

privatebooleandrawGridding=false;

方法:

publicBooleanisSnakeEatRock(Snakesnake);//蛇是否吃到了石头

publicvoiddrawMe();//显示

GamePanel类:

属性:

privatestaticfinallongserialVersionUID=1L;

privateImageoimg;

privateGraphicsog;

publicstaticfinalColorDEFAULT_BACKGROUND_COLOR=newColor(0xcfcfcf);

privateColorbackgroundColor=DEFAULT_BACKGROUND_COLOR;

方法:

publicvoiddisplay();//显示

3详细设计

3.1贪吃蛇游戏使用的Java类的说明

类名:

Controller

作用:

控制器,控制Ground,Snake,Food,负责游戏的逻辑,处理按键事件。

继承的父类:

KeyAdapter类

实现的接口:

SnakeListener类

publicclassControllerextendsKeyAdapterimplementsSnakeListener{

}

类名:

Food

作用:

食物类。

继承的父类:

Point类

实现的接口:

没有

publicclassFoodextendsPoint{

}

类名:

Ground

作用:

地形类。

继承的父类:

没有

实现的接口:

没有

publicclassGround{

}

类名:

Snake

作用:

蛇类。

继承的父类:

没有

实现的接口:

没有

publicclassSnake{

}

类名:

GameOptionPanel

作用:

游戏的设置项面板。

继承的父类:

JPanel类

实现的接口:

没有

publicclassGameOptionPanelextendsJPanel{

}

类名:

Global

作用:

工具类,此类中存放了其他类中用到的一些常量,并且支持配置文件。

继承的父类:

没有

实现的接口:

没有

publicclassGlobal{

}

类名:

GamePanel

作用:

游戏的显示界面。

继承的父类:

JPanel类。

实现的接口:

没有

publicclassGamePanelextendsJPanel{

}

类名:

MainFrame

作用:

主类。

继承的父类:

JFrame类

实现的接口:

GameListener类

publicclassMainFrameextendsJFrameimplementsGameListener{

privatefinalGameOptionPaneloptionPanel;//选项面板

privatefinalGamePanelgamePanel;//游戏面板

privatefinalSnakesnake;//蛇类对象

privatefinalGroundground;//石头对象

privatefinalFoodfood;//食物对象

privatefinalJLabelinfoLabel;//速度标签

privatefinalControllercontroller;//控制对象

}

程序的设计参考了SunJava网站里的大量实例,比如Layout的使用、Event的处理等等。

其中:

publicclassMainFrameextendsJFrameimplementsGameListener语句实现了GameListener接口,因此可以调用addGameListener(GameListenerl)方法对按钮进行点击监听,在下面的voidgameStart();voidgameOver();voidgamePause();voidgameContinue();四个方法对各个点击事件进行处理。

3.2类的主要方法

3.2.1游戏结束功能:

publicvoidgameOver(){

//TODOAuto-generatedmethodstub

optionPanel.getPauseButton().setEnabled(false);

optionPanel.getStopGameButton().setEnabled(false);

optionPanel.getNewGameButton().setEnabled(true);

optionPanel.getPauseButton().setText("暂停/继续");

}

3.2.2游戏开始功能:

publicvoidgameStart(){

//TODOAuto-generatedmethodstub

optionPanel.getPauseButton().setEnabled(true);

optionPanel.getNewGameButton().setEnabled(false);

optionPanel.getStopGameButton().setEnabled(true);

}

3.2.3游戏继续功能:

publicvoidgameContinue(){

//TODOAuto-generatedmethodstub

optionPanel.getPauseButton().setText("暂停游戏");

}

3.2.4游戏暂停功能:

publicvoidgamePause(){

//TODOAuto-generatedmethodstub

optionPanel.getPauseButton().setText("继续游戏");

}

3.2.5判断食物是否被蛇吃掉:

publicvoideatFood(){

/*把上一次移动拿掉的节点再加上*/

body.addLast(tail.getLocation());

/*触发SnakeListener的snakeEatFood事件*/

for(SnakeListenerl:

listeners)

l.snakeEatFood();

}

3.2.6蛇在运行中所采取的措施:

publicvoidmove(){

/*忽略相反方向*/

if(oldDirection+newDirection!

=0)

oldDirection=newDirection;

/*把蛇尾巴拿出来重新设置坐标作为新蛇头*/

/*getLocation将返回一个新的Point*/

/*tail把尾巴坐标保存下来,吃到食物时再加上*/

tail=(head=takeTail()).getLocation();

/*根据蛇头的坐标再上下左右*/

head.setLocation(getHead());

/*根据方向让蛇移动*/

switch(oldDirection){

caseUP:

head.y--;

/*到边上了可以从另一边出现*/

if(head.y<0)

head.y=Global.HEIGHT-1;

break;

caseDOWN:

head.y++;

/*到边上了可以从另一边出现*/

if(head.y==Global.HEIGHT)

head.y=0;

break;

caseLEFT:

head.x--;

/*到边上了可以从另一边出现*/

if(head.x<0)

head.x=Global.WIDTH-1;

break;

caseRIGHT:

head.x++;

/*到边上了可以从另一边出现*/

if(head.x==Global.WIDTH)

head.x=0;

break;

}

/*添加到头上去*/

body.addFirst(head);

}

3.2.7设计的总体认识

●JAVA设计的摘要

●JAVA设计的目录结构

●JAVA设计的概要和详细设计

●JAVA设计的版权意识

●JAVA设计需要编译的环境

●JAVA设计的实用性

 

3.2.8程序流程图

游戏开始

显示贪吃蛇于屏幕中,是

检查贪吃蛇在屏幕上是否游戏结束

有阻碍发生

在规定的范围内随机产生食物接受按钮的控制信息

 

贪吃蛇是贪吃蛇是否有

是否吃到食物阻碍

移动贪吃蛇

1.贪吃蛇撞到自己

2.贪吃蛇撞到墙

图3贪吃蛇游戏流程图

4运行结果

图4游戏结果显示图1

图4游戏结果显示图2

当贪吃蛇碰到石头时,游戏面板将会弹出一个“GAMEOVER”对话框,表示游戏结束,按下确定按钮之后,可以通过“开始新游戏”按钮开始新一次的游戏。

5测试分析

5.1程序运行情况:

程序正常的响应按钮事件,贪吃蛇在规定的范围内进行移动,在没有碰到阻碍的情况下,贪吃蛇仍然保持生命,并且可以吃到食物。

但前提是贪吃蛇没有吃到自己的蛇身,如果吃到蛇身或碰到阻碍,贪吃蛇就失去生命,游戏弹出“GAMEOVER”对话框,按下“确定”按钮游戏也就结束了。

在游戏结束之后,用户又可以通过“开始新游戏”按钮开始新的一次游戏。

用户可以根据自己的喜好设置好背景、蛇头、蛇身以及食物的颜色,并且可以在地图1,地图2之间选择一种地形供贪吃蛇活动。

值得注意的是,除了地形只能在游戏开始前改变之外,其它设置皆可以在游戏过程中改变。

当用户想要恢复原始界面设计时,可通过“恢复默认设置”按钮将设置恢复到最初的状态。

用户还可以在游戏的过程中选择“继续”或“暂停”游戏,同时可以改变贪吃蛇移动的速度,控制游戏的难度。

5.2程序异常处理:

承自Exception类,然后使用try-catch去捕捉这个异常,异常的处理如下:

try{

MainFrameframe=newMainFrame(newController(newSnake(),

newFood(),newGround(),newGamePanel(),newJLabel()));

frame.setVisible(true);

}catch(Exceptione){

e.printStackTrace();

}

}//如果出现异常则打印堆栈路径

try{

inputStream=newFileInputStream(CONFIG_FILE);

properties.load(inputStream);

}catch(Exceptione){

System.out.println("没有配置文件");

}//如果出现异常则打印“没有配置文件”

try{

if(inputStream!

=null)

inputStream.close();

}catch(IOExceptione){

e.printStackTrace();

}//如果出现异常则打印堆栈路径

try{

returnnewInteger(properties.getProperty(key)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 公务员考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1