当前位置:   article > 正文

C/C++项目:4399小游戏黄金矿工编译教程_图形化编程黄金矿工

图形化编程黄金矿工

黄金矿工中文版》是一款休闲益智小游戏,游戏中你需要看准时机出钩子勾取金子或者砖石来获得金钱的累加,达到一定的金钱数才能够闯关成功,游戏十分经典,强烈推荐大家学会编写这款游戏,休闲时没网也能自己玩哦。

黄金矿工道具说明:

金块:按大小区分,越大越值钱

石头:笨重且不值钱的障碍物

钻石:值钱的小石头

小猪:移动迅速的地下生物,能被钩子抓住

炸药桶:被触碰到就会爆炸的可怕道具

骨头:不值钱的地下道具

布袋:里面装着随机道具的袋子

炸药:按↑ 可以使用,炸掉钩子上的物品,快速收回钩子

生力药剂:加快你收回钩子的速度,一局内有效

石头收藏书:提高你收集到的石头价值,一局内有效

钻石收藏书:你搜集到的钻石将会更值钱,一局内有效

幸运草:可以从布袋中获得更好的道具,一局内有效

今天我就用C语言带大家一步步去完成好玩有趣学会没网也能打开的黄金矿工小游戏。

PS:要安装easyx图形库哦 #include<easyx.h> 开发工具为VS2013

在此之前呢,和大家说明一下,因为这是一个比较大的项目了,所以展示所有代码会有些困难,我裁剪了主要的大部分代码,主要目的是让大家明白实现这个项目的逻辑思路,希望大家可以理解,完整代码/编译器/图形库在文章最下方获取哦!

正片开始:

第一步: 打开vs2013,创建一个项目,并将准备好的素材资源放到CPP同级目录下(素材可以在文章最下方领取),如图:

 第二步:创建窗口,加上背景:

  1. int main()
  2. {
  3. //创建一个不一样得窗口,图形窗口
  4. initgraph(1080, 640,EW_SHOWCONSOLE);
  5. //设置整个窗口的背景颜色
  6. setbkcolor(RGB(45, 121, 157));
  7. //清楚屏幕
  8. cleardevice();
  9. initData();
  10. BeginBatchDraw();
  11. while (true)
  12. {
  13. cleardevice();
  14. gameDraw();
  15. hookRock(0.9);
  16. hookLongAndshort(5);
  17. FlushBatchDraw();
  18. }
  19. EndBatchDraw();
  20. getchar();
  21. return 0;
  22. }

 第三步:用枚举函数设置钩子,设置老头位置:

  1. enum Index
  2. {
  3. i_gold = 1,
  4. i_money = 3,
  5. i_roleDwon = 5,
  6. i_roleUp =7,
  7. i_stone = 9,
  8. i_bk = 10
  9. };
  10. enum Dir
  11. {
  12. LEFT,
  13. RIGHT
  14. };
  15. enum State
  16. {
  17. S_Normal,
  18. S_Long,
  19. S_Short,
  20. };
  21. //角色位置(老头)
  22. struct Role
  23. {
  24. int x;
  25. int y;
  26. int w;
  27. int h;
  28. }role;
  29. // 钩子
  30. struct Hook
  31. {
  32. int x;
  33. int y;
  34. int endx;
  35. int endy;
  36. int len;
  37. double angle; //钩子的角度
  38. Dir dir;
  39. int vx;
  40. int vy;
  41. State state;
  42. }hook;

第四步:初始化数据,绘制老头和钩子:

  1. //初始化数据
  2. void initData()
  3. {
  4. for (int i = 0; i < 10; i++)
  5. {
  6. WCHAR fileName[20] = { 0 };
  7. wsprintf(fileName, _T("./images/%d.jpg"), i);
  8. loadimage(img + i, fileName);
  9. }
  10. loadimage(img + 10, _T("./images/bk.jpg"), getwidth(), getheight() - 120);//加载图片到图片变量中去
  11. //绘制老头子
  12. role.w = (img + i_roleUp)->getwidth(); //140;
  13. role.h = img[i_roleUp].getheight(); //120;
  14. role.x = (getwidth() - role.w) / 2;
  15. role.y = 0;
  16. //绘制钩子hook
  17. hook.x = role.x + 47;
  18. hook.y = role.y + 100;
  19. hook.len = 50;
  20. hook.endx = hook.x;
  21. hook.endy = hook.y + hook.len;
  22. hook.angle = 0.0;
  23. hook.dir = RIGHT;
  24. hook.vx = 0;
  25. hook.vy = 0;
  26. hook.state = S_Normal;
  27. }

第五步:让钩子动起来:

  1. //让钩子动起来
  2. void hookRock(double inc)
  3. {
  4. if (hook.state != S_NORMAL)
  5. return;
  6. if (hook.dir == RIGHT)
  7. {
  8. hook.angle += inc;
  9. }
  10. else
  11. {
  12. hook.angle -= inc;
  13. }
  14. if (hook.angle >= 81)
  15. {
  16. hook.dir = LEFT;
  17. }
  18. else if(hook.angle <= -81)
  19. {
  20. hook.dir = RIGHT;
  21. }
  22. //求当前endx,endy的位置
  23. hook.endx = hook.x + sin(PI/180* hook.angle)* hook.len;
  24. hook.endy = hook.y + cos(PI/180 * hook.angle)* hook.len;
  25. }
  26. void hookLongAndshort(int speed)
  27. {
  28. if (GetAsyncKeyState(VK_SPACE) && hook.state == S_Normal)
  29. {
  30. hook.state = S_Long;
  31. hook.vx = sin(PI / 180 * hook.angle) * speed;
  32. hook.vy = cos(PI / 180 * hook.angle) * speed;
  33. }
  34. if (hook.state == S_Long)
  35. {
  36. hook.endx += hook.vx;
  37. hook.endy += hook.vy;
  38. }
  39. else if (hook.state == S_Short)
  40. {
  41. hook.endx -= hook.vx;
  42. hook.endy -= hook.vy;
  43. }
  44. if (hook.endx <= 0 || hook.endx >= getwidth() || hook.endy >= getheight())
  45. {
  46. hook.state = S_Short;
  47. }
  48. if (distance(hook)<= hook.len)
  49. {
  50. hook.state = S_Normal;
  51. }
  52. }

好啦,重要的基础代码就这些~需要完整源码对照的同学可以在文章末领取,黄金矿工教程就到此结束啦!

写在最后

今天就到这里了哈~

后续我还会发布更多的项目源或者学习资料,希望大家可以持续关注,有什么问题可以给我留言。

不管你是转行也好,初学也罢,进阶也可,如果你想学编程~

值得关注】我的【C/C++源码资料学习群】点击进入

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/127476
推荐阅读
相关标签
  

闽ICP备14008679号