程序设计实训报告
坦克大战
专业班级: 装控1401
实习时间:2015年7月10日至7月14日
实习地点: 微401
成 员 1: 赵振华
成 员 2: 许晨欢
成 员 3: 蒋绪涛
考勤(10%) | 文档(30%) | 创意及实现(30%) | 视频 (30%) | 总成绩 (100%) | 个人分 | ||
成员1 | 成员2 | 成员3 | |||||
一、作品概述
1.1 创新点:
1、自定义并命名树林和钢板精灵,设置树林属性为不接受碰撞可以自由穿梭,钢板为接受任何碰撞但不做任何处理(即子弹和坦克均不能摧毁钢板)。
2、添加坦克发炮、击中目标和坦克移动的特殊声效。
1.2 概述:
这款游戏是我们QWER小组以经典90版坦克大战为背景制作的坦克大战的改编款,玩家通过控制坦克摧毁敌方坦克来保卫主基地不被摧毁。当敌我双方坦克相碰或己方基地被子弹摧毁时游戏结束(敌我双方子弹均可摧毁基地),每隔3秒钟出现一辆敌方坦克,游戏最大时长为100秒。此款游戏与经典90版坦克大战较为相似,操作简单,能唤起我们对童年的回忆。
二、功能设计
玩家坦克与敌方坦克在街道中进行巷战,玩家坦克被击中或与敌方坦克相撞、玩家指挥部被击中或游戏时间到,一局游戏结束。
按下空格键后游戏开始,“空格开始”消失,载入地图,100秒倒计时开始,并把玩家坦克设置在指挥部左侧。
游戏时间到,玩家坦克被敌方坦克摧毁,与敌方坦克相撞,或者玩家指挥部被摧毁,一局游戏结束,游戏回到初始界面,并显示上一局的分数。
玩家用W、A、S、D键控制坦克上、下、左、右运行,按J键开炮。坦克行进过程中有特殊声效,坦克发射或击中目标都有相应的声效。玩家坦克碰到墙和钢板就停下来,需要调转方向才能继续前进。玩家坦克开炮,一炮就能摧毁一块墙或者一辆敌方坦克,但不能摧毁钢板,玩家可穿梭于树林中。玩家每摧毁一辆敌方坦克,加1分。
玩家指挥部被坦克或者炮弹(不管玩家还是敌方)碰上,都会被摧毁。
每隔3秒钟,就会产生一辆敌方坦克。敌方坦克每隔一段时间,就自动开炮。敌方坦克遇到墙就会停下来。停下来的坦克,前方的墙如果被摧毁了,又能继续前进。每隔几秒钟,敌方坦克就会顺时针变换一个方向前进。每局最大时长为100秒。
三、功能实现
3.1 数据结构
struct Weapon
{
char szName[128]; // 精灵名称
float fPosX, fPosY; // 精灵坐标
float fSpeedX, fSpeedY; // X和Y方向上速度
float fFireTime; // 敌方坦克距下一次开炮的剩余时间
float fRotateTime;
int iHp; // 生命值
int iDir; // 朝向:0 - 上方;1 - 右方;2 - 下方;3 - 左方
int iType; // 类型: 0 - 我方坦克;1 - 敌方坦克;2 - 我方
// 子弹; 3 - 敌方子弹
Weapon* pNext; // 指向下一个节点的指针
};c语言游戏编程题经典100例
enum Direction{
UP = 0, // 上方
RIGHT = 1, // 右方
DOWN = 2, // 下方
LEFT = 3 // 左方
};
enum Role
{
MYTANK = 0, // 我方坦克
ENEMYTANK = 1, // 敌方坦克
MYBULLET = 2, // 我方子弹
ENEMYBULLET = 3 // 敌方子弹
};
const float GAME_TIME = 100.f; // 一局游戏时间
const float CREATE_TANK_TIME = 2.f; // 每批次生成坦克的时间间隔
const float TANK_SPEED = 20.f; // 坦克速度
const float BULLET_SPEED = 30.f; // 子弹速度
const float FIRE_TIME = 2.f; // 坦克开炮时间间隔
const float WORLD_LEFT = -26.f; // 游戏场景边界左值
const float WORLD_TOP = -22.f; // 游戏场景边界左值
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论