#include 

#include 
#include 
#include 
#define N 35
void print(int [][N]);//输出函数
void movebul(int [][N]);//×××移动函数
void movepla(int [][N]);//敌机移动函数
void setting(void);//设置函数
void menu(void);//菜单函数
void oper(void);//操作函数
int scr[22][N]={0},pl=9,width=24,speed=3,density=30,score=0,death=0;//全局变量:界面、我机初始位、界面宽度、敌机速度、敌机密度、得分、死亡
main(void)
{
menu();
oper();
}
void oper()
{
int i=0,j=0;
scr[21][pl]=1;
scr[0][5]=3;
while(1)
{
if(kbhit())
switch(getch())//控制左右移动和进入菜单
{
case 'a':case 'A':
if(pl>0)
scr[21][pl]=0,scr[21][--pl]=1;
break;
case 'd':case 'D':
             if(pl                scr[21][pl]=0,scr[21][++pl]=1;                break;          case 'w':case 'W':                scr[20][pl]=2;                break;          case 27 :                setting();                break;      }      if(++j%density==0)//控制生产敌机的速度      {         j=0;srand(time(NULL));         scr[0][rand()%width]=3;       }      if(++i%speed==0)//控制敌机移动速度,相对于×××移动速度         movepla(scr);      movebul(scr);      print(scr);      if(i==30000)      i=0;//以免i 越界   } } void print(int a[][N]) {   system("cls");   int i,j;   for(i=0;i<22;i++)   {     a[i][width-1]=4;     for(j=0;j {  if(a[i][j]==0)     printf(" ");       if(a[i][j]==1)          printf("\5");//输出我机的符号       if(a[i][j]==2)     printf(".");//×××       if(a[i][j]==3)     printf("\3"); //输出敌机符号       if(a[i][j]==4)     printf("|");       if(i==0&&j==width-1)     printf("得分:%d",score);//右上角显示得分       if(i==1&&j==width-1)     printf("死亡:%d",death);       if(i==2&&j==width-1)     printf("设置:Esc");       if(i==3&&j==width-1)     printf("Copyright:王攀");     }     printf("\n");  } } void movebul(int a[][N]) {    int i,j;    for(i=0;i<22;i++)        for(j=0;j        {          if(i==0&&a[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;          }        } } void movepla(int a[][N]) {    int i,j;    for(i=21;i>=0;i--)//从最后一行往上是为了避免把敌机直接冲出数组。        for(j=0;j        {           if(i==21&&a[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]==3&&a[21][pl]==1)  death++; } void setting(void) {     int sw=0,i,j;     system("cls");     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);    do    {      sw=0;      printf("\n 请选择敌机密度:1.大2.中3.小>> ");      switch(getche())      {          case '0':    density=10;             break;          case '1':    density=20;             break; case '2':    density=30;             break; case '3':    density=40; break;         default:    printf("\n 错误,请重新选择...\n");         sw=1;     }  }while(sw);  do  {     sw=0;     printf("\n 敌机的飞行速度:1.快2.中3.慢>> ");     switch(getche())     {       case '1':  speed=2;          break;       case '2':    speed=3;         break;       case '3':    speed=4;         break;       default:    printf("\n 错误,请重新选择...\n");       sw=1;    }  }while(sw);  for(i=0;i<22;i++)     for(j=0;j<45;j++)       scr[i][j]=0;   scr[21][pl=9]=1;   printf("\n 按任意键保存...");   getch(); } void menu(void) {   printf("说明:按A D 控制我机左右飞行,W 发射×××\n 设置:请按Esc\n 开始游戏:任意键\n                              by yan_xu");   if(getch()==27)   setting(); }                 飞机大战理解 while 循环 if else 判断 switch...case 多条件判断 然后还有一个二维的数组scr[22][N] 二维数组就是用scr[3][4]表示第3行第4列的单元  对于本游戏代码分析如下: 3、飞机和×××的功能 用A和D控制左右走动,用W控制发射×××。敌机不断从对面飞来,×××击中敌机得分,我机被敌机碰撞我机死亡。 4、二维数组scr[][]的使用 有点类似一个x/y坐标,用不同的数值控制printf显示不同的字符,就是用一个if多条件判断。 5、实现敌机的移动 原位置赋值空白。  if(i==0&&a[i][j]==2)    a[i][j]=0; ×××移动:从数组最后一行第一个元素判断,如果是×××数值,该数值向上移动一行, 原位置赋值空白。 输出数组:从数组一行第一元素开始判断,判断里面的数组,输出相应的符号 整个过程就是不停清空屏幕,重新画屏幕的过程, ×××往上飞,就是每次清空屏幕后加1,  6.加分死亡规则:如果×××的位置xy和敌机的坐标相同则×××击中敌机,加分。反之敌机坐标和我机相同则我机生命减一。生命为0则死亡。 另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
printf 显示
 1.首先定义函数
 2.定义函数类型,屏幕宽度,速度,敌机密度,得分,死亡int scr[22][N]={0},pl=9,width=24,speed=3,density=30,score=0,death=0; 此程序用到×××int.
 3.控制飞机的移动坐标:情况A:飞机在y轴向下移动一格 。情况D: 飞机在y轴向上移动一格,w是出×××的位置,比飞机x轴少一。
敌机移动:从数组一行第一个元素开始判断,如果是敌机数值,该数值向下移动一行,
 7.临界位置:坐标区域有限规定不能超出屏幕大小。
 8.设置界面大小飞机速度,敌机密度以及控制方向的键。
                                                当前标题:飞机大战理解-创新互联                                                
                                                文章起源:http://www.scyingshan.cn/article/cdihgj.html
                                            

 建站
建站
 咨询
咨询 售后
售后
 建站咨询
建站咨询 
 