C語言學習筆記之實現小遊戲 飛機大戰1 0

2021-10-05 09:35:01 字數 3084 閱讀 5122

**參考童晶老師

詳見

#include

#include

#include

//函式外全域性變數定義

int high, width;

//畫布尺寸

int plane_x, plane_y,plane_l,plane_r;

//飛機位置

int bullet_x, bullet_y;

//子彈位置

int target_x, target_y;

//目標位置

int score;

void

hidecursor()

// 用於隱藏游標

;// 第二個值為0表示隱藏游標

setconsolecursorinfo

(getstdhandle

(std_output_handle)

,&cursor_info);}

void

startup()

//資料初始化

void

gotoxy

(int x,

int y)

//類似於清屏函式,游標移動到原點位置進行重畫

void

show()

//顯示畫面

else

if(j == width)

printf

("|");

else

if(i ==

1&& j == width +1)

//輸出遊戲規則

printf

("遊戲規則:");

else

if(i ==

2&& j == width +1)

printf

("'a''w''s''d'控制方向");

else

if(i ==

3&& j == width +1)

printf

("space發射子彈");

else

if(i ==

4&& j == width +1)

printf

("被目標擊中則遊戲結束");

else

if(i == plane_y && j == plane_x)

//輸出飛機第一行

else

if(i == plane_y +

1&& j >= plane_l && j <= plane_r)

//輸出飛機第二行

else

if(i == plane_y +

2&& j >= plane_l +

1&& j <= plane_r -1)

//輸出飛機第三行

else

if(i == bullet_y && j == bullet_x)

printf

("|");

//輸出子彈

else

if(i == target_y && j == target_x)

printf

("@");

//輸出目標

else

printf

(" ");

//輸出空格

}printf

("\n");

}printf

("得分:%d\n"

, score);}

void

updatewithoutinput()

//與使用者輸入無關的更新

if(bullet_y == target_y && bullet_x == target_x)

//子彈擊中目標

if(target_x<

2||target_x>width-2)

//如果目標沒有出現在子彈打擊範圍內,則重新生成

target_x =

rand()

% width;

//因為子彈在中心射出 兩邊有機翼 且不能與邊界相撞

if(bullet_y >-1

)//子彈上移

if(target_y > high)

//目標越過邊界

static

int speed =0;

//調節目標下落速度

if(speed <12)

speed++;if

(speed ==12)

}void

updatewithinput()

//與使用者輸入有關的更新

if(input ==

'd')

if(input ==

' ')

//發射子彈}}

intmain()

return0;

}

簡化的遊戲框架

// 函式外全域性變數定義

void

main()

}

兩個特殊的函式(gotoxy(),hidecursor())

gotoxy()實現類似清屏函式system("cls");(標頭檔案#include)的效果

void

gotoxy

(int x,

int y)

//類似於清屏函式,游標移動到原點位置進行重畫

hidecursor()隱藏游標,解決游標閃爍的問題

void

hidecursor()

// 用於隱藏游標

;// 第二個值為0表示隱藏游標

setconsolecursorinfo

(getstdhandle

(std_output_handle)

,&cursor_info)

;}

其他一些函式

心得思考

感覺是很難的問題但實際上一步步地實現,最後再回顧發現這些知識實際上都很簡單,只是因為自己本身的畏懼而一直覺得很困難,所以在拿到一道比較複雜的問題時,一定要敢於去想去動手,把它分解為乙個個模組,就會簡單很多。關於現在這個**的問題是有點太繁瑣了,尤其是在show()函式中畫邊界和飛機,但是也想不到更好的辦法了。

c語言學習之小遊戲2048

2048是乙個很經典的遊戲,記得當時我身邊有個小夥伴很沉迷這個,也覺得這個遊戲很厲害,於是今天就編寫了下乙個無圖形介面的。2048遊戲在我看來需要有以下幾點 隨機數 對於計算機發生隨機數函式rand 是並不是乙個真正的隨機數,它是由計算機產生的一系列偽隨機數,就是當我們執行這個函式的時候需要每次獲得...

簡單c語言小遊戲實現原理

對於很多剛學習完c語言的同學來說很迷茫,除了學校的期末考,完全不知道還能幹什麼。學校學的泛,教科書也是本分的介紹基本用法,而實現推箱子,五子棋等小遊戲,不但會激起同學們的興趣,而且其實現原理會啟發很多同學即便只有書上的基本用法,經過巧妙的使用,會使同學們明白,任何複雜的變化也都是由最基本的一條條語句...

C語言實現掃雷小遊戲

我們首先說一下基本思路 首先我們需要兩個面板,乙個顯示面板,乙個雷面板,這兩個面板需要用二維陣列來實現。其次,要在雷面板中布置雷,然後需要輸入座標,排查雷,繼而判斷是否踩到雷,如果踩到雷,那麼玩家死翹翹,遊戲結束,如果沒有踩到雷,需要判斷此座標周圍雷的個數。如果最後設定雷的總個數全部被排查出來,那麼...