课程设计 1Word文档下载推荐.docx

上传人:b****4 文档编号:8237123 上传时间:2023-05-10 格式:DOCX 页数:28 大小:183.94KB
下载 相关 举报
课程设计 1Word文档下载推荐.docx_第1页
第1页 / 共28页
课程设计 1Word文档下载推荐.docx_第2页
第2页 / 共28页
课程设计 1Word文档下载推荐.docx_第3页
第3页 / 共28页
课程设计 1Word文档下载推荐.docx_第4页
第4页 / 共28页
课程设计 1Word文档下载推荐.docx_第5页
第5页 / 共28页
课程设计 1Word文档下载推荐.docx_第6页
第6页 / 共28页
课程设计 1Word文档下载推荐.docx_第7页
第7页 / 共28页
课程设计 1Word文档下载推荐.docx_第8页
第8页 / 共28页
课程设计 1Word文档下载推荐.docx_第9页
第9页 / 共28页
课程设计 1Word文档下载推荐.docx_第10页
第10页 / 共28页
课程设计 1Word文档下载推荐.docx_第11页
第11页 / 共28页
课程设计 1Word文档下载推荐.docx_第12页
第12页 / 共28页
课程设计 1Word文档下载推荐.docx_第13页
第13页 / 共28页
课程设计 1Word文档下载推荐.docx_第14页
第14页 / 共28页
课程设计 1Word文档下载推荐.docx_第15页
第15页 / 共28页
课程设计 1Word文档下载推荐.docx_第16页
第16页 / 共28页
课程设计 1Word文档下载推荐.docx_第17页
第17页 / 共28页
课程设计 1Word文档下载推荐.docx_第18页
第18页 / 共28页
课程设计 1Word文档下载推荐.docx_第19页
第19页 / 共28页
课程设计 1Word文档下载推荐.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

课程设计 1Word文档下载推荐.docx

《课程设计 1Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《课程设计 1Word文档下载推荐.docx(28页珍藏版)》请在冰点文库上搜索。

课程设计 1Word文档下载推荐.docx

游戏主要界面是基于GUI(图形用户界面)的开发,使得游戏界面简单清晰,并调用了其中的一些函数,完成了事件的触发功能。

 

关键词

JAVA;

Eclipse;

迷宫;

地图;

角色。

迷宫游戏设计与开发

第一章概述

1.1认识Eclipse

Eclipse是基于JAVA的、开放源代码的科扩展开发平台。

就其本身而言,它只是一个框架和一组服务,用于通过插件组建构建开发环境。

虽然大多数用户很乐于将Eclipse当作Java集成开发环境(IDE)来使用,但Eclipse的目标却不仅限于此。

Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。

由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。

[1]

这种平等和一致性并不仅限于Java开发工具。

尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;

例如,支持诸如C/C++、COBOL、PHP、Android等编程语言的插件已经可用,或预计将会推出。

Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。

基于Eclipse的应用程序的一个突出例子是IBMRationalSoftwareArchitect,它构成了IBMJava开发工具系列的基础。

1.2Eclipse开发平台

开发环境的选择会影响到数据库的设计,所以在这里给出五子棋系统开发与运行环境的选择如下:

开发环境:

Window7旗舰版

开发工具:

MyEclipse7.0

1.3Eclipse的获取

Eclipse是开放源代码的项目,使用者可以从网上下载安装文件,Eclipse开放源代码团体的网址是http:

//www.eclipse.org.只要遵循Eclipse.org的公共许可协议,任何组织和个人都可以到该网址下载Eclipse的最新版本。

软件开发工具箱SDK的下载网址是http:

//www.eclipse.org/download/index.php。

1.4Eclipse版本简介

从2006年起,Eclipse基金会每年都会安排同步发布(simultaneousrelease)。

至今,同步发布主要在6月进行,九月份的SR1版本已发布,并且会在接下来的2月释放出SR1及SR2版本。

版本代号

平台版本

主要版本发行日期

SR1发行日期

SR2发行日期

Callisto

3.2

2006年6月26日

N/A

Europa

3.3

2007年6月27日

2007年9月28日

2008年2月29日

Ganymede

3.4

2008年6月25日

2008年9月24日

2009年2月25日

Galileo

3.5

2009年6月24日

2009年9月25日

2010年2月26日

Helios

3.6

2010年6月23日

2010年9月24日

2011年2月25日

Indigo

3.7

2011年6月22日

2011年9月23日

2012年2月24日

Juno

3.8及4.2

2012年6月27日

2012年9月28日

2013年3月1日

Kepler

4.3

2013年6月26日

2013年9月27日

2014年2月28日

Luna

4.4

2014年6月25日

2014年9月25日

Mars

4.5

2015年6月24日

第二章详细设计

2.1游戏规则

也许用户在小时候都有过玩迷宫的经历。

迷宫之所以好玩在于密密麻麻的羊肠小道中,必须找出一条可以通往出口的正确路径,玩家往往走了许久到最后还是被前方的障碍物挡住了去路,或者是明明出口就在隔壁,就是无法走过去。

因此同伴间就会比赛谁最快地找到出口,甚至比较谁走的路最近。

在程序中若要设计一个正确无误且仅提供一条出路的迷宫,必须通过相关的算法。

要呈现迷宫的图形,更要考虑到如2D贴图及2.5D贴图等技巧。

2.2迷宫资料

迷宫排列是可以更改的。

用户只要使用一个数组来设计迷宫上的障碍物,并改变数组中的元素,就可以改变地图上的障碍物排列,甚至是障碍物的种类。

2.3角色与其状态

角色是个连续走动的动画,是通过键盘来操作的,它在走动时有四个方向的显示。

在java程序设计中,每个对象的状态最好是独立处理的,对于游戏设计更是如此。

在游戏规则中,首先列出一个角色状态方块,事实上再多的角色也都可以加入游戏中,每个角色封装为一个类,这个类不从事绘图、事件处理等工作,它只负责接受状态的改变指令,并将状态告知接口类,以便绘图画面的更新。

角色类还负责一项工作,就是判断是否改往下移动一个位置,所以接口类必须告知角色类迷宫数组的内容,也就是传递迷宫数组给角色类。

2.4程序流程图

依据软件工程的基本原理,详细设计阶段的根本任务是确定应该怎样具体实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在系统实现阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。

具体来说就是把经过总体设计得到的各个模块详细的加以描述。

具体如图4.1所示:

图4.1

第三章编码实现

3.1地图拼接技巧

斜角地图上的每一个地图方块都是使用重复贴图的方式实现的,但由于创造出一种视觉上的立体感。

用户还必须对每个地图的小方块做一定的处理。

下面先以程序演示如何拼接斜角地图。

程序代码如下:

//程序:

斜角地图拼接

importjava.awt.*;

importjava.applet.*;

importjava.awt.event.*;

publicclassMap45extendsApplet

{

intAppletWidth,AppletHeight,floorW,floorH,key;

Imagefloor,OffScreen;

GraphicsdrawOffScreen;

MediaTrackerMT;

publicvoidinit()

{

setBackground(Color.white);

//设定背景颜色

AppletWidth=getSize().width;

//取得Applet的高度

AppletHeight=getSize().height;

//取得Applet的宽度

//取得图像

MT=newMediaTracker(this);

floor=getImage(getDocumentBase(),"

Images/floor.gif"

);

MT.addImage(floor,0);

try

showStatus("

图像加载中(LoadingImages)..."

MT.waitForAll();

}

catch(InterruptedExceptionE){}//没有进行异常处理

//建立次画面

OffScreen=createImage(AppletWidth,AppletHeight);

drawOffScreen=OffScreen.getGraphics();

floorW=floor.getWidth(this);

floorH=floor.getHeight(this);

publicvoidpaint(Graphicsg)

intX,Y;

//绘制地板,内循环每次绘制两排

for(inti=0;

i<

=16;

i++)

for(intj=0;

j<

=10;

j++)

X=j*floorW;

Y=i*floorH;

drawOffScreen.drawImage(floor,X,Y,X+floorW,Y+floorH,0,0,floorW,floorH,this);

X+=floorW/2;

Y+=floorH/2;

//将次画面贴到主画面中

g.drawImage(OffScreen,0,0,this);

}

3.2定位地图坐标

旋转立体坐标。

关键代码如下:

立体坐标定位

publicclassMap45RotateextendsApplet

//绘制地板

for(inti=1;

=15;

for(intj=1;

X=rotateX(j,i);

//X坐标转换

Y=rotateY(j,i);

//Y坐标转换

drawOffScreen.drawImage(floor,X,Y,X+floorW,

Y+floorH,0,0,floorW,floorH,this);

privateintrotateX(intj,inti)

intx;

//根据图片大小先算出原来坐标

x=(j-i)*floorW+450;

//进行坐标转换

x=(int)(x*Math.cos(60*Math.PI/180));

//返回坐标值

returnx;

privateintrotateY(intj,inti)

intx,y;

x=j*floorW+150;

y=-i*floorH;

y=(int)-(y*Math.cos(-15*Math.PI/180)+

x*Math.sin(60*Math.PI/180)*Math.sin(-15*Math.PI/180));

y=y-i*floorH/2;

returny;

3.3绘制障碍物

贴图是由左而右、由上至下进行的,所以不会出现“深度”上的问题。

当角色加入后,由于它会移动,有时会出现在障碍物的前端,有时会出现在障碍物的后端,所以这时就会出现深度与绘图秩序的问题。

立体障碍物图片的高度会略高于地图图片的高度,所以在使用前面的坐标转换方法时必做一些Y坐标的微调,而障碍物的位置设定同样也是通过迷宫数组来完成的,迷宫数组如下:

int[][]maze={{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},

{0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1},

{1,0,1,0,0,0,0,0,1,0,1,0,0,0,1,1},

{1,0,0,0,1,1,1,1,1,0,1,0,1,1,0,1},

{1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,1},

{1,1,0,1,0,1,1,0,1,1,0,0,1,0,0,1},

{1,1,0,0,0,0,1,0,0,1,0,0,0,0,1,1},

{1,1,0,0,2,0,1,1,1,1,0,1,0,0,1,1},

{1,1,1,1,1,0,0,0,1,1,0,0,0,0,1,1},

{1,0,0,0,0,0,0,0,1,0,0,1,1,0,1,1},

{1,0,1,0,1,0,0,0,1,0,1,0,0,0,1,1},

{1,1,1,0,0,0,1,1,1,0,1,0,1,1,1,1},

{1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,1},

{1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0},

{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}};

同样的,在绘制障碍物时,必须判断数组索引位置中的元素值是否为0,如果不是,则表示有障碍物,此时必须绘制障碍物图片。

关键代码如下:

加入障碍物的斜角地图

//范例文件:

Maze25DBlock.java

publicclassMaze25DBlockextendsApplet

intAppletWidth,AppletHeight,floorW,floorH,

blockW,blockH,charW,key,sx;

Imagefloor,block,OffScreen,character2;

ThreadnewThread;

block=getImage(getDocumentBase(),"

Images/block3.gif"

character2=getImage(getDocumentBase(),"

Images/character2.gif"

MT.addImage(block,0);

MT.addImage(character2,0);

blockW=block.getWidth(this);

blockH=block.getHeight(this);

charW=character2.getHeight(this);

sx=0;

drawOffScreen.clearRect(0,0,AppletWidth,AppletHeight);

16;

//绘制障碍物

if(maze[i][j]!

=0){

drawOffScreen.drawImage(block,X,Y+4,X+blockW,

Y+blockH+4,0,0,blockW,blockH,this);

x=(j-i)*floorW+500;

return(int)(x*Math.cos(60*Math.PI/180));

y=(int)-(y*Math.cos(-15*Math.PI/180)+

3.4随机产生地图

程序:

自动产生迷宫

publicclassAutoMazeextendsApplet

intGridX=15,GridY=15;

//迷宫格数

intSi,Sj,Ei,Ej;

//入口与出口

int[][]maze=newint[30][30];

//迷宫数组

intenter=20,width=20;

//迷宫入口位置与每格的大小

Buttonbtn;

Panelp;

Imagewall1,wall2;

publicvoidinit()

//取得外墙图片

wall1=getImage(getDocumentBase(),"

Images/wall1.gif"

wall2=getImage(getDocumentBase(),"

Images/wall2.gif"

MT.addImage(wall1,0);

MT.addImage(wall2,0)

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2