收藏 分销(赏)

c语言二维数组刷屏练习.doc

上传人:仙人****88 文档编号:9461457 上传时间:2025-03-27 格式:DOC 页数:6 大小:38KB
下载 相关 举报
c语言二维数组刷屏练习.doc_第1页
第1页 / 共6页
c语言二维数组刷屏练习.doc_第2页
第2页 / 共6页
点击查看更多>>
资源描述
// 二维数组的刷屏综合练习 编制于2012.9.23 #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<time.h> #define WIDTH 22//宏定义 /***********************函数声明**********************************************/ void init();//数组赋初值 void print();//显示当前数组 void movebom(char scr[WIDTH][WIDTH]);//炸弹移动 void movebul(char scr[WIDTH][WIDTH]);//子弹移动 void bump(char scr[WIDTH][WIDTH]);//碰撞函数 /********************全局变量************************************************/ //全局变量 char scr[WIDTH][WIDTH]; int flagbul = 0 ,flagpla = 0;//在函数体外赋初值 int high,wide;//飞机的行和列 /*********************数组操作函数********************************************/ //数组赋原始值 void init() { int i,j; for(i = 0; i < WIDTH ; i++) { for(j = 0; j < WIDTH; j++) { scr[i][j] = 0; } printf("\n"); } return ; } //显示当前数组动画 void print() { int i,j; for(i = 0; i < WIDTH ; i++) { for(j = 0; j < WIDTH ; j++) { if(scr[i][j] == 0) printf(" "); if(scr[i][j] == 1) printf("A");//飞机 if(scr[i][j] == 2) printf("@");//炸弹 if(scr[i][j] == 3) printf(".");//子弹 if(j == WIDTH-2 ) printf("|");//围栏 if(j == WIDTH-1 && i == 0) printf("得分:%d",flagbul*10);//得分信息 if(j == WIDTH-1 && i ==1) printf("死亡:%d",flagpla);//死亡信息 } printf("\n"); } return ; } //炸弹移动函数(实质是改变数组值) void movebom(char scr[WIDTH][WIDTH]) { int i,j; for(i = WIDTH-1; i >= 0; i--) {for(j = 0; j < WIDTH; j++) { if(scr[i][j] == 2) { scr[i][j] = 0; scr[i+1][j] = 2; } } } return; } //子弹移动函数(实质是改变数组值) void movebul(char scr[WIDTH][WIDTH]) { int i,j; for(i=1; i<WIDTH; i++) {for(j=0;j<WIDTH;j++) { if(scr[i][j] == 3) { scr[i][j] = 0; scr[i-1][j] = 3; } if(scr[0][j] == 3)//用于消除0行的死角 scr[0][j] = 0; } } return; } //碰撞函数(实质是数组里的数据呈现某种状态) void bump(char scr[WIDTH][WIDTH]) { int i,j; for(i = 0; i < WIDTH -2; i++) {for(j = 0; j < WIDTH; j++) { if(scr[i][j] == 2 && scr[i+2][j] == 3)//炸弹和子弹相遇(奇数行的情况) { scr[i][j] = 0; scr[i+2][j] = 0; flagbul++; } if(scr[i][j] == 2 && scr[i+1][j] == 3)//炸弹和子弹相遇(偶数行的情况) { scr[i][j] = 0; scr[i+1][j] = 0; flagbul++; } if(scr[i][j] == 2 && scr[i+2][j] == 1)//炸弹和飞机相遇(奇数行的情况) { scr[i][j] = 0; scr[i+2][j] = 0; high = WIDTH-1;//飞机行初值 wide = WIDTH-2;//飞机列初值 scr[high][wide] = 1;//飞机复位 flagpla++; } if(scr[i][j] == 2 && scr[i+1][j] == 1)//炸弹和飞机相遇(偶数行的情况) { scr[i][j] = 0; scr[i+1][j] = 0; high = WIDTH-1;//飞机行初值 wide = WIDTH-2;//飞机列初值 scr[high][wide] = 1;//飞机复位 flagbul++; } } } return; } /*********************************主函数**********************************************/ //主函数 int main() { int i; high = WIDTH-1;//飞机行初值 wide = WIDTH-2;//飞机列初值 init();//数组初值函数 scr[high][wide] = 1;//设置数组这个位置为1 srand(time(NULL));//设置随机种子 while(1) { if(kbhit())//有按键kbhit()返回1,执行switch()语句,否则返回0,不执行switch()语句 switch(getch()) { case 'a': case 'A'://像左移动飞机 if(wide > 0) { scr[high][wide] = 0; scr[high][--wide] = 1; } break; case 'd': case 'D'://像右移动飞机 if(wide < WIDTH-2)//这里是WIDTH-2 { scr[high][wide] = 0; scr[high][++wide] = 1; } break; case 'w': case 'W'://像上移动飞机 if(high > 0) { scr[high][wide] = 0; scr[--high][wide] = 1; } break; case 's': case 'S'://像下移动飞机 if(high < WIDTH-2)//这里是WIDTH-2 { scr[high][wide] = 0; scr[++high][wide] = 1; } break; case 'o': case 'O'://发出子弹 if(high < WIDTH)//这里是WIDTH scr[high-1][wide] = 3; break; } //设置炸弹的改变速度是子弹和飞机的一半 if(++i % 2 == 0) {if(i == 3000)//防止i越界 i = 0; scr[0][rand()%(WIDTH-1)] = 2; //用随机函数设置炸弹起始位置 movebom(scr); //炸弹移动函数(用于更改数组值) } movebul(scr); //子弹移动函数(用于更改数组值) bump(scr);//碰撞函数 system("CLS"); //清屏函数 print(); //显示数组函数 } return 0; } //本程序为飞机射击程序的雏形 //本程序的思想是每改变一次数组,刷新一次屏幕,再输出一次数组 //使用幻灯片原理,最终形成视觉动画,其实很简单(原来普通的二位数组能做出这么美妙的东西)
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服