1. 程式人生 > >C語言程式設計飛機遊戲的體會

C語言程式設計飛機遊戲的體會

心得:

我認為c語言並不是一門複雜的課程,它需要我們勤學多練,熟能生巧,練得多了,自然就能瞭解到其中的精髓。

想要學好c語言,我認為光靠努力是不夠的,還要求我們具有開闊的思維,寬闊的視野。能夠做到舉一反三,通過一個程式,明白它的原理,從而開發出其他的程式。行為嚴謹,思維開闊,勤學苦練。就可以學好c語言。

今天課上老師讓我們看了飛機程式,這個飛機程式看似複雜,實際上我們都學過,運用了上學期我們學到的很多知識。

首先是在螢幕上顯示的語句printf

printf可以顯示你輸入的字

另外一個就是多條件判斷switch--case

 下面是switch語句的應用方法

 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;

      }

這段程式碼的作用是移動

這個程式還用到了二維陣列scr[][],它的作用是顯示我方戰機,敵方戰機,子彈等畫面的

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

因為最後三個條件不是唯一的,所以不方便用switch-case

下面是飛機原始碼

#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                               ");

   if(getch()==27)

   setting();

}

相關推薦

C語言程式設計飛機遊戲體會

心得: 我認為c語言並不是一門複雜的課程,它需要我們勤學多練,熟能生巧,練得多了,自然就能瞭解到其中的精髓。 想要學好c語言,我認為光靠努力是不夠的,還要求我們具有開闊的思維,寬闊的視野。能夠做到舉一反三,通過一個程式,明白它的原理,從而開發出其他的程式。行為嚴謹,思

C語言程式設計遊戲——貪吃蛇,覺得不錯請關注點贊加轉發!

C/C++企業實戰級課程資源(素材+原始碼+視訊)、編譯大禮包免費分享,需要的加學習群892643663。 #define N 200 #include <graphics.h> #include <stdlib.h> #include <dos.h>

嵌入式系統C語言程式設計的心得體會(指標篇)

學習使用C語言不能不說到指標,指標的應用是C語言的特點也是精髓所在。沒掌握指標的使用方法,也就說明你不會使用C語言。當然使用手法靈活多變,並不見得都要學會,只是說在寫程式的時候要有這種思想體現在程式裡。其實程式寫的是否巧妙很大程度上就體現在指標應用上。   嵌入式C語言程式

詳解!C語言程式設計實現小遊戲“三子棋”

今天我們來程式設計實現一個充滿童趣的小遊戲“三子棋” 先來說一下三子棋的規則: 三子棋又叫九宮棋、圈圈叉叉、一條龍等。 將正方形對角線連起來,或相對兩邊依次擺上三個雙方棋子, 總之只要將自己的三個棋子走成一條線, 對方就算輸了。 不用再過多解釋了,相信大家一定都玩過! 那麼,該

C語言程式設計訓練-2736-卡片遊戲

Problem Description 小鑫和健健喜歡在課間的時候玩遊戲,今天他手裡有n張卡片,每張卡片有一個數字。於是他就想和健健比一比更幸運。 玩法是這樣的:這n張卡片上的數字是沒有規律的。他倆輪流取走最上面的一張卡片,最後誰取走卡片上的數字之和最大,誰就更幸運。(因為這個遊戲是小鑫

C語言程式設計學習心得與體會

**##C語言學習總結**      **1. 知識梳理**        第一章:大體瞭解認識了C語言的產生和應用領域,學習了程式設計分四步:1.分析要求。2.設計。3.編寫程式。4.除錯程式。       第二章:學習瞭解了C語言中資料的型別,基本的資料型別有整型,實型

C語言程式設計學習製作最好玩的報數遊戲

C語言是面向過程的,而C++是面向物件的C和C++的區別:C是一個結構化語言,它的重點在於演算法和資料結構。C程式的設計首要考慮的是如何通過一個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制)。C++,首要考慮的是如何構造一個物件模型,讓這個模型能夠契合與之對應的問題

聊聊在部落格園寫部落格的這兩年&&《Unity 3D指令碼程式設計:使用C#語言開發跨平臺遊戲》正式出版

版本狀態: 2016.9 第一次印刷 (2016.11 輸出到臺灣) 2017.1 第二次印刷 2017.5 第三次印刷 勘誤狀態: 勘誤資訊可以在以下連結提交,多謝各位支援。 ——分割線—— 0x

《Unity3d指令碼程式設計 使用C#語言開發跨平臺遊戲》讀書筆記1

1.4指令碼程式設計的優勢 ·易於學習,程式碼維護方便,適合快速開發 ·開發成本低(因易於學習,所以可以啟用新人,同時開發速度快,這些都是降低成本的方法) 2.2.1以速度作為衡量語言級別的標準,那麼語言從低階到高階的大概排名如下 ·組合語言 ·C/C++,編譯型靜態不安全

c語言程式設計實現簡單三子棋遊戲

   分別建立test.c   game.c 兩個原始檔,以及game.h標頭檔案   這裡的三子棋遊戲是指棋盤為3*3,玩家與電腦之間的對決,先將各自的棋下為一排(橫/豎/斜)者獲勝,電腦所    下位置是隨機產生   1. game.h中用於函式定義,如下: #ifn

C語言 黃金點遊戲

eof i++ 重復 size strcpy_s ++ == math 打印   今天用C語言把這個寫出來了,雖然c不是很熟,寫的還是蠻簡單,目前還想寫一個判斷輸入數字是否重復,重復就需要重新輸入,由於時間原因,還沒有寫。   代碼: #include<stdio.

C語言編寫簡單遊戲——三子棋

      先簡單介紹一下三子棋的規則,方便我們接下來的程式設計和理解。規則如下:   在九宮格棋盤上,只要將自己的三個棋子走成一條線(橫、豎、對角線),對方就算輸了。   規則很簡單,但是我們應

1012 - C語言程式設計教程(第三版)課後習題6.2

1012 - C語言程式設計教程(第三版)課後習題6.2 時間限制:1秒 記憶體限制:128兆 題目描述 輸入一行字元,分別統計出其中英文字母、空格、數字和其他字元的個數。 輸入 一行字元 輸出 統計值 樣例輸入 aklsjflj123 sadf918u324 asdf91u32oa

1011 - C語言程式設計教程(第三版)課後習題6.1

1011 - C語言程式設計教程(第三版)課後習題6.1 時間限制:1秒 記憶體限制:128兆 題目描述 輸入兩個正整數m和n,求其最大公約數和最小公倍數。 輸入 兩個整數 輸出 最大公約數,最小公倍數 樣例輸入 5 7 樣例輸出 1 35 最大公約數求法我是用的是輾轉相除法進行

1010 - C語言程式設計教程(第三版)課後習題5.8

1010 - C語言程式設計教程(第三版)課後習題5.8 時間限制:1秒 記憶體限制:128兆 題目描述 企業發放的獎金根據利潤提成。利潤低於或等於100000元的,獎金可提10%; 利潤高於100000元,低於200000元(100000<I≤200000)時,低於100000元的部

1047 - C語言程式設計教程(第三版)課後習題10.5

1047 - C語言程式設計教程(第三版)課後習題10.5 時間限制:1秒 記憶體限制:128兆 題目描述 有n人圍成一圈,順序排號。從第1個人開始報數(從1到3報數),凡報到3的人退出圈子,問最後留下的是原來的第幾號的那位。 輸入 初始人數n 輸出 最後一人的初始編號 樣例輸入

1022 - C語言程式設計教程(第三版)課後習題7.1

1022 - C語言程式設計教程(第三版)課後習題7.1 時間限制:1秒 記憶體限制:128兆 題目描述 用篩法求之N內的素數。 輸入 N 輸出 0~N的素數 樣例輸入 100 樣例輸出 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47

1008 - C語言程式設計教程(第三版)課後習題5.6

1008 - C語言程式設計教程(第三版)課後習題5.6 時間限制:1秒 記憶體限制:128兆 題目描述 給出一百分制成績,要求輸出成績等級‘A’、‘B’、‘C’、‘D’、‘E’。 90分以上為A 80-89分為B 70-79分為C 60-69分為D 60分以下為E 輸入 一個整數0

1007 - C語言程式設計教程(第三版)課後習題5.5

007 - C語言程式設計教程(第三版)課後習題5.5 時間限制:1秒 記憶體限制:128兆 描述 有一個函式 y={ x x<1 | 2x-1 1<=x<10 \ 3x-11 x>=10 寫一段程式,輸入x,輸出y 輸入 一個數x 輸出 一個數y 樣例輸