赞
踩
黄金矿工道具说明:
金块:按大小区分,越大越值钱
石头:笨重且不值钱的障碍物
钻石:值钱的小石头
小猪:移动迅速的地下生物,能被钩子抓住
炸药桶:被触碰到就会爆炸的可怕道具
骨头:不值钱的地下道具
布袋:里面装着随机道具的袋子
炸药:按↑ 可以使用,炸掉钩子上的物品,快速收回钩子
生力药剂:加快你收回钩子的速度,一局内有效
石头收藏书:提高你收集到的石头价值,一局内有效
钻石收藏书:你搜集到的钻石将会更值钱,一局内有效
幸运草:可以从布袋中获得更好的道具,一局内有效
PS:要安装easyx图形库哦 #include<easyx.h> 开发工具为VS2013
在此之前呢,和大家说明一下,因为这是一个比较大的项目了,所以展示所有代码会有些困难,我裁剪了主要的大部分代码,主要目的是让大家明白实现这个项目的逻辑思路,希望大家可以理解,完整代码/编译器/图形库在文章最下方获取哦!
- int main()
- {
- //创建一个不一样得窗口,图形窗口
- initgraph(1080, 640,EW_SHOWCONSOLE);
- //设置整个窗口的背景颜色
- setbkcolor(RGB(45, 121, 157));
- //清楚屏幕
- cleardevice();
-
- initData();
-
- BeginBatchDraw();
- while (true)
- {
- cleardevice();
- gameDraw();
- hookRock(0.9);
- hookLongAndshort(5);
-
- FlushBatchDraw();
- }
- EndBatchDraw();
-
-
- getchar();
- return 0;
- }
- enum Index
- {
- i_gold = 1,
- i_money = 3,
- i_roleDwon = 5,
- i_roleUp =7,
- i_stone = 9,
- i_bk = 10
- };
- enum Dir
- {
- LEFT,
- RIGHT
- };
- enum State
- {
- S_Normal,
- S_Long,
- S_Short,
- };
- //角色位置(老头)
- struct Role
- {
- int x;
- int y;
- int w;
- int h;
- }role;
- // 钩子
- struct Hook
- {
- int x;
- int y;
- int endx;
- int endy;
- int len;
- double angle; //钩子的角度
- Dir dir;
- int vx;
- int vy;
- State state;
- }hook;
- //初始化数据
- void initData()
- {
- for (int i = 0; i < 10; i++)
- {
- WCHAR fileName[20] = { 0 };
- wsprintf(fileName, _T("./images/%d.jpg"), i);
- loadimage(img + i, fileName);
- }
- loadimage(img + 10, _T("./images/bk.jpg"), getwidth(), getheight() - 120);//加载图片到图片变量中去
-
- //绘制老头子
- role.w = (img + i_roleUp)->getwidth(); //140;
- role.h = img[i_roleUp].getheight(); //120;
- role.x = (getwidth() - role.w) / 2;
- role.y = 0;
-
- //绘制钩子hook
- hook.x = role.x + 47;
- hook.y = role.y + 100;
- hook.len = 50;
- hook.endx = hook.x;
- hook.endy = hook.y + hook.len;
- hook.angle = 0.0;
- hook.dir = RIGHT;
- hook.vx = 0;
- hook.vy = 0;
- hook.state = S_Normal;
- }
- //让钩子动起来
- void hookRock(double inc)
- {
- if (hook.state != S_NORMAL)
- return;
- if (hook.dir == RIGHT)
- {
- hook.angle += inc;
- }
- else
- {
- hook.angle -= inc;
- }
- if (hook.angle >= 81)
- {
- hook.dir = LEFT;
- }
- else if(hook.angle <= -81)
- {
- hook.dir = RIGHT;
- }
-
- //求当前endx,endy的位置
- hook.endx = hook.x + sin(PI/180* hook.angle)* hook.len;
- hook.endy = hook.y + cos(PI/180 * hook.angle)* hook.len;
-
- }
- void hookLongAndshort(int speed)
- {
- if (GetAsyncKeyState(VK_SPACE) && hook.state == S_Normal)
- {
- hook.state = S_Long;
- hook.vx = sin(PI / 180 * hook.angle) * speed;
- hook.vy = cos(PI / 180 * hook.angle) * speed;
- }
- if (hook.state == S_Long)
- {
- hook.endx += hook.vx;
- hook.endy += hook.vy;
- }
- else if (hook.state == S_Short)
- {
- hook.endx -= hook.vx;
- hook.endy -= hook.vy;
- }
- if (hook.endx <= 0 || hook.endx >= getwidth() || hook.endy >= getheight())
- {
- hook.state = S_Short;
- }
- if (distance(hook)<= hook.len)
- {
- hook.state = S_Normal;
- }
- }
好啦,重要的基础代码就这些~需要完整源码对照的同学可以在文章末领取,黄金矿工教程就到此结束啦!
今天就到这里了哈~
后续我还会发布更多的项目源或者学习资料,希望大家可以持续关注,有什么问题可以给我留言。
不管你是转行也好,初学也罢,进阶也可,如果你想学编程~
【值得关注】我的【C/C++源码资料学习群】点击进入
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。