用VS寫了一個小小的游戲,在界面右側有運行時間,接到的小球個數等信息,有 10 個小球下落,玩家可以控制一個盒子左右移動(方向鍵),來接小球,按 Esc 鍵退出,最后會顯示接到的小球的數目/分數。
游戲就是這么簡單,不過也很考驗大家的反應能力的哦!
游戲運行截圖如下:
簡單了解游戲后我們就來試試吧!
本項目編譯環境:Visual Studio 2019/2022,EasyX插件
代碼展示:
#include#include #include #include // 定義常量 #define NUM 10 #define CMD_LEFT 1 #define CMD_RIGHT 2 #define CMD_QUIT 4 int box_x = 10; int box_y = 420; // 定義球的結構體 struct Ball { int x, y, v; }; // 獲取用戶控制 int GetCommand() { int c = 0; if (GetAsyncKeyState(VK_LEFT) & 0x8000) c |= CMD_LEFT; if (GetAsyncKeyState(VK_RIGHT) & 0x8000) c |= CMD_RIGHT; if (GetAsyncKeyState(VK_ESCAPE) & 0x8000) c |= CMD_QUIT; return c; } // 倒計時 int Time(int t) { char strsec[10]; int sec = 20 - (GetTickCount() - t) / 1000; itoa(sec, strsec, 10); outtextxy(570, 110, " "); outtextxy(570, 110, strcat(strsec, "s")); return sec; } // 介紹 void menu() { line(449, 0, 449, 480); char runTime[] = "游戲倒計時 : ", receiveBallNum[] = "接到的球的數量:", copyRight[] = "版權所有:C語言編程", finishWorkDate[] = "完成日期:2023年1月7日", introductiona[] = "按方向鍵控制盒子移動接住", introductionb[] = "小球,倒計時為0時游戲結束"; settextcolor(GREEN); outtextxy(450, 10, introductiona); outtextxy(450, 30, introductionb); outtextxy(450, 110, runTime); outtextxy(450, 210, receiveBallNum); outtextxy(450, 310, copyRight); outtextxy(450, 410, finishWorkDate); } // 產生隨機球 void ballRandom(Ball ball[], int i) { ball[i].x = 16 + 45 * i; ball[i].y = 8 + rand() % 32; ball[i].v = 1 + rand() % 5; } // 畫球,并計算得分 void calculateScore(Ball ball[], int& score) { for (int i = 0; i < NUM; i++) { fillcircle(ball[i].x, ball[i].y, 8); if (ball[i].y >= 472) { ballRandom(ball, i); continue; } if (box_x + 8 <= ball[i].x && ball[i].x <= box_x + 72 && ball[i].y >= 412) { score++; ballRandom(ball, i); } } } // 主函數 int main() { // 初始化 initgraph(640, 480); srand(time(NULL)); BeginBatchDraw(); setlinecolor(GREEN); setfillcolor(WHITE); menu(); Ball ball[NUM]; int dx, i, c, score = 0; bool flag = true; for (i = 0; i < NUM; i++) { ballRandom(ball, i); } int t = GetTickCount(); char strScore[10], str[] = "your score:"; // 游戲主循環 while (flag) { dx = 0; // 顯示得分 char strScore[10]; itoa(score, strScore, 10); outtextxy(570, 210, strScore); // 畫球,并計算得分 calculateScore(ball, score); // 畫盒子 fillrectangle(box_x, box_y, box_x + 80, box_y + 60); FlushBatchDraw(); // 獲取用戶控制命令 c = GetCommand(); if (c & CMD_LEFT) dx = -10; if (c & CMD_RIGHT) dx = 10; if (c & CMD_QUIT) flag = false; if (!Time(t)) flag = false; // 延時 Sleep(25); // 擦除游戲區 clearrectangle(0, 0, 448, 480); // 計算球的新坐標 for (i = 0; i < NUM; i++) { ball[i].y += ball[i].v; } // 移動盒子 box_x += dx; if (box_x < 0) box_x = 0; if (box_x > 368) box_x = 368; } // 清空鍵盤緩沖區 FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); // 輸出游戲結果 itoa(score, strScore, 10); outtextxy(222, 240, strcat(str, strScore)); outtextxy(220, 300, "按任意鍵退出"); EndBatchDraw(); // 按任意鍵退出 getch(); closegraph(); return 0; }
大家趕緊去動手試試吧!
審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
游戲
+關注
關注
2文章
736瀏覽量
26283 -
C語言
+關注
關注
180文章
7598瀏覽量
136186 -
編程
+關注
關注
88文章
3592瀏覽量
93594 -
源碼
+關注
關注
8文章
633瀏覽量
29139
原文標題:C語言項目:接球小游戲(自制)!詳細思路+源碼分享
文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學習基地】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
C語言十字消除游戲!詳細思路+源碼分享
十字消除,休閑小游戲,在規定時間內,只要是十字線能連接到的相同顏色的方塊,就能獲得相應的得分,如果點擊后沒有能夠消除的方塊會扣除時間,是一款益智小游戲。
發表于 11-28 10:45
?1046次閱讀
llabview黑白棋小游戲制作詳細解析
`相關課程推薦:《8周LabVIEW視覺項目編程實戰特訓營》上面這張是效果圖編寫這樣一個界面可以使用到多種不同的思路和技巧,我會按照從簡到繁的順序,分幾次來介紹幾個不同的方法。 講由NI 軟件工程師阮奇楨為您講解。llabview黑白棋
發表于 11-23 15:44
最受歡迎Labview小游戲(程序實現資料下載)
一個界面可以使用到多種不同的思路和技巧,我會按照從簡到繁的順序,分幾次來介紹幾個不同的方法。 講由NI 軟件工程師阮奇楨為您講解。labview黑白棋小游戲制作詳細解析:`
發表于 04-14 20:11
C語言零基礎項目:連連看小游戲!
連連看小游戲速度節奏快,畫面清晰可愛,適合細心的玩家。豐富的道具和公共模式的加入,增強游戲的競爭性。多樣式的地圖,使玩家在各個游戲水平都可以尋找到挑戰的目標,長期地保持游戲的新鮮感。
C語言項目:扔香蕉的大猩猩(自制游戲)!詳細思路+源碼分享
網上有一個香蕉金剛的跑酷游戲,不過我們這個扔香蕉游戲模仿的并不是這個,而是模仿的微軟在 20 多年前的一個小游戲,不知道誰也有印象呢?
C語言項目:礦井逃生游戲(密室)!詳細思路+源碼分享
密室逃脫相信大部分都玩過了吧?本游戲就是一種用C語言寫的類似的游戲,因為用手電筒照明找路,所以有點像礦工的樣子,還是叫它礦井逃生吧!(以下是游戲
評論