RIA坦克大战Word文件下载.docx
- 文档编号:15878311
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:13
- 大小:47.99KB
RIA坦克大战Word文件下载.docx
《RIA坦克大战Word文件下载.docx》由会员分享,可在线阅读,更多相关《RIA坦克大战Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
3.1.6功能演示…………………………………………………………………….……11
3.3存储分配……………………………………………………………………………..…11
3.4限制条件…………………………………………………………………………………12
3.5测试要点…………………………………………………………………………………13
4总结………………………………………………………...................................….….....13
1.引言
随着社会的进步,现在人们工作的压力越来越大,休息的时候很少,为了让疲惫的心灵得以休息,开发了坦克大战的小游戏来让玩家轻松一会,该游戏操作十分简单,只要操作键盘上的方向键按住攻击键就可以玩该游戏,轻松享受玩游戏的喜悦,可操作性好,而且不会使玩家沉溺于该游戏,对玩家的学习和工作都起到极的作用。
1.1编写目的
为明确软件需求、安排项目规划与进度、组织软件开发与测试,撰写本文档。
本文档供项目经理、设计人员、开发人员参考。
1.2项目背景
a.项目名称:
简单坦克大战游戏
b.产品用户:
对该游戏感兴趣的玩家
c.项目和系统的关系:
本项目旨在编写出一个操作简单但可玩性良好的小游戏来让玩家放松一下心情,对系统硬件配置要求低。
实现简单。
1.3参考资料
《HTML5和RIA网站设计》
2.总体设计
1.1程序概述
本程序是一个坦克游戏程序,游戏开始时,用户通过键盘操纵坦克移动,转弯和射击,与敌人坦克进行交战,直到消灭所有敌人就可以过关
敌方坦克:
我方坦克:
子弹:
音乐播放:
2.1需求概述
游戏包括的范围:
本游戏包括主类、坦克类、子弹类。
要求游戏能有效、快速、安全、可靠和无误的完成上述操作。
并要求客户端的界面要简单明了、易于操作,服务器程序利于维护。
需求
模块
产生游戏的屏幕
主类模块
将坦克大战的过程呈现在屏幕上
画出坦克
坦克类模块
控制坦克的移动并让坦克可以攻击
画出子弹
子弹类模块
控制子弹的移动
2.2坦克游戏程序总体框架
总体框架图
2.3功能总述
游戏开始:
进入游戏后,需要在右方点击一个m按钮,方能开始游戏。
坦克控制:
接下来你可以按键盘的上、下、左、右键来控制自己的坦克上、下、左、右移动。
坦克发子弹:
按空格键可以发射子弹。
坦克爆炸:
自己的子弹打到了敌方坦克会爆炸,敌方坦克子弹打中自己坦克也会爆炸。
敌人坦克:
敌人会随机的上、下、左、右移动,以及发射子弹,敌人坦克移动也遵循坦克移动规则。
游戏声音:
根据用户选择是否开启音乐,声音让游戏变得更有乐趣。
游戏暂停与继续:
当你有事的时候,需要暂停游戏,点击n的暂停按钮,游戏便暂停了,再点击游戏继续。
声音控制:
点击右方的声音控制按钮来实现游戏声音的开关和大小。
游戏结束:
当自己的生命数为0,或者强行关闭。
3.程序描述
3.1.1画地图
主类是要画出屏幕,并且要将坦克之间打斗的全过程都呈现出来的,所以要先产生一个窗口。
<
canvasid='
tankMap'
width='
500px'
height='
300px'
style='
background-color:
black'
>
3.1.2坦克类模块
该类实现在屏幕上画出坦克,并控制坦克的移动,让坦克可以发射炮弹打对方等功能。
画出坦克的方法如下:
functiondrawTank(hero){
switch(hero.direct){
case0:
case2:
//alert(ctx);
ctx.fillStyle=hero.color[0];
ctx.fillRect(hero.x,hero.y,5,30);
ctx.fillRect(hero.x+15,hero.y,5,30);
ctx.fillRect(hero.x+6,hero.y+5,8,20);
//需要注意,画圆的时候需要重新开启路径
ctx.fillStyle=hero.color[1];
ctx.beginPath();
ctx.arc(hero.x+10,hero.y+15,3,0,Math.PI*2,true);
ctx.closePath();
ctx.fill();
//画出炮筒(直线)
ctx.strokeStyle=hero.color[1];
ctx.lineWidth=2;
ctx.moveTo(hero.x+10,hero.y+15);
if(hero.direct==0){
ctx.lineTo(hero.x+10,hero.y);
}elseif(hero.direct==2){
ctx.lineTo(hero.x+10,hero.y+30);
}
ctx.stroke();
break;
case1:
case3:
ctx.fillRect(hero.x,hero.y,30,5);
ctx.fillRect(hero.x,hero.y+15,30,5);
ctx.fillRect(hero.x+5,hero.y+6,20,8);
ctx.arc(hero.x+15,hero.y+10,3,0,Math.PI*2,true);
ctx.moveTo(hero.x+15,hero.y+10);
if(hero.direct==1){
ctx.lineTo(hero.x+30,hero.y+10);
}elseif(hero.direct==3){
ctx.lineTo(hero.x,hero.y+10);
该方法里实现了一个move方法,可以将坦克的移动都画出来,坦克的move方法如下:
这里就涉及了随机数的概念了,用随机数来控制敌军坦克在屏幕上移动的频率,让敌军坦克显得更加的智能一些,让我军坦克无法预料敌军运动的轨迹,从而增添可玩性。
//改变方向,走2次,再改变方向
if(this.count>
2){
this.direct=Math.round(Math.random()*3);
//随机生成0,1,2,3
this.count=0;
}
this.count++;
对按键的处理也是很讲究的,应该是按下某个键或抬起某个键的时候激发事件,而不应该是按下某个键就一直激发事件,让坦克不停的移动或者开火。
实现激发按键事件的代码如下:
switch(keycode){
case38:
hero.moveUp();
case39:
hero.moveRight();
case40:
hero.moveBottom();
case37:
hero.moveLeft();
case32:
hero.shotEnemy();
case77:
for(vari=0;
i<
3;
i++){
varenemyTank=newEnemyTank((i+1)*50,0,2,enemyColor);
enemyTanks[i]=enemyTank;
window.setInterval("
enemyTanks["
+i+"
].run()"
300);
//启动这个敌人的坦克
case78:
begin=!
begin;
以上代码实现了按下键的时候激发事件,抬起键的时候不激发事件,这样就可以控制坦克的移动方向和发射炮弹要不停的按键才能转换了。
坦克发射炮弹应该在坦克的中心位置开始发射的,不应该是在坦克的左边或是右边还是在后边,这些地方都不合适,实现坦克的发射的代码如下:
functiondrawHeroBullet(bullets){
bullets.length;
varheroBullet=bullets[i];
if(heroBullet.isLive&
&
heroBullet!
=null){
ctx.fillStyle='
#FEF26E'
;
ctx.fillRect(heroBullet.x,heroBullet.y,2,2);
3.1.3子弹类模块
该类实现在屏幕上画出子弹和子弹的移动轨迹以及实现了坦克攻击墙壁与攻击敌方坦克的功能。
里面有一个move方法,与前面的坦克类相似,都是画出物体移动的轨迹,这里是画出子弹在屏幕上移动的轨迹。
functionBullet(x,y,direct){
this.x=x;
this.y=y;
this.speed=3;
this.timer=null;
this.isLive=tru
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- RIA 坦克 大战
![提示](https://static.bdocx.com/images/bang_tan.gif)