C语言是一门编程语言,简单点说,就是由人类书写按照一定规范书写的字符,通过一定手段(编译链接)转换后,可以让电脑或者其它电子芯片"读懂",并按照其要求工作的语言。

在所有的编程语言中,C语言是相对古老而原始的,同时也是在同类语言中更接近硬件,最为高效的编程语言。
其应用广泛,设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
目前C语言在底层开发,驱动编写,嵌入式开发等方面仍有着不可替代的地位。

而所谓C语言源代码,就是依据C语言规则所写出的程序代码,常见的存储文件扩展名为.c文件和.h文件,分别对应C源文件(source file)和C头文件(header file)。

C语言改变了人们的生活,现代信息化世界对人们应有的知识要求也很高。学好C语言可以让我们更好的去享受先进的现代科技给我们带来的方便,就想我们常说的科技是生活变得更好。

C语言不仅是一门学科,它是一种工具,帮助我们解决很多的问题,创造更好的世界。

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <time.h>

#define N 35

void print(int [][N]);//输出函数

void movebul(int [][N]);//×××移动函数

void movepla(int [][N]);//敌机移动函数

void setting(void);//设置函数

void menu(void);//菜单函数

void oper(void);//操作函数

intscr[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())//控制左右移动和进入菜单(运用switch case分别定义A、B分为控制飞机向左向右移动  定义W为发射×××)

       {

         case 'a':case 'A':

              if(pl>0)

                 scr[21][pl]=0,scr[21][--pl]=1;

                 break;

         case 'd':case 'D':

              if(pl<width-2)

                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<width;j++)

{

 if(a[i][j]==0)

    printf(" ");

      if(a[i][j]==1)

         // printf("\5");//输出我机的符号

         printf("\5");

      if(a[i][j]==2)

    printf(".");//×××

      if(a[i][j]==3)

    //printf("\3"); //输出敌机符号   (运用printf显示敌机和我方发射×××的的符号)

    printf("\3");

      if(a[i][j]==4)

    printf("|");

      if(i==0&&j==width-1)

    printf("得分:%d",score);//右上角显示得分

      if(i==1&&j==width-1)       (再用printf将最后得分等各项数据显示在显示器上)

    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<width;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<width;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选择游戏界面的大小和敌机飞行的速度)

    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();

}