今天我們將用C語言實現一個小球跳躍躲避方塊的游戲。
就像闖關游戲一樣,小球闖關類游戲是休閑游戲的=一種,玩家在游戲中需要控制各種不同的小球展開不同的挑戰(zhàn),盡情的闖過重重的關卡,努力的操作小球躲避障礙物以及機關,順利的到達終點,玩法十分的簡單,但是非常的考驗玩家的敏捷力以及反應力。
要做出這個游戲,首先學習字符的知識,按空格鍵控制小球起跳;然后學習矩形的繪制,利用邏輯運算符實現小球和方塊的碰撞判斷;接著學習整除、取余、類型轉換,利用隨機數增加游戲的趣味性;最后實現得分的計算顯示、解決小球在空中起跳的問題。
源碼示例:
#include#include #include int main() { float width,height,gravity; // 游戲畫面大小、重力加速度 float ball_x,ball_y,ball_vy,radius; // 小球圓心坐標、y方向速度、半徑大小 float rect_left_x,rect_top_y,rect_width,rect_height,rect_vx; // 方塊障礙物的相關參數 int score = 0; // 得分 int isBallOnFloor = 1; // 小球是否在地面上,避免重復起跳 width = 600; // 游戲畫面寬度 height = 400; // 游戲畫面高度 gravity = 0.6; // 重力加速度 initgraph(width, height); // 新建一個畫布 radius = 20; // 小球半徑 ball_x = width/4; // 小球x位置 ball_y = height-radius; // 小球y位置 ball_vy = 0; // 小球初始y速度為0 rect_height = 100; // 方塊高度 rect_width = 20; // 方塊寬度 rect_left_x = width*3/4; // 方塊左邊x坐標 rect_top_y = height - rect_height; // 方塊頂部y坐標 rect_vx = -3; // 方塊x方向速度 while(1) // 一直循環(huán) { if (kbhit()) // 當按鍵時 { char input = _getch(); // 獲得輸入字符 if (input==' ' && isBallOnFloor==1) // 當按下空格鍵,并且小球在地面上時 { ball_vy = -17; // 給小球一個向上的速度 isBallOnFloor = 0; // 表示小球不在地面了,不能重復起跳 } } ball_vy = ball_vy + gravity; // 根據重力加速度更新小球y方向速度 ball_y = ball_y + ball_vy; // 根據小球y方向速度更新其y坐標 if (ball_y >= height-radius) // 如果小球落到地面上 { ball_vy = 0; // y速度為0 ball_y = height-radius; // 規(guī)范其y坐標,避免落到地面下 isBallOnFloor = 1; // 表示小球在地面上 } rect_left_x = rect_left_x + rect_vx; // 方塊向左移 if (rect_left_x <= 0) // 如果方塊跑到最左邊 { rect_left_x = width; // 在最右邊重新出現 score = score + 1; // 得分+1 rect_height = rand() % int(height/4) + height/4; // 設置隨機高度 rect_vx = rand()/float(RAND_MAX) *4 - 7; // 設置方塊隨機速度 } // 如果小球碰到方塊 if ((rect_left_x <= ball_x + radius) && (rect_left_x + rect_width >= ball_x - radius) && (height - rect_height <= ball_y + radius) ) { Sleep(50); // 慢動作效果 score = 0; // 得分清零 } cleardevice(); // 清空畫面 fillcircle(ball_x, ball_y, radius); // 繪制小球 // 畫方塊 fillrectangle(rect_left_x, height - rect_height, rect_left_x + rect_width,height); TCHAR s[20]; // 定義字符串數組 _stprintf(s, _T("%d"), score); // 將score轉換為字符串 settextstyle(40, 0, _T("宋體")); // 設置文字大小、字體 outtextxy(50, 30, s); // 輸出得分文字 Sleep(10); // 暫停10毫秒 } closegraph(); return 0; }
這一次主要講解了字符、邏輯運算符、整除、取余、類型轉換、隨機數等語法知識。利用繪制圓、矩形的函數,實現了別碰方塊的小游戲。
讀者也可以參考本章的開發(fā)思路,嘗試設計并分步驟實現flappy bird游戲(以后也會分享哦)
希望對大家有幫助!
審核編輯:湯梓紅
-
游戲
+關注
關注
2文章
742瀏覽量
26317 -
C語言
+關注
關注
180文章
7604瀏覽量
136820 -
源碼
+關注
關注
8文章
641瀏覽量
29212
原文標題:C語言實現《別碰白塊》小游戲!全部代碼+思路注釋
文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學習基地】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論