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
C語言三字棋遊戲先簡單介紹一下三子棋的規則,方便我們接下來的程式設計和理解。規則如下: 在九宮格棋盤上,只要將自己的三個棋子走成一條線(橫、豎、對角線),對方就算輸了。
//判斷輸贏 char IsWin(char arr[ROW][COL], int row, int col) { int i; for (i = 0; i < row; i++) { if (arr[i][0] == arr[i][1] && arr[i][1] == arr
《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 樣例輸