用VS寫了一個小小的游戲,在界面右側(cè)有運行時間,接到的小球個數(shù)等信息,有 10 個小球下落,玩家可以控制一個盒子左右移動(方向鍵),來接小球,按 Esc 鍵退出,最后會顯示接到的小球的數(shù)目/分數(shù)。
游戲就是這么簡單,不過也很考驗大家的反應(yīng)能力的哦!
游戲運行截圖如下:

簡單了解游戲后我們就來試試吧!
本項目編譯環(huán)境: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; // 定義球的結(jié)構(gòu)體 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[] = "接到的球的數(shù)量:", copyRight[] = "版權(quán)所有:C語言編程", finishWorkDate[] = "完成日期:2023年1月7日", introductiona[] = "按方向鍵控制盒子移動接住", introductionb[] = "小球,倒計時為0時游戲結(jié)束"; 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); } // 產(chǎn)生隨機球 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); } } } // 主函數(shù) 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:"; // 游戲主循環(huán) 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); // 擦除游戲區(qū) 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; } // 清空鍵盤緩沖區(qū) FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); // 輸出游戲結(jié)果 itoa(score, strScore, 10); outtextxy(222, 240, strcat(str, strScore)); outtextxy(220, 300, "按任意鍵退出"); EndBatchDraw(); // 按任意鍵退出 getch(); closegraph(); return 0; }
大家趕緊去動手試試吧!
-
游戲
+關(guān)注
關(guān)注
2文章
787瀏覽量
27237 -
C語言
+關(guān)注
關(guān)注
183文章
7642瀏覽量
144524 -
編程
+關(guān)注
關(guān)注
90文章
3707瀏覽量
96709 -
源碼
+關(guān)注
關(guān)注
8文章
682瀏覽量
31062
原文標題:C語言項目:接球小游戲(自制)!詳細思路+源碼分享
文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學習基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄

C語言項目:接球小游戲(自制)!詳細思路+源碼分享
評論