我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么用C语言实现黄金矿工游戏

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么用C语言实现黄金矿工游戏

这篇文章主要介绍“怎么用C语言实现黄金矿工游戏”,在日常操作中,相信很多人在怎么用C语言实现黄金矿工游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用C语言实现黄金矿工游戏”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

首先我们先创建一个头文件,把一些结构体以及枚举类型的函数放进去,这样会让整个项目看起来更加有序,更好理解,先把枚举类型放进去

enum ATTR{//图片对应的数组下标i_gold=1,i_money=3,i_role=5,i_stone=9,i_bk= i_stone+1,//窗口尺寸WIDTH = 1080,HEIGHT= 640,//物品数量MINE_NUM=10,}; enum TYPE{//物品类型GOLD,//金块MONEY,//钱袋STONE,//石头//摆动方向LEFT,RIGHT,//摆动状态M_LONG,M_NORMAL,M_SHORT, };

之后把我们的老朋友结构体也放进去

struct Role{int x;//贴图的位置int y;int width;//图片宽度和高度int height;int coin;//金币};struct Mine //物品{int x;int y;int size;//用来计算碰撞int flag;//物品是否存在int type;//物品类型,钱袋,石头,金块int gold;//价值};//钩子struct Hook{double x;//绳子开始坐标,固定不变的double y;double endx;//末端变化的坐标double endy;int len;//绳子长度int dir;//摆动方向double angle;//摆动角度double speed;//速度double vx;//速度分量double vy;int swing;//是否在摆动int state;//伸长状态,伸长,正常,缩短int index;//抓到的物品下标};

OK,接下来就是我们的主要函数main.Cpp了,记得开始的时候加上我们写的头文件,先写初始化函数

void GameInit(){//初始化随机数种子srand(GetTickCount());//初始化角色数据role.coin = 0;role.width = 140;role.height = 120;role.x = WIDTH / 2 - role.width / 2;//让角色图片居中显示role.y = 0;//加载图片for (int i = 0; i < 10; i++){char fileName[20];sprintf(fileName, "./images/%d.jpg", i);if (i <= 1){loadimage(&img[i], fileName,73,62);}else{loadimage(&img[i], fileName);}}loadimage(&img[i_bk], "./images/bk.jpg",WIDTH,HEIGHT-role.height);//初始化物品for (int i = 0; i < MINE_NUM; i++){mine[i].flag = 1;mine[i].size = 60;mine[i].type = rand() % 3;mine[i].x=rand()%(WIDTH-mine[i].size);mine[i].y=rand()%(HEIGHT-role.height-100)+ role.height+ 50;mine[i].gold = rand()%600+rand()%200;}//初始化钩子hook.x = role.x+45;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.state = M_NORMAL;hook.vx = 0;hook.vy = 0;hook.speed = 5.0;hook.index = -1;}

再写我们的绘制函数,这个比较简单,就是贴图

void Gamedraw(){BeginBatchDraw();//设置背景颜色setbkcolor(GREEN);cleardevice();putimage(0, role.height, &img[i_bk]);//透明贴图 两张图片,一张掩码图,一张原图putimage(role.x, role.y, &img[i_role-1],class="lazy" data-srcAND);//掩码图putimage(role.x, role.y, &img[i_role],class="lazy" data-srcPAINT);//原图//绘制钩子setlinestyle(PS_SOLID, 5);setlinecolor(BROWN);line(hook.x, hook.y, hook.endx, hook.endy);//绘制物品for (int i = 0; i < MINE_NUM; i++){if (mine[i].flag){switch (mine[i].type){case GOLD:putimage(mine[i].x, mine[i].y, &img[i_gold-1],class="lazy" data-srcAND);putimage(mine[i].x, mine[i].y, &img[i_gold],class="lazy" data-srcPAINT);break;case MONEY:putimage(mine[i].x, mine[i].y, &img[i_money-1], class="lazy" data-srcAND);putimage(mine[i].x, mine[i].y, &img[i_money], class="lazy" data-srcPAINT);break;case STONE:putimage(mine[i].x, mine[i].y, &img[i_stone-1], class="lazy" data-srcAND);putimage(mine[i].x, mine[i].y, &img[i_stone], class="lazy" data-srcPAINT);break;}}}//绘制分数char s[30];sprintf(s, "金币:%d", role.coin);settextstyle(50, 0, "黑体");outtextxy(50, 50, s);EndBatchDraw();}

钩子摆动的函数,钩子该如何的摆,主要是让他不要往天上摆就行

//钩子摆动void hookRock(){if (hook.state == M_NORMAL){if (hook.dir == RIGHT){hook.angle++;}else{hook.angle--;}if (hook.angle > 80){hook.dir = LEFT;}else if (hook.angle < -80){hook.dir = RIGHT;}hook.endx = hook.x + sin(π / 180 * hook.angle) * hook.len;hook.endy = hook.y + cos(π / 180 * hook.angle) * hook.len;}}int distance(struct Hook hook){double dis=sqrt((hook.x-hook.endx)* (hook.x - hook.endx) + (hook.y-hook.endy) * (hook.y - hook.endy));return dis <= hook.len;}void keyControl(){//按空格伸长if (GetAsyncKeyState(VK_SPACE) && hook.state == M_NORMAL){hook.state = M_LONG;hook.vx = sin(π / 180 * hook.angle) * hook.speed;hook.vy = cos(π / 180 * hook.angle) * hook.speed;} if (hook.endx <= 0 || hook.endx >= WIDTH || hook.endy >= HEIGHT){hook.state = M_SHORT;}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.state = M_NORMAL;}}}

接下来是我们的抓取函数,也是比较简单

void grap(){//找到抓取的是哪个物品for (int i = 0; i < MINE_NUM; i++){if (mine[i].flag &&hook.endx > mine[i].x && hook.endx<mine[i].x + mine[i].size &&hook.endy>mine[i].y && hook.endy < mine[i].y + mine[i].size){hook.index = i;//保存抓到的物品的下标break;}}if (hook.index != -1){hook.state = M_SHORT;mine[hook.index].x = hook.endx-mine[hook.index].size/2;mine[hook.index].y = hook.endy- mine[hook.index].size / 2;if (distance(hook)){hook.state = M_NORMAL;mine[hook.index].flag = 0;role.coin += mine[hook.index].gold;hook.state = M_NORMAL;hook.index = -1;}}}

最后是我们的主函数

int main(){initgraph(WIDTH,HEIGHT,1);GameInit(); while (1){printf("%lf,%lf vxy(%lf,%lf)\n", hook.endx, hook.endy,hook.vx,hook.vy);hookRock();Gamedraw();keyControl();   grap();}closegraph();return 0;}

到此,关于“怎么用C语言实现黄金矿工游戏”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么用C语言实现黄金矿工游戏

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么用C语言实现黄金矿工游戏

这篇文章主要介绍“怎么用C语言实现黄金矿工游戏”,在日常操作中,相信很多人在怎么用C语言实现黄金矿工游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用C语言实现黄金矿工游戏”的疑惑有所帮助!接下来,请跟
2023-06-25

怎么用Matlab制作黄金矿工小游戏

本文小编为大家详细介绍“怎么用Matlab制作黄金矿工小游戏”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用Matlab制作黄金矿工小游戏”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。效果步骤图片准备本文所
2023-06-29

怎么用C语言实现2048游戏

本篇内容主要讲解“怎么用C语言实现2048游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用C语言实现2048游戏”吧!本文实例为大家分享了用C语言实现2048游戏的具体代码,供大家参考,
2023-06-20

基于Go语言怎么实现分金币游戏

今天小编给大家分享一下基于Go语言怎么实现分金币游戏的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。问题你有50枚金币,需要分
2023-07-05

C语言怎么实现飞机游戏

这篇“C语言怎么实现飞机游戏”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言怎么实现飞机游戏”文章吧。scanf 控制飞
2023-06-30

C语言怎么实现数独游戏

本文小编为大家详细介绍“C语言怎么实现数独游戏”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言怎么实现数独游戏”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。目标写一个数独游戏,有以下功能:1:能随机产生题目
2023-06-29

怎么用C语言完整实现2048游戏

这篇文章主要介绍怎么用C语言完整实现2048游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、游戏思路1、程序开始时出现菜单,让玩家选择开始游戏或者退出游戏。2、玩家选择开始游戏后,出现棋盘,通过方向键选择移动的
2023-06-25

怎么用c语言实现三子棋游戏

这篇文章给大家分享的是有关怎么用c语言实现三子棋游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。C语言是什么C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使用C语言可以以简易的方式编译、
2023-06-14

怎么用C语言实现扫雷小游戏

这篇文章主要讲解了“怎么用C语言实现扫雷小游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用C语言实现扫雷小游戏”吧!具体内容如下经典扫雷游戏规则:当玩家点击游戏区域,该处周围的八个位
2023-06-25

怎么用C语言实现五子棋游戏

这篇文章主要介绍“怎么用C语言实现五子棋游戏”,在日常操作中,相信很多人在怎么用C语言实现五子棋游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用C语言实现五子棋游戏”的疑惑有所帮助!接下来,请跟着小编
2023-06-20

怎样用C语言实现纸牌游戏

今天就跟大家聊聊有关怎样用C语言实现纸牌游戏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 基本要求一副没有花牌(J、Q、K、A、大小王)的扑克牌,两个人进行纸牌游戏,其中一个人
2023-06-22

C语言怎么实现井字棋游戏

今天就跟大家聊聊有关C语言怎么实现井字棋游戏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。井字棋游戏要求在3乘3棋盘上,每行都相同或者每列都相同再或者对角线相同,则胜出.因此我们可以
2023-06-25

C语言怎么实现三子棋游戏

这篇文章主要讲解了“C语言怎么实现三子棋游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言怎么实现三子棋游戏”吧!很多人从小都玩过三子棋,相信很多人都对这个游戏的实现有所疑问。那么今天
2023-06-20

C语言版扫雷游戏怎么实现

这篇文章主要介绍C语言版扫雷游戏怎么实现,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!用c语言做一个扫雷功能的简单实现,首先创建一个test.c来用于在写代码的途中测试扫雷代码,game.h来存放实现扫雷函数需要用到
2023-06-25

C语言怎么实现打砖块游戏

这篇文章主要介绍“C语言怎么实现打砖块游戏”,在日常操作中,相信很多人在C语言怎么实现打砖块游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言怎么实现打砖块游戏”的疑惑有所帮助!接下来,请跟着小编一起来
2023-06-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录