tft每日頭條

 > 科技

 > c語言項目教程

c語言項目教程

科技 更新时间:2024-07-24 06:17:46

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

c語言項目教程(飛翔的小鳥零基礎項目)1

遊戲介紹:

《Flappy Bird》其實是曾經流行的一款手機遊戲,你隻要讓小鳥保持飛行,不要碰到綠色的管道就可以啦。操作雖然簡單,但是非常具有挑戰哦,不信就來試試吧!

遊戲的目标是讓小鳥穿過管子,不要碰到任何物體,挑戰更遠距離!操作隻需要控制方向鍵,讓我們的小鳥不碰到柱子即可。

玩法簡單,容易上手!所以這也成為了我們編程學習者C語言練習的一個非常好的小項目,如果你沒有玩過的話那麼可以先去玩一下的,會玩的話對于項目邏輯的理解也是非常有幫助的!接下來就讓我們一起來看看吧!

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

c語言項目教程(飛翔的小鳥零基礎項目)2

效果圖展示:

c語言項目教程(飛翔的小鳥零基礎項目)3

配套講解教程:飛翔的小鳥遊戲教程——哔哩哔哩

源代碼示例:

#include <stdio.h> #include <graphics.h> #include <conio.h> #include <time.h> #include <mmsystem.h> #pragma comment(lib,"winmm.lib") /************************************************* 數據設計 **************************************************/ IMAGE background; IMAGE bigBird[2]; //bigBird[0] bigBird[1]; IMAGE endImg[2]; IMAGE down[2]; IMAGE up[2]; HWND hwnd; //C語言結構體 struct bird { int x; //鳥的x和y坐标 int y; int speed; //鳥的速度 }; struct bird myBird = { 120, 10, 100 }; //加載資源:把圖片和變量綁定一起 void loadResource() { loadimage(&background, "background.bmp"); loadimage(&bigBird[0], "birdy.bmp",48,48); loadimage(&bigBird[1], "bird.bmp",48,48); loadimage(&endImg[0], "endy.bmp"); loadimage(&endImg[1], "end.bmp"); loadimage(&down[0], "downy.bmp"); loadimage(&down[1], "down.bmp"); loadimage(&up[0], "upy.bmp"); loadimage(&up[1], "up.bmp"); } /************************************************** 鳥的模塊 1.繪制鳥的過程 2.按鍵操作控制鳥的過程 3.音樂部分---多線程 ***************************************************/ //繪制鳥的過程 void drawBigBird(int x, int y) { putimage(x, y, &bigBird[0], SRCAND); putimage(x, y, &bigBird[1], SRCPAINT); } //線程處理函數--->C語言中函數指針 DWORD WINAPI playMusic(LPVOID pVoid) { mciSendString("open jump.mp3", 0, 0, 0); mciSendString("play jump.mp3 wait", 0, 0, 0); mciSendString("close jump.mp3", 0, 0, 0); return 0; } /**************************************************** 通用性技術: 1.并發編程 2.網絡編程 3.數據庫編程 *****************************************************/ //按鍵交互 void keyDown() { char userKey = '\0'; userKey = _getch(); //暫停功能 if (userKey == ' ') { while (_getch() != ' '); } switch (userKey) { case 72: //小鍵盤 myBird.y -= myBird.speed; CreateThread(NULL, NULL, playMusic, NULL, NULL, NULL); break; default: //其他按鍵 break; } } //碰地闆和上邊界處理 int hitFloor() { if (myBird.y <= 0 || myBird.y >= (512 - 48)) return 1; return 0; } //結束動畫 void gameOverAction() { int x = 60; int y = 608; while (y >= 240) { putimage(0, 0, &background); putimage(x, y, &endImg[0], SRCAND); putimage(x, y, &endImg[1], SRCPAINT); y -= 50; Sleep(50); } MessageBox(hwnd, "GameOver!You die!!","over", MB_OK); } /****************************************************** 柱子部分 1.畫柱子 2.初始化柱子 3.移動柱子 ******************************************************/ struct pillar { //上面柱子的屬性 int x; int y; int h; //能夠推出下面柱子的屬性: //Height-h; }; struct pillar 柱子[3]; //初始化做完 void initPillar(struct pillar 柱子[], int i) { 柱子[i].h = rand() % 100 160; 柱子[i].y = 0; 柱子[i].x = 288; } void drawPillar(struct pillar 柱子) { //上面的柱子 putimage(柱子.x, 0, 52, 柱子.h, &down[0], 0, 320 - 柱子.h, SRCAND); putimage(柱子.x, 0, 52, 柱子.h, &down[1], 0, 320 - 柱子.h, SRCPAINT); //下面的柱子 putimage(柱子.x, 512-(320-柱子.h), 52, 320-柱子.h, &up[0], 0, 0, SRCAND); putimage(柱子.x, 512 - (320 - 柱子.h), 52, 320 - 柱子.h, &up[1], 0, 0, SRCPAINT); } //通用性 重用性 /************************************************* 入口函數 **************************************************/ int main() { srand((unsigned int)time(NULL)); loadResource(); //1.創建窗口 hwnd=initgraph(288, 608); //描述自由落體 for (int i = 0; i < 3; i ) { initPillar(柱子, i); 柱子[i].x = 288 i * 150; } while (1) { putimage(0, 0, &background); drawBigBird(myBird.x, myBird.y); for (int i = 0; i < 3; i ) { 柱子[i].x -= 10; if (柱子[i].x < (-52 - 150)) { initPillar(柱子, i); } } for (int i = 0; i < 3; i ) { drawPillar(柱子[i]); } if (hitFloor()) { gameOverAction(); break; } myBird.y = 10; //隻有有按鍵才處理,沒有按鍵不能處理 //kbhit():存在按鍵返回非零值 if (_kbhit()) { keyDown(); } Sleep(50); //延時函數 } _getch(); //等待用戶按鍵 //2.關閉窗口 closegraph(); return 0; }

未完成的部分功能代碼,大家也可以自己先去想想試試,每一次的思考就是你進步的過程!

如果學習的過程中有什麼問題,以及本項目有什麼不懂的地方,都可以來找我交流,我來幫你!

那麼今天的分享就到這裡了,後續會更新更多精彩項目或者知識内容的,大家要好好學C語言C 喲~

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

編程學習書籍分享:

c語言項目教程(飛翔的小鳥零基礎項目)4

編程學習視頻分享:

c語言項目教程(飛翔的小鳥零基礎項目)5

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

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

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

,

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

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

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