tft每日頭條

 > 遊戲

 > c語言遊戲編程入門

c語言遊戲編程入門

遊戲 更新时间:2025-01-27 12:12:36

這篇文章主要為大家詳細介紹了C語言實現——《别踩白塊遊戲》,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小夥伴們可以參考一下!

c語言遊戲編程入門(别踩白塊遊戲零基礎項目)1

遊戲介紹:

《别踩白塊兒 Don't Tap The White Tile》,這就是這個遊戲的一個規則,我們隻需要不斷踩着黑色方塊前進即可,很簡單吧?誰都可以會玩,但并不是誰都能玩得很好噢,你呢?快來挑戰看看吧!經典模式,以最快的速度到達終點。街機模式,你有能力得多少分就得多少分,沒有任何限制,這也是最具挑戰性的一個模式。限時模式,在30秒内看你能走幾步。極速模式,沒有最高速限制的街機模式, 挑戰你的極限接力模式,規定時間内完成50塊兒,然後會有更多時間去完成另外的50塊兒!

好了,那麼我們今天就用我們所學的C語言知識來做出這個遊戲吧!本項目僅實現了街機模式,其他模式大家可以自行摸索喲!

本項目編譯環境:VS2019/VS2013;

插件:圖形庫插件easyX,涉及圖片素材可以自行百度找也可以關注文末領取;

效果圖展示

c語言遊戲編程入門(别踩白塊遊戲零基礎項目)2

配套講解教程:别踩白塊遊戲教程——哔哩哔哩

源代碼示例:

#include<stdio.h> #include<stdlib.h> #include<time.h> #include<graphics.h> #include<mmsystem.h> //多媒體設備接口頭文件 #pragma comment(lib,"winmm.lib") //多媒體設備接口庫文件 #define mian main #define WIDTH 400 #define HEIGHT 700 #define INTERVAL 100 //黑塊怎麼存儲? int map[4]; int score; //分數 void gameInit() { //播放音樂,向多媒體設備接口發送指令字符串 mciSendString(L"open ./野蜂飛舞.mp3 alias BGM", NULL, NULL, NULL); //media device interface send 發送 string 字符串 mciSendString(L"play BGM", NULL, NULL, NULL); //設置随機數種子 srand((unsigned)time(NULL)); //對map進行随機初始化 for (size_t i = 0; i < 4; i ) { map[i] = rand() % 4; } } //遊戲界面繪制 void gameDraw() { //設置文字樣式 settextstyle(30, 0, L"楷體"); settextcolor(RED); outtextxy(150, 30, L"别踩白塊"); //繪制遊戲界面 setlinecolor(BLACK); setlinestyle(PS_SOLID, 2); for (size_t i = 0; i < 5; i ) { line(0, i * 150 INTERVAL, WIDTH, i * 150 INTERVAL); //畫橫線 line(i * 100, INTERVAL, i * 100, HEIGHT); //畫豎線 } //根據map繪制出黑塊所在的位置 setfillcolor(BLACK); for (size_t i = 0; i < 4; i ) { int x = map[i] * 100; int y = i * 150 INTERVAL; //畫一個黑色的矩形 fillrectangle(x, y, x 100, y 150); } //輸出分數 settextstyle(20, 0, L"楷體"); settextcolor(BLACK); //把int 轉成 字符串用什麼? WCHAR str[20] = L""; wsprintf(str, L"%d", score); outtextxy(20, 20, str); } void move() { //清屏 cleardevice(); //移動 for (size_t i = 3; i > 0; i--) { map[i] = map[i - 1]; } map[0] = rand() % 4; } //用鼠标點擊黑塊,實現所有快,往下移動 bool MOUSEEvent() { //獲取鼠标消息 MOUSEMSG msg = GetMouseMsg(); if (msg.uMsg == WM_LBUTTONDOWN) //鼠标左鍵按下 { //獲取最下面的黑塊的左上角坐标 int x = map[3] * 100; int y = 3 * 150 INTERVAL; if (msg.x >= x && msg.x <= x 100 && msg.y >= y && msg.y <= y 150) { score = 10; //move(); } else { return false; } } return true; } //街機模式 void loop() { Sleep(500); // 這個不太行,要自己寫定時器最好 move(); } void gameOver() { //彈出框 int isok =MessageBox(GetHWnd(), L"you lowser,是否繼續?", L"hit", MB_OKCANCEL); if (isok == IDOK) { printf("繼續遊戲~\n"); } else { printf("推出遊戲~\n"); } } int mian() { //圖形,正方形,圓形.... 圖片 EW_SHOWCONSOLE同時顯示控制台 initgraph(WIDTH, HEIGHT,EW_SHOWCONSOLE); //設置窗口背景顔色 setbkcolor(WHITE); cleardevice(); gameInit(); while (true) { gameDraw(); if (!mouseEvent()) { break; } loop(); } //遊戲結束處理 gameOver(); getchar(); closegraph(); return 0; }

寫在最後:對于準備學習C/C 編程的小夥伴,如果你想更好的提升你的編程核心能力(内功)不妨從現在開始!

編程學習書籍分享:

c語言遊戲編程入門(别踩白塊遊戲零基礎項目)3

編程學習視頻分享:

c語言遊戲編程入門(别踩白塊遊戲零基礎項目)4

整理分享(多年學習的源碼、項目實戰視頻、項目筆記,基礎入門教程)

歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比自己琢磨更快哦!

對于C/C 感興趣可以關注小編在後台私信我:【編程交流】一起來學習哦!可以領取一些C/C 的項目學習視頻資料哦!已經設置好了關鍵詞自動回複,自動領取就好了!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关遊戲资讯推荐

热门遊戲资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved