0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何用C语言实现黄金矿工项目

C语言编程学习基地 来源:C语言编程学习基地 作者:C语言编程学习基地 2021-11-19 10:33 次阅读

这篇文章主要为大家详细介绍了C语言实现——《黄金矿工项目》,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下!

游戏介绍:

在规定的时间内得到规定的金钱时即可。玩法非常简单,按“↓”键开使捞金子,如有***,按“↑”键放***,买东西点鼠标左键。不过本游戏之设计到钩子勾金子的程度,后面的关卡大家可以自行设计,相信能够设计金子了,钻石的话同理还是非常简单的。

本项目编译环境:VS2019/VS2013;

插件:图形库插件easyX,涉及图片素材可以自行百度找也可以关注文末领取;

配套讲解教程:黄金矿工游戏教程——哔哩哔哩

源代码示例:

#include#include#include#define WIDTH 1080#define HEIGHT 640#define PI 3.1415#define MAX_ANGLE 80enum Index{  i_gold = 1,  i_money = 3,  i_roleDown = 5,  i_roleUp = 7,  i_stone = 9};/*钩子摆动状态,摆动,伸长,缩短,停止*/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;//钩子当前角度  int dir;//钩子摆动方向,左,右  int vx;//速度变化量  int vy;  int state;//当前状态};struct Role role;struct Hook hook;struct Mine//物品{  int x;  int y;  int size;  int type;  bool flag;  int gold;};struct Mine mine[10];//把图片加载进程序 IMAGE img[11];void loadImg(){  for (int i = 0; i < 10; i++)  {    //如何把数字,转成字符串    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);//设置背景透明  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);}//钩子摆动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(){  //控制台窗口(只能用来输出文字)  //我们需要能够画图的窗口  initgraph(WIDTH, HEIGHT, SHOWCONSOLE);  gameInit();
  while (1)  {    //双缓冲绘图,防止闪屏    BeginBatchDraw();    gameDraw();    EndBatchDraw();    hookRock();    keyControl(5);  }  return 0;}

责任编辑:haq
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7616

    浏览量

    138059
  • 代码
    +关注

    关注

    30

    文章

    4841

    浏览量

    69218

原文标题:C语言项目实战:《黄金矿工》零基础项目!180 行源代码示例

文章出处:【微信号:cyuyanxuexi,微信公众号:C语言编程学习基地】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    EE-188:使用C语言在ADSP-219x DSP上实现中断驱动系统

    电子发烧友网站提供《EE-188:使用C语言在ADSP-219x DSP上实现中断驱动系统.pdf》资料免费下载
    发表于 01-15 16:06 0次下载
    EE-188:使用<b class='flag-5'>C</b><b class='flag-5'>语言</b>在ADSP-219x DSP上<b class='flag-5'>实现</b>中断驱动系统

    AKI跨语言调用库神助攻C/C++代码迁移至HarmonyOS NEXT

    量;某知名社交电商平台使用后减少了50%以上跨语言调用接口代码量;某图像处理软件所有C++代码复用通过AKI来实现。使用AKI后这些项目不仅减少了
    发表于 01-02 17:08

    基于FPGA实现图像直方图设计

    直方图统计的原理 直方图统计从数学上来说,是对图像中的像素点进行统计。图像直方图统计常用于统计灰度图像,表示图像中各个灰度级出现的次数或者概率。统计直方图的实现采用C/C++或者其他高级语言实
    的头像 发表于 12-24 10:24 268次阅读
    基于FPGA<b class='flag-5'>实现</b>图像直方图设计

    金矿业与亿纬锂能达成战略合作

    近日,紫金矿业集团股份有限公司(以下简称“紫金矿业”)董事长陈景河与惠州亿纬锂能股份有限公司(以下简称“亿纬锂能”)董事长刘金成博士正式会面,并就双方战略合作进行深入交流。
    的头像 发表于 12-09 15:56 302次阅读

    使用C语言实现函数模板

      用C语言能不能实现一个通用的函数,既能完成整数的相加,又能完成浮点数的相加?
    的头像 发表于 11-09 11:38 513次阅读

    C语言中的socket编程基础

    Socket编程简介 Socket是一种通信机制,允许程序之间进行通信。在C语言中,socket编程是网络编程的基础。通过使用socket,程序可以发送和接收数据,实现不同计算机之间的通信
    的头像 发表于 11-01 16:51 517次阅读

    C语言与Java语言的对比

    C语言和Java语言都是当前编程领域中的重要成员,它们各自具有独特的优势和特点,适用于不同的应用场景。以下将从语法特性、内存管理、跨平台性、性能、应用领域等多个方面对C
    的头像 发表于 10-29 17:31 477次阅读

    何用 S7-200 实现 Modbus 通信?

    电子发烧友网站提供《如何用 S7-200 实现 Modbus 通信?.pdf》资料免费下载
    发表于 09-14 10:22 1次下载

    PLC编程语言C语言的区别

    在工业自动化和计算机编程领域中,PLC(可编程逻辑控制器)编程语言C语言各自扮演着重要的角色。尽管两者都是编程语言,但它们在多个方面存在显著的区别。本文将从多个维度深入探讨PLC编程
    的头像 发表于 06-14 17:11 3361次阅读

    何用C语言实现高效查找(二分法)

    今天给分享一下使用C语言实现二分算法,主要包含以下几部分内容:二分查找算法介绍二分查找算法使用场景二分查找算法代码实现二分查找算法实现过程用C
    的头像 发表于 06-04 08:04 1293次阅读
    如<b class='flag-5'>何用</b><b class='flag-5'>C</b><b class='flag-5'>语言实现</b>高效查找(二分法)

    使用C语言实现的CRC计算单元的例子

    使用C语言实现的CRC计算单元的例子
    的头像 发表于 05-16 16:16 1117次阅读

    嵌入式编程,如何用 C 语言实现状态机设计?

    状态机模式是一种行为模式,通过多态实现不同状态的调转行为的确是一种很好的方法,只可惜在嵌入式环境下,有时只能写纯C代码,并且还需要考虑代码的重入和多任务请求跳转等情形,因此实现起来着实需要一番考虑
    发表于 04-23 11:00

    C语言实现Web参数传递

    电子发烧友网站提供《C语言实现Web参数传递.docx》资料免费下载
    发表于 03-24 09:14 2次下载

    fpga语言是什么?fpga语言c语言的区别

    功能,从而实现对数字电路的高效定制。FPGA语言主要包括VHDL(VHSIC Hardware Description Language)和Verilog等,这些语言具有强大的描述能力,能够精确地定义硬件的每一个细节,从而
    的头像 发表于 03-15 14:50 1050次阅读

    嵌入式系统中C语言结构体的基础实现与应用

    C语言中的数组只能允许程序员定义存储相同类型数据。但是结构是C语言编程中允许您存储不同数据类型的数据。
    发表于 03-12 14:29 587次阅读
    嵌入式系统中<b class='flag-5'>C</b><b class='flag-5'>语言</b>结构体的基础<b class='flag-5'>实现</b>与应用