**參考童晶老師
詳見
#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語言實現掃雷小遊戲
我們首先說一下基本思路 首先我們需要兩個面板,乙個顯示面板,乙個雷面板,這兩個面板需要用二維陣列來實現。其次,要在雷面板中布置雷,然後需要輸入座標,排查雷,繼而判斷是否踩到雷,如果踩到雷,那麼玩家死翹翹,遊戲結束,如果沒有踩到雷,需要判斷此座標周圍雷的個數。如果最後設定雷的總個數全部被排查出來,那麼...