没有合适的资源?快使用搜索试试~ 我知道了~
10 C语言课程设计_坦克大战(提高篇).docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 86 浏览量
2021-12-27
13:01:31
上传
评论
收藏 87KB DOCX 举报
温馨提示
试读
17页
10 C语言课程设计_坦克大战(提高篇).docx
资源推荐
资源详情
资源评论
C 语言课程设计--坦克大战
一、游戏介绍
玩家坦克与敌方坦克在街道中进行巷战,玩家坦克被击中、玩家指挥部被击中或游戏时间
到,一局游戏结束。
二、实验目的
综合应用C 语言知识和设计知识开发一款小游戏。
三、实验内容
初始界面如下图。
按下空格键后游戏开始,“空格开始”消失,载入地图,并把玩家坦克设置在指挥部左
侧。
游戏时间到,比如 30 秒,玩家坦克被敌方坦克摧毁,或者玩家指挥部被摧毁,一局游
戏结束,游戏回到初始界面,并显示上一局的分数。
游戏区域为下图中最内部的黑色区域,左上角坐标[-26, -22],右下角坐标为[26, 22]。
墙为正方形,边长为 4,坦克也是正方形,比墙略小一点。
玩家用WASD 键控制坦克上、下、左、右运行,按J 键开炮。玩家坦克碰到墙就停下来,
需要调转方向才能继续前进。玩家坦克开炮,一炮就能摧毁一块墙,或者一辆敌方坦克。玩 家
没摧毁一辆敌方坦克,加 1 分。
玩家指挥部被坦克或者炮弹(不管玩家还是敌方)碰上,都会被摧毁。
每隔几秒钟,比如 3 秒,就会产生一辆敌方坦克。敌方坦克每隔一段时间,比如1 秒,
就自动开炮。敌方坦克遇到墙就会停下来。停下来的坦克,前方的墙如果被摧毁了,又能继
续前进。每隔几秒钟,比如 2 秒,敌方坦克就会顺时针变换一个方向前进。
四、实验准备
本实验中可能用到的C 语言标准库函数和FunCode API
Stdio.h
函数原型 功能与返回值 参数说明与应用举例
int sprintf( char 把格式化的数组写入某个字
*buffer, const char 符 串 。
*format, 返回值:字符串长度
[ argument]
„
) ;
Math.h
char szName[128];
int i=0;
sprintf(szName, ”
feichong_%d ”, i);
将字符串” feichong_0 ”写入
到 szName 中
函数原型 功能与返回值 参数说明与应用举例
double atan2( double y, 计算 y/x 的反正切值。
double x ); 返回值:以弧度表示并介于
-pi 到 pi 之 间 ( 不包括
-pi)。
如需使用角度,需要
转换。
String.h
float ftan = atan2( (y1-y0),
(x1-x0) );
计算通过点(x1,y1)到点(x0,y0)
的连成的直线与 X 轴之间的夹
角。
函数原型
extern
*strstr(char
char *str2);
功能与返回值 参数说明与应用举例
char 找出 str2 字符串在 str1 字 strstr(szName,
*str1, 符 串 中 第 一 次 出 现的 位置 “ feichong ”) != NULL
(不包括str2 的串结束符)。 说明 szName 中包含 feichong
返回值:返回该位置的指针,
如找不到,返回空指针。
extern int 比较字符串 s1 和 s2。
strcmp(const char 当 s1<s2 时,返回值<0
*s1,const char * s2); 当 s1=s2 时,返回值=0
当 s1>s2 时,返回值>0
FunCode API
strcmp(szName,
“feichong_0 ”) == 0
说明 szName 与 feichong_0 相
等
函数原型
float dGetScreenLeft();
float dGetScreenRight();
float dGetScreenTop();
float dGetScreenBottom();
float
dGetSpritePositionX(const
char* szName);
float
dGetSpritePositionY(const
char* szName);
float
dSetSpritePositionX(const
char* szName);
float
dSetSpritePositionY(const
char* szName);
void
dSetSpritePosition(const
char* szName, const float
fPosX, const float fPosY);
功能与返回值
获取屏幕左边界值
获取屏幕右边界值
获取屏幕上边界值
获取屏幕下边界值
获取精灵中心点的 X
坐标值
获取精灵中心点的 Y
坐标值
设置精灵中心点的 X
坐标值
设置精灵中心点的 Y
坐标值
设置精灵中心点的 X
和 Y 坐标值,用来将精
灵放置在某个指定位
置。
参数说明与应用举例
szName – 精灵名称。所有 API
均相同。
游 戏 中 的 精 灵 的 名 称 不 能 相
同。
dSetSpritePosition( “ feich
ong_0 ”, 0, 0);
将名称为” feichong_0 ”的精
灵的中心点设置在坐标 (0, 0)
上
void 设置精灵 X 轴方向速
dSetSpriteLinearVelocityX( 度
const char* szName, const
float fVelX);
void 设置精灵 Y 轴方向速
dSetSpriteLinearVelocityY( 度
const char* szName, const
float fVelY);
void 设置精灵X 轴和Y 轴方
dSetSpriteLinearVelocity(c 向速度
onst char* szName, const
float fVelX, const float
fVelY);
float
dGetSpriteRotation(const
char* szName);
获取精灵的旋转角度
原图的角度
float 设置图片的旋转角度
dSetSpriteRotation(const
char* szName, float fRot);
void dSetTextValue(const 设置文字精灵的整数
char* szName, int iVal); 数值
void 设置精灵可见或不可
dSetSpriteVisible(const 见
char* szName, bool
bVisible);
void dShowCursor(const bool 设置鼠标可见或不可
bShow); 见
void dDeleteSprite(const 删除精灵
char* szName);
bool 判 断 某 个 坐 标 点
dIsPointInSprite(const (fPosX, fPosY) 是否
char* szName, const float 在精灵内部
fPosX, const float fPosY);
bool dCloneSprite(const 复制一个精灵。
char* szSrcName, const 返回值:1 – 复制成
char* szTarName); 功;
0 – 复制失败。地图
中没有找到对应名称
的精灵用于复制。
调整后的角度
获得的旋转角度即为两张图片的
角度差
fRot>0 ,图片顺时针旋转;
fRot<0 ,图片逆时针旋转。
dSetTextValue( “ score ” ,
100);
名称为 score 的文字精灵显示
100
bVisible 为 true,可见;
为 false ,不可见。
bShow 为 true,可见;
为 false ,不可见。
常用于判断一个物体是不是碰
到另外一个物体
做法:一般在地图上摆放一个
精灵作为模板,并设置好各种
属性。不仅复制图片,还复制
属性。
szSrcName – 作 为 模 板 的 精
灵
szTarName – 新的精灵名称
void
dSetSpriteWorldLimit(const
char*szName, const
EWorldLimit Limit, const
float fLeft, const float
fTop, const float fRight,
const float fBottom)
设置精灵的世界边界,
精灵碰到边界时,会激
发精灵与边界的碰撞
事件。因此,设置精灵
位置时,考虑到精灵自
身大小,最好离开边界
一段距离。
fLeft - 左边界值
fTop - 上边界值
fRight - 右边界值
fBottom- 下边界值
Limit - 统一使用
WORLD_LIMIT_NULL
void 让精灵从当前位置飞
dSpriteMoveTo(const 向另外一点
char *szName, const float
fPosX, const float fPosY,
fPosX :目标点的 X 坐标值
fPosY :目标点的 Y 坐标值
fSpeed :移动速度
iAutoStop :移动到终点之后是
剩余16页未读,继续阅读
资源评论
碎碎念的折木
- 粉丝: 4
- 资源: 7万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功