1:C語言能完成對程序的編輯,可以設置程序,比如飛機遊戲。學習C語言的基本語句,可以初步認識C語言,要想進一步提升,就要打好基礎,把基礎理解透徹,需要用的語句牢記清楚。
2:飛機程序中,以include開頭,其中運用了 if while,do while,printf,swatch,case break等基本語句
3:結構分析:運用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);//菜單函數
int scr[22][N]={0},pl=9,width=24,speed=3,density=30,score=0,death=0;//全局變量:界面、我機初始位、界面寬度、敵機速度、敵機密度、得分、死亡
main(void)
{
menu();
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<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");//輸出我機的符號
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<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(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();
}