- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
项目实战-打飞机C语言讲述
程序逻辑及C语言编程
项目实战 打飞机
2017-4-10
1
中国职业教育联盟课程体系
中国职业教育联盟课程体系
成就百万精英
1.1需求描述
实现一个打飞机的小游戏
游戏运行效果
1.2问题分析
1、思考:应该实现那些函数?
#define N 35
//输出函数
void print(int [][N]);
//子弹移动函数
void movebul(int [][N]);
//敌机移动函数
void movepla(int [][N]);
//设置函数
void setting(void);
//菜单函数
void menu(void);
//全局变量:界面、我机初始位、界面宽度、敌机速度、敌机密度、得分、死亡
int scr[22][N]={0},pl=9,width=24,speed=3,density=30,score=0,death=0;
1.2问题分析
嵌套双重循环,操作二维数组。
2、思考:子弹移动 ?
void movebul(int a[][N])
{
int i,j;
for(i=0;i22;i++)
for(j=0;jwidth;j++)
{
if(i==0a[i][j]==2)
a[i][j]=0;
if(a[i][j]==2)
{
if(a[i-1][j]==3)
score+=10,printf(\7);
a[i][j]=0,a[i-1][j]=2;
}
}
}
1.2问题分析
3、思考:敌机移动?
代码提示:
void movepla(int a[][N])
{
int i,j;
//从最后一行往上是为了避免把敌机直接冲出数组。
for(i=21;i=0;i--)
for(j=0;jwidth;j++)
{
if(i==21a[i][j]==3)
a[i][j]=0;//底行赋值0 以免越界。
if(a[i][j]==3)
a[i][j]=0,a[i+1][j]=3;
}
if(a[20][pl]==3a[21][pl]==1)
death++;
}
1.2问题分析
从游戏界面大小,敌机密度,敌机速度方面来考虑。
4、思考:游戏设置?
do
{
sw=0;printf(\n 游戏界面的大小:1.大2.小 );
switch(getche())
{
case 1:width=34;break;
case 2:width=24;break;
default:printf(\n 错误,请重新选择...\n);
sw=1;
}
}while(sw);
1.2问题分析
根据前面的分析,控制各函数的执行顺序。
5、思考:如何完整控制游戏运行?
while(1)
{
if(kbhit())
//控制左右移动和进入菜单
switch(getch())
{
case a:
case A:
if(pl0)
scr[21][pl]=0,scr[21][--pl]=1;break;
case d:
case D:
if(plwidth-2)scr[21][pl]=0,scr[21][++pl]=1;break;
case w:
case W:
scr[20][pl]=2;break;case 27 :setting();break;
}
。。。。。。
1.3技术与工具
打飞机游戏用到了C语言所学的知识点,如数据类型、运算符、表达式、条件语句、循环语句,其中以运用函数为主。
扩展:二维数组,键盘读取
技术
工具
打飞机游戏使用的编程工具是Microsoft Visual Studio 2010。
1.4阶段划分
猜拳游戏实现阶段划分
阶段名称
用时
描述
第一阶段
30分钟
设计游戏界面、理清游戏思路,打印游戏标题、规则。
第二阶段
30分钟
实现子弹移动。
第三阶段
30分钟
实
文档评论(0)