c语言二维数组刷屏练习
// 二维数组的刷屏综合练习 编制于2012.9.23
#include
#include
#include
#include
#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
{for(j=0;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)//炸弹和子弹相遇(奇数行的情况