日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于easyx低配版flappybird

發布時間:2023/12/16 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于easyx低配版flappybird 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

又更了~(我真勤快。。。

就是一個基于easyx超簡單的小游戲,控制小球不要碰到樁
(昨晚幫舍友寫的一個簡化的小demo,所以界面什么的都有些劣質,對不住了

柱子會往前移動,有動感,但上下移動我還沒做出來。。。我是廢物。。

因為是個小demo,也就一百來行代碼,小伙伴們可以根據自己的喜好加工它使它成為一個完備的游戲

說到最最前面,我的障礙是用畫很粗的一條線完成的。。就瘋狂簡化。。

先用 class 為游戲中的各種東西定義

class K { public:int x;int y;int _y; };class K l1ne[25]; //上線 class K l2ne[25]; //下線 class K ball; //小球 class K blank[25]; //空白區域

關于線的函數,,看注釋

對了,這個障礙的數量可以自己改,我只設了25個,也可以設個幾百個,可以玩的時間長一點哦

void sbline(int x,int y) //畫上線 {setlinecolor(GREEN);setlinestyle(PS_SOLID, 45);line(x, y, x, 480); }void upline(int x, int y) //畫下線 {setlinecolor(GREEN);setlinestyle(PS_SOLID, 45);line(x, 0, x, y); }void initline() //初始線 {int k = 420;srand(time(0));for (int i = 0; i < 25; i++){l1ne[i].x = k;l2ne[i].x = k;k += 150;l1ne[i].y = rand() % 280 + 20;blank[i].y = l1ne[i].y;l2ne[i].y = l1ne[i].y + 150;blank[i]._y = l2ne[i].y;} }void draw() //畫線 {for (int i = 0; i < 25; i++){upline(l1ne[i].x, l1ne[i].y);sbline(l2ne[i].x, l2ne[i].y);} }void moveline1() //線向前移動 {for (int i = 0; i < 25; i++){l1ne[i].x -= 7;l2ne[i].x -= 7;} }

控制小球的部分 (小球改成小鳥圖片不就是個flappybird的嗎。。(doge

void initball() //初始球坐標 {ball.y = 100;ball.x = 180; }void drawball(int x,int y) //畫球 {setcolor(RED);setfillcolor(RED);fillcircle(x, y, 3); }void moveball() //控制上下 {if (GetAsyncKeyState('W') || GetAsyncKeyState(VK_UP)){ball.y -= 20;}if (GetAsyncKeyState('S') || GetAsyncKeyState(VK_DOWN)){ball.y += 20;} }

判斷碰撞
此處建議自己精化一下,這個不太嚴謹
效果大概是這樣的

void crash() //判斷碰撞 {int xx = ball.x;int yy = ball.y;for (int i = 0; i < 25; i++){if ((abs(xx-l1ne[i].x) < 5 && yy-blank[i].y < 30 )|| (abs(xx - l2ne[i].x) < 5 && blank[i]._y-yy < 30 ) ){settextcolor(RED);settextstyle(50, 60, "Impact");outtextxy(65, 300, "LOSE!");settextcolor(RED);settextstyle(20, 10, "宋體");outtextxy(120, 400, "按空格鍵結束游戲");Sleep(2000);while (true){FlushBatchDraw();Sleep(10);if (_kbhit()){if (_getch() == ' '){closegraph();}}}}} }

main函數給看一下

int main() {initgraph(1040, 480);setbkcolor(WHITE);cleardevice();initline();initball();while (1){BeginBatchDraw();cleardevice();draw();drawball(ball.x,ball.y);moveball();crash();Sleep(100);moveline1();EndBatchDraw();}_getch();}

最后。。完整代碼如下

#include<graphics.h> #include<time.h> #include<conio.h> #include<iostream> #include<stdlib.h> class K { public:int x;int y;int _y; };class K l1ne[25]; //上線 class K l2ne[25]; //下線 class K ball; //小球 class K blank[25]; //空白區域void sbline(int x,int y) //畫上線 {setlinecolor(GREEN);setlinestyle(PS_SOLID, 45);line(x, y, x, 480); }void upline(int x, int y) //畫下線 {setlinecolor(GREEN);setlinestyle(PS_SOLID, 45);line(x, 0, x, y); }void initline() //初始線 {int k = 420;srand(time(0));for (int i = 0; i < 25; i++){l1ne[i].x = k;l2ne[i].x = k;k += 150;l1ne[i].y = rand() % 280 + 20;blank[i].y = l1ne[i].y;l2ne[i].y = l1ne[i].y + 150;blank[i]._y = l2ne[i].y;} }void draw() //畫線 {for (int i = 0; i < 25; i++){upline(l1ne[i].x, l1ne[i].y);sbline(l2ne[i].x, l2ne[i].y);} }void initball() //初始球坐標 {ball.y = 100;ball.x = 180; }void drawball(int x,int y) //畫球 {setcolor(RED);setfillcolor(RED);fillcircle(x, y, 3); }void moveball() //控制上下 {if (GetAsyncKeyState('W') || GetAsyncKeyState(VK_UP)){ball.y -= 20;}if (GetAsyncKeyState('S') || GetAsyncKeyState(VK_DOWN)){ball.y += 20;} }void moveline1() //線向前移動 {for (int i = 0; i < 25; i++){l1ne[i].x -= 7;l2ne[i].x -= 7;} }void crash() //判斷碰撞 {int xx = ball.x;int yy = ball.y;for (int i = 0; i < 25; i++){if ((abs(xx-l1ne[i].x) < 5 && yy-blank[i].y < 30 )|| (abs(xx - l2ne[i].x) < 5 && blank[i]._y-yy < 30 ) ){settextcolor(RED);settextstyle(50, 60, "Impact");outtextxy(65, 300, "LOSE!");settextcolor(RED);settextstyle(20, 10, "宋體");outtextxy(120, 400, "按空格鍵結束游戲");Sleep(2000);while (true){FlushBatchDraw();Sleep(10);if (_kbhit()){if (_getch() == ' '){closegraph();}}}}} }int main() {initgraph(1040, 480);setbkcolor(WHITE);cleardevice();initline();initball();while (1){BeginBatchDraw();cleardevice();draw();drawball(ball.x,ball.y);moveball();crash();Sleep(100);moveline1();EndBatchDraw();}_getch();}

臨時寫的,手殘且菜。。如有很多不足還請包容。。如果能評論給建議更好啦

對easyx感興趣的小伙伴還可以看看之前寫的賽車小游戲,里面的教程壓縮包免費哦,拿走不謝~

總結

以上是生活随笔為你收集整理的基于easyx低配版flappybird的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。