JAVA课程设计坦克大战含代码.docx

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

JAVA课程设计坦克大战含代码.docx

《JAVA课程设计坦克大战含代码.docx》由会员分享,可在线阅读,更多相关《JAVA课程设计坦克大战含代码.docx(54页珍藏版)》请在冰点文库上搜索。

JAVA课程设计坦克大战含代码.docx

JAVA课程设计坦克大战含代码

Java程序课程设计任务书

项目名称:

坦克大战游戏的设计与开发

英文名:

TankBattle

1、主要内容:

1、基于java的游戏开发与设计的分析;

2、坦克大战游戏的架构搭建与设计实现;

3、游戏可以通过用户可以注册新用户,修改自己的密码、个人资料。

2、具体要求

1、系统的功能要求:

(一)实现玩家试玩游戏功能,屏蔽用户注册和登陆功能(空功能)

(二)玩家具备一个或者两个备选坦克战车

(三)玩家可以选择一个到两个关卡进行作战

(四)玩家可以选择两个敌对阵营中的一个加入,与其他AI战车坦克并肩作战

(五)胜利判定条件为:

时间制、全杀制(可选)

(六)至少提供两个可以自由切换的视角

(七)至少提供一种炮弹类型

(八)假定项目:

如果用户注册,登陆功能能够顺利做好,则提供一个玩家分数上传和排行榜功能。

2、学习并掌握以下技术:

数据库的JDBC连接,JAVA编程语言,MySQL数据库的应用;JSP的开发与运用

3、熟练使用以下开发工具:

JCreator,Myeclipse,MySQL,PowerDesigner等

3、进度安排:

12月28日~12月29日:

查阅资料,完成文献综述,任务书;

12月29日~12月31日:

进行系统的需求分析与设计;

1月1日~1月3日:

根据分析进行各个模块程序的设计与创建;

1月4日~1月6日:

完成各个模块的程序编写;

1月7日~1月8日:

完成全部程序的编写及系统测试;

1月9日~1月10日:

完成课程设计报告的编写,答辩;

摘要

随着Java语言的不断发展和壮大,现在的Java已经广泛的应用于各个领域,

包括医药,汽车工业,手机行业,游戏,等等地方。

Java游戏的开发为满足人们娱乐所需而设计。

本游戏为坦克大战游戏,是基于Java的图形用户界面而开发的,可以放松心情的小游戏。

游戏从系统操作简便、界面友好、灵活、上手即会的基本要求出发,完成整款游戏的开发。

游戏更设置了暂停、计分、音乐、速度,用户信息保存等功能,可以根据自己的爱好,挑战更高难度,为用户带来愉悦的体验。

本课程设计报告介绍了游戏的构想,分析,开发,实现的过程。

论述了游戏的功能开发,设计构思。

给出了游戏的设计步骤,游戏系统关键的设计思想;在游戏系统实现章节给出了部分功能流程和相关代码。

关键词:

游戏,坦克大战

 

第1章引言

1.1背景

游戏是全球最大的娱乐经济项目之一,已经被命名为“第九艺术”。

而由“游戏”派生出来的职业,除了软件开发外,游戏包装宣传推广、攻略指导、网络游戏管理员和职业游戏玩家等,已成为了一系列专门的岗位。

面对游戏产业如此巨大的市场空间,国内各大城市纷纷加大了这方面的人才培养,中国的游戏人才培训已随着游戏行业的总体发展开始逐步迈入了正轨。

虽然说中国的游戏行业开始逐步的迈入了正轨,但是现今,游戏人才出现严重的瓶颈时期,高校的扩招、金融危机的侵袭直接影响着我们最关心的就业问题,但是另一方面游戏人才的缺乏又直接制约着行业的发展,这就更加严格了对社会培训机构的稳定性和正规性的要求。

在我国,游戏人才培养体系还未健全,部分开设了相关专业的高校,游由于理论和实践的脱离无法完全满足网游公司对人才的需求。

所以,就中国目前的市场分析来看,加强游戏产业必须在多渠道人才培养体系上加快突破,尽快建立起多渠道人才培养体系,来满足社会对游戏人才的需求。

1.2课程设计内容

坦克大战游戏是一种动作电子游戏的名称。

坦克大战游戏是一种动作电子游戏的名称。

玩家操作一辆己方坦克,消灭屏幕中不断出现敌方坦克。

己方坦克有血量限制,被敌方坦克的炮弹击中会减少血量,当血量为0时,任务失败。

(1)基本的游戏操作

用户可以通过键盘来操作自己的坦克,尽量不让敌方坦克的炮弹击中自己,

(2)计分,记时功能

用户在游戏的过程中,系统将记录游戏的成绩

1.3任务分工

 

第二章坦克大战小游戏应用程序

2.1坦克大战小游戏应用程序概述

此程序设计是一个小游戏(坦克大战)的实现,主要运用了用户图形界面,程序接口和基本函数绘制来实现,事件监听(包括鼠标事件,键盘事件,响应时间)也是这个程序的特色。

总之,本游戏在用户界面的可操作性、游戏的美观度、计分计时存储结果方便都基本完善,有一定的可玩性。

2.1.1坦克大战小游戏系统任务及目的

此小程序是为群众闲暇消遣之用,玩家在进入游戏后按游戏规则击毁敌方坦克获得相应的分数,进入下一关,直到全部过关。

2.2主要特色系统介绍

玩家在使用此程序时更加能体验到乐趣。

当玩家死亡以后,可以原地复活是本游戏的特色,可以激发玩家的游戏兴趣。

2.3本章小结

虽然游戏在功能和界面上不能算的上很棒,但是麻雀虽小,五脏俱全,游戏具备了坦克大战这个经典游戏锁应该具有的基本雏形。

通过这一章,我们对这个游戏应该有了比较宏观的了解,我们将在这一基础上探究游戏更完美的改变。

 

第3章坦克大战游戏系统的设计

这一章是坦克大战游戏系统的设计,从系统需求分析开始,介绍开发环境和用到的开发工具,系统主要的功能设计,系统的数据流程图。

3.1系统需求分析

坦克大战的设计目标为:

(1)实现坦克大战游戏功能,用键盘控制坦克

(2)实现游戏难度和游戏模型的选择,通过本关后可以选择进入下一关。

(3)加强游戏可玩性。

3.2系统开发及运行环境

硬件平台:

❑CPU:

INTEL-I5。

❑内存:

1024MB以上。

软件平台:

❑操作系统:

WindowsXP。

❑数据库:

TXT文档。

❑开发工具包:

JDKVersion1.6.2。

❑最佳分辨率:

800X600

3.3系统主要功能要求

本系统为了实现游戏坦克大战。

本系统主要实现如下功能:

❑系统界面美观大方舒适。

❑实现游戏一些基础信息的保存和读取。

❑画面流畅,具有可玩性

❑没有较大的游戏BUG。

❑显示游戏者的游戏时间和积分。

❑系统最大限度地实现了易维护性和易操作性。

❑系统运行稳定、安全可靠。

❑玩家死亡以后如不想从新开始可以继续游戏

3.4.1坦克大战系统总体结构

坦克大战游戏是基于基本的软件和普通硬件基础上的传统优秀游戏,一个游戏应该包括以下几大功能,如图3.1所示

 

3.4系统数据流图

游戏信息的流向,即系统数据流图如图2.3所示。

图3.3系统数据流图

3.5本章小结

本章是坦克大战游戏的具体设计过程,有具体的需求分析、系统功能模块、系统数据流图。

这里我们开始接触JAVA程序设计的最初步骤,也是很重要的一步。

 

第4章系统的具体实现

界面是系统和玩家之间最直接的交互界面,界面的友好性体现了程序设计的质量,界面是否便捷易懂也是程序所基本的要求。

 

4.1界面设计

4.1.1用户登录界面图

4.1.2游戏主界面

上图就是进入游戏后的界面

4.2程序设计及调试运行

编写12个CLASS文件,装入一个包中,各个模块的程序代码都完成后,进行编译连接运行,经过反复调试,找出错误和不足,以达到游戏所需的基本功能和基本界面。

这个过程比较繁琐,我们参考网络上现有的资源,并加以改进,对各个模块仔细分析备注并进行调试,做到程序简洁易懂,可读性好。

尽量避免因代码不完善而导致的游戏运行中可能出现的错误。

4.2.1自动计血量

游戏的自动计血量功能是非常有必要的,可以让玩家很直观地看到自己所玩的剩余血量。

下面是自动计血量功能的部分关键代码:

privateclassBloodBar{

publicvoiddraw(Graphicsg){

Colorc=g.getColor();

g.setColor(Color.RED);

g.drawRect(x,y-10,WIDTH,10);

intw=WIDTH*life/100;

g.fillRect(x,y-10,w,10);

g.setColor(c);

}

4.2.2对坦克方向的控制

通过上下左右四个键,可以控制坦克向八个方向灵活的移动

voidlocalDirection(){

if(bL&&!

bU&&!

bR&&!

bD)dir=Direction.L;

elseif(bL&&bU&&!

bR&&!

bD)dir=Direction.LU;

elseif(bL&&!

bU&&!

bR&&bD)dir=Direction.LD;

elseif(!

bL&&bU&&!

bR&&!

bD)dir=Direction.U;

elseif(!

bL&&!

bU&&!

bR&&bD)dir=Direction.D;

elseif(!

bL&&!

bU&&bR&&bD)dir=Direction.RD;

elseif(!

bL&&bU&&bR&&!

bD)dir=Direction.RU;

elseif(!

bL&&!

bU&&bR&&!

bD)dir=Direction.R;

elsedir=Direction.STOP;

}

4.3本章小结

本章介绍了程序的具体实现和部分关键代码,包括自动计血量,对坦克方向的控制等

第5章结束语

由于市场需要,游戏的更新速度步步加快,为了适应社会的需要,社会对游戏开发人员的需求,在游戏编程的学习过程中,必须理论与实践结合,提高编程能力与水平。

通过小游戏的设计,对以学过的内容加深理解,对游戏开发的过程有初步的认识,为以后的游戏开发设计和更加深入的学习计算机语言打下夯实的基础。

目前竞争日益激烈的行业环境,对于未来行业的前景,还是要保持乐观的心态。

毕竟游戏并不是一下子就可以编写成的。

需要不断的技术积累,需要团队的合作,提高了工作的效率,才算是在游戏开发的道路上成功了一半。

在现在这个信息化飞速发展的道路上,要成为一名合格的编程人员,那就必须走好每一步现在的路。

基于Java的坦克大战小游戏,满足了用户娱乐的需求,已经达到了预期的目标。

虽然该游戏大部分功能基本上已经实现,但是还是会存在一些不足:

(1)游戏的关卡太少,样式不够多样化,不能满足用户对该游戏的挑战。

(2)游戏的色彩不够多样化,色彩单一,不能给用户增加新鲜的娱乐感。

(3)对于用户信息方面,由于该程序没有涉及到数据库的相关内容,在用户信息存储,用户信息更新功能方面表现欠佳。

在用户信息功能的方面有待进一步改善。

 

致谢

 

参考文献

[1](美)埃克尔著陈昊鹏,饶若楠等译.Java编程思想[J].机械工业出版社,2005

[2](美)GaryJ.Bronson著张珑刘雅文译.Java编程原理[J].清华大学出版社,2004

[3](美)MichaelMorrison著徐刚,于健,薛雷译.游戏编程入门[J].人民邮电出版社,2005.9

[4](美)WendyStahler著冯宝坤,曹英译.游戏编程中的数理应用[J].红旗出版社,2005

[5](美)克罗夫特(DavidWallaceCroft)著彭晖译.Java游戏高级编程[J].清华大学出版社,2005

[6](美)DavidBrackeen著邱仲潘译.Java游戏编程[J].科学出版社,2004

[7]聂庆亮编著.Java应用开发指南[J].清华大学出版社,2010

[8]耿祥义,张跃平编著.Java面向对象程序设计[J].清华大学出版社,2010

[9]杨绍方编著.Java编程实用技术与案例[J].清华大学出版社,2000.11

[10]明日科技编著.Java编程全能词典[J].电子工业出版社,2010

 

附录源代码

packagecom.tianlesoftware.tank;

importjava.awt.Color;

importjava.awt.Graphics;

importjava.awt.Image;

importjava.awt.Rectangle;

importjava.awt.Toolkit;

importjava.awt.event.KeyEvent;

importjava.util.HashMap;

importjava.util.List;

importjava.util.Map;

importjava.util.Random;

/**

*坦克类,可以生成自己的坦克和敌人的坦克。

*@authortianlesoftware

*

*/

publicclassTank{

privateintx,y;

//自己坦克的生命值

privateintlife=100;

privatestaticRandomr=newRandom();

//good为true表示是自己的坦克,false表示是敌人的坦克

privatebooleangood;

//坦克移动的步长

publicstaticfinalintXSPEED=5;

publicstaticfinalintYSPEED=5;

TankWartw;

privateintstep=r.nextInt(12)+3;

//坦克的状态,活着,死者。

privatebooleanlive=true;

//坦克要走早下一步之前的坐标。

此坐标主要是用来处理敌人坦克撞墙的。

//当敌人坦克于墙接触时,坐标设为此时,既返回上一层。

在次进行随机的运动。

这样就避免撞墙后不能运动了。

privateintoldX,oldY;

//自己坦克的血条,显示还有多少血

privateBloodBarbb=newBloodBar();

privatebooleanbL=false,bR=false,bU=false,bD=false;

privateDirectiondir=Direction.STOP;

privateDirectionptDir=Direction.D;

/*

*一系列装载坦克图片的过程。

原理同爆炸和炮弹相同。

*/

privatestaticToolkittk=Toolkit.getDefaultToolkit();

privatestaticImage[]tankImgs=null;

//用map来保存,是为了方便处理,避免出错。

因为坦克的方向很多。

要是出错了就不好查找。

privatestaticMapimgs=newHashMap();

static{

tankImgs=newImage[]{

tk.getImage(Tank.class.getClassLoader().getResource("images/tankL.gif")),

tk.getImage(Explode.class.getClassLoader().getResource("images/tankLD.gif")),

tk.getImage(Explode.class.getClassLoader().getResource("images/tankU.gif")),

tk.getImage(Explode.class.getClassLoader().getResource("images/tankRU.gif")),

tk.getImage(Explode.class.getClassLoader().getResource("images/tankR.gif")),

tk.getImage(Explode.class.getClassLoader().getResource("images/tankLU.gif")),

tk.getImage(Explode.class.getClassLoader().getResource("images/tankD.gif")),

tk.getImage(Explode.class.getClassLoader().getResource("images/tankRD.gif")),

};

imgs.put("L",tankImgs[0]);

imgs.put("LD",tankImgs[1]);

imgs.put("U",tankImgs[2]);

imgs.put("RU",tankImgs[3]);

imgs.put("R",tankImgs[4]);

imgs.put("LU",tankImgs[5]);

imgs.put("D",tankImgs[6]);

imgs.put("RD",tankImgs[7]);

}

publicstaticfinalintWIDTH=30;//tankImgs[0].getWidth(null);求的实际长度后写上确定值。

publicstaticfinalintHEIGHT=30;//此时图片还未装载到内存,所以的不到值tankImgs[0].getHeight(null);

publicTank(intx,inty,booleangood){

this.x=x;

this.y=y;

this.oldX=x;

this.oldY=y;

this.good=good;

}

publicTank(intx,inty,booleangood,Directiondir,TankWartw){

this(x,y,good);

this.dir=dir;

this.tw=tw;

}

/**

*更据方向,画出坦克

*@paramg

*/

publicvoidDraw(Graphicsg){

if(!

live){

if(!

good){

tw.tanks.remove(this);

}

return;

}

if(good){

bb.draw(g);

}

switch(ptDir){

caseL:

g.drawImage(imgs.get("L"),x,y,null);

break;

caseLU:

g.drawImage(imgs.get("LU"),x,y,null);

break;

caseR:

g.drawImage(imgs.get("R"),x,y,null);

break;

caseRU:

g.drawImage(imgs.get("RU"),x,y,null);

break;

caseRD:

g.drawImage(imgs.get("RD"),x,y,null);

break;

caseD:

g.drawImage(imgs.get("D"),x,y,null);

break;

caseLD:

g.drawImage(imgs.get("LD"),x,y,null);

break;

caseU:

g.drawImage(imgs.get("U"),x,y,null);

break;

}

move();

}

/**

*根据方向控制坦克的移动

*

*/

voidmove(){

this.oldX=x;

this.oldY=y;

switch(dir){

caseL:

x-=XSPEED;

break;

caseLU:

x-=XSPEED;

y-=YSPEED;

break;

caseR:

x+=XSPEED;

break;

caseRU:

x+=XSPEED;

y-=YSPEED;

break;

caseRD:

x+=XSPEED;

y+=YSPEED;

break;

caseD:

y+=YSPEED;

break;

caseLD:

x-=XSPEED;

y+=YSPEED;

break;

caseU:

y-=YSPEED;

break;

caseSTOP:

break;

}

if(this.dir!

=Direction.STOP){

this.ptDir=this.dir;

}

if(x<0)x=0;

if(y<=30)y=30;

if((x+Tank.WIDTH)>TankWar.GAME_WIDTH)x=TankWar.GAME_WIDTH-Tank.WIDTH;

if((y+Tank.HEIGHT)>TankWar.GAME_HEIGHT)y=TankWar.GAME_HEIGHT-Tank.HEIGHT;

if(!

good){//使敌人的坦克走固定步数后在转方向,使看上去个更自然

Direction[]dirs=Direction.values();

if(step==0){

step=r.nextInt(12)+3;

intrm=r.nextInt(dirs.length);

dir=dirs[rm];

}

step--;

if(r.nextInt(40)>37){//敌人坦克发泡间隔

this.fire();

}

}

}

/**

*处理敌人坦克撞墙,如撞上就返回上一步。

再次进行运动。

*/

privatevoidstay(){

y=oldY;

x=oldX;

}

/**

*处理按键盘的操作。

*@parame

*/

publicvoidKeyPressed(KeyEvente){

intkey=e.getKeyCo

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

当前位置:首页 > 求职职场 > 社交礼仪

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

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