這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)——《黃金礦工項(xiàng)目》,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下!
游戲介紹:
在規(guī)定的時(shí)間內(nèi)得到規(guī)定的金錢時(shí)即可。玩法非常簡單,按“↓”鍵開使撈金子,如有***,按“↑”鍵放***,買東西點(diǎn)鼠標(biāo)左鍵。不過本游戲之設(shè)計(jì)到鉤子勾金子的程度,后面的關(guān)卡大家可以自行設(shè)計(jì),相信能夠設(shè)計(jì)金子了,鉆石的話同理還是非常簡單的。
本項(xiàng)目編譯環(huán)境:VS2019/VS2013;
插件:圖形庫插件easyX,涉及圖片素材可以自行百度找也可以關(guān)注文末領(lǐng)??;
配套講解教程:黃金礦工游戲教程——嗶哩嗶哩
源代碼示例:
enum Index{i_gold = 1,i_money = 3,i_roleDown = 5,i_roleUp = 7,i_stone = 9};/*鉤子擺動(dòng)狀態(tài),擺動(dòng),伸長,縮短,停止*/enum ATTR{LEFT,RIGHT,M_NORMAL,M_LONG,M_SHORT};struct Role{int x;int y;int width;int height;int coin; //總金錢};struct Hook{int x;int y;int endx;int endy;int len;//鉤子長度double angle;//鉤子當(dāng)前角度int dir;//鉤子擺動(dòng)方向,左,右int vx;//速度變化量int vy;int state;//當(dāng)前狀態(tài)};struct Role role;struct Hook hook;struct Mine//物品{int x;int y;int size;int type;bool flag;int gold;};struct Mine mine[10];//把圖片加載進(jìn)程序IMAGE img[11];void loadImg(){for (int i = 0; i < 10; i++){//如何把數(shù)字,轉(zhuǎn)成字符串char fileName[20] = "";sprintf(fileName, "./images/%d.jpg", i);loadimage(img + i, fileName);}loadimage(img+10,"./images/bk.jpg",WIDTH,HEIGHT);}void gameInit(){loadImg();role.width = 140;role.height = 120;role.x = WIDTH / 2 - role.width / 2;role.y = 0;hook.len = 50;hook.x = role.x+40;hook.y = role.y+100;hook.endx = hook.x;hook.endy = hook.y + hook.len;hook.angle = 0;hook.dir = RIGHT;hook.state = M_NORMAL;}void gameDraw(){setfillcolor(GREEN);solidrectangle(0, 0, WIDTH, role.height);putimage(0, role.height, img + 10);putimage(role.x, role.y, img + i_roleDown - 1, SRCAND);putimage(role.x, role.y, img + i_roleDown, SRCPAINT);//輸出我的錢setbkmode(TRANSPARENT);//設(shè)置背景透明settextstyle(50, 0, "黑體");char coin[20] = "";sprintf(coin, "金錢:%d", role.coin);outtextxy(20, 20, coin);//繪制鉤子setlinecolor(RED);setlinestyle(PS_SOLID, 5);line(hook.x, hook.y, hook.endx, hook.endy);setfillcolor(YELLOW);solidcircle(hook.endx, hook.endy, 5);}//鉤子擺動(dòng)void hookRock(){if (hook.state == M_NORMAL){if (hook.dir == RIGHT){hook.angle++;}else if (hook.dir == LEFT){hook.angle--;}if (hook.angle > MAX_ANGLE){hook.dir = LEFT;}else if (hook.angle<-MAX_ANGLE){hook.dir = RIGHT;}hook.endx = hook.x + sin(PI / 180 * hook.angle)*hook.len;hook.endy = hook.y + cos(PI / 180 * hook.angle)*hook.len;}}double distance(Hook h){return sqrt((double)(hook.endx - hook.x)*(hook.endx - hook.x) + (hook.endy - hook.y)*(hook.endy - hook.y));}void keyControl(int speed){if (GetAsyncKeyState(VK_SPACE))//virtual key{hook.state = M_LONG;hook.vx = sin(PI / 180 * hook.angle)*speed;hook.vy = cos(PI / 180 * hook.angle)*speed;}if (hook.state == M_LONG){hook.endx += hook.vx;hook.endy += hook.vy;}else if (hook.state==M_SHORT){hook.endx -= hook.vx;hook.endy -= hook.vy;if (distance(hook)<=hook.len){hook.state =M_NORMAL;}}//碰到邊界反回if (hook.endx<0 || hook.endx>WIDTH || hook.endy<0 || hook.endy > HEIGHT){hook.state = M_SHORT;}}int main(){//控制臺(tái)窗口(只能用來輸出文字)//我們需要能夠畫圖的窗口initgraph(WIDTH, HEIGHT, SHOWCONSOLE);gameInit();while (1){//雙緩沖繪圖,防止閃屏BeginBatchDraw();gameDraw();EndBatchDraw();hookRock();keyControl(5);}return 0;}
-
C語言
+關(guān)注
關(guān)注
183文章
7645瀏覽量
145839 -
代碼
+關(guān)注
關(guān)注
30文章
4972瀏覽量
74113
原文標(biāo)題:C語言項(xiàng)目實(shí)戰(zhàn):《黃金礦工》零基礎(chǔ)項(xiàng)目!180 行源代碼示例
文章出處:【微信號(hào):cyuyanxuexi,微信公眾號(hào):C語言編程學(xué)習(xí)基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
講解C語言代碼的實(shí)現(xiàn)過程
C語言來實(shí)現(xiàn)萬年歷
C語言實(shí)現(xiàn)PID算法介紹
如何用軟件實(shí)現(xiàn)系統(tǒng)的復(fù)位?
C語言主要特點(diǎn)
如何用好 C 語言函數(shù)的返回值?
單片機(jī)C語言編程的心得
為什么單片機(jī)還在用C語言編程?
C語言特性
C++ 與 Python:樹莓派上哪種語言更優(yōu)?
單片機(jī)C語言實(shí)例(350+例)
深入理解C語言:C語言循環(huán)控制
如何用C語言實(shí)現(xiàn)黃金礦工項(xiàng)目
評(píng)論