您的位置:首页 → 攻略  →  手游攻略  →  挖金子小游戏图形化编程(黄金矿工游戏源码)

挖金子小游戏图形化编程(黄金矿工游戏源码)

2023-08-01 13:30:37作者:传世攻速手游    阅读数:

玩家通过键盘的按键控制矿工抓取金块,将钩子碰触到的金块抓取过来。 要求如下: 

1. 游戏的金块的总数是20(可以自己去设置),大小位置是随机的。

挖金子小游戏图形化编程(黄金矿工游戏源码)

 

2. 在没有抓取状态下,钩子左右摆动,此时矿工的是静止的。当钩子摆动到角度,玩家可以单击键盘上的上下左右键中的下方向键或者是空格键控制矿工伸出长钩,抓取金子,此时矿工是向下摇动转轴。获取到金子往回拉后,矿工是不断转动转轴,直到金子拉动到钩子初始处,矿工恢复静止,钩子继续左右摇摆,直到玩家再次单击向下方向键。

3. 伸出的钩子如果碰触到金子,则钩子和金子一起往回拉,回收的速度根据抓取到的金子的大小变化而变化,金子越大,回拉的速度越慢,反之亦然。如果钩子没有碰触到金子,而是碰触到左右和下的边界,则钩子保持原来的速度往回收。 

4. 抓取到的金子拉回到转轴处消失,此时金子数目减少一个。如果玩家将所有金子抓取完,游戏返回或者结束。

所用编译器:VS2013,代码纯手写,希望各位也能自己去手敲,而不是复制粘贴!!!图片大家可以自己去找素材图,也可以关注笔者微信公众号回复关键字:黄金矿工领取~

话不多说:直接上源码!

#include<stdio.h> #include<math.h> #include<graphics.h>//easyx 包含头文件,可以使用提供的接口,函数 #define WIN_WIDTH 1080 #define WIN_HEIGHT 640 #define MAX_IMAGE 11 //图片数量 #define MAX_MINE 10 //物品数量 #define MAX_ANGLE 80 //角度 #define PI 3.1415926535898 //int a,char b enum MINE //枚举图片数组下标 { i_gold=1, i_money=3, i_soledown=5, i_soleup=7, i_stone=9, i_bk = MAX_IMAGE-1, }; enum MINE_TYPE //物品类型枚举 { GOLD, MONEY, STONE, //方向 LEFT, RIGHT, //状态,正常,伸长,缩短 M_NOMAL, M_LONG, M_SHORT, }; struct Sole //角色信息 { int x;//贴图位置 int y; int width;//图片宽高 int height; int coin;//金币 }sole; struct Mine //物品 { int x; int y; int szie; //边界判断 bool flag;//是否存在 int type;//物品类型,石头,金块,钱袋 int gold;//物品价值 }mine[MAX_MINE]; struct Hook //钩子 { int x; int y; int endx; int endy; int len;//长度 int angle;//角度 int dir;//摆动方向 int vx;//速度分量 int vy; int state; int index;//记录抓到的物品下标 }hook; IMAGE img[MAX_IMAGE]; int distance(Hook hook); //初始化数据 void GameInit() { //创建窗口 init 初始化 graphics图形界面 initgraph(WIN_WIDTH, WIN_HEIGHT,SHOWCONSOLE); //设置随机数种子 srand(GetTickCount()); //加载图片 for (int i = 0; i < MAX_IMAGE-1; i++) { char temp[25]=""; sprintf(temp, "./images/%d.jpg", i); if (i <= 1) { loadimage(&img[i], temp,73,62);//注意:字符集问题 } else { loadimage(&img[i], temp);//注意:字符集问题 } } loadimage(&img[i_bk], "./images/bk.jpg", WIN_WIDTH, WIN_HEIGHT-120); //初始化角色信息 sole.width = 140; sole.height = 120; sole.x = WIN_WIDTH/2-sole.width/2;//x轴居中 sole.y = 0; sole.coin = 0; //初始化物品信息 for (int i = 0; i < MAX_MINE; i++) { mine[i].flag = true; mine[i].gold = rand() % 200+1; mine[i].szie = 60; mine[i].type = rand()%3; mine[i].x = rand() % (WIN_WIDTH - 60); mine[i].y = rand() % (WIN_HEIGHT - 150) + 150; } //初始化钩子 hook.x = sole.x + 40; hook.y = sole.y + 100; hook.len = 50; hook.endx = hook.x; hook.endy = hook.y + hook.len; hook.angle = 0; hook.dir = RIGHT; hook.vx = 0; hook.vy = 0; hook.state = M_NOMAL; hook.index = -1; } //游戏绘制 void GameDraw() { //绘制背景 putimage(0, 120, &img[i_bk]); //绘制角色背景颜色 setfillcolor(RGB(255, 208, 52)); solidrectangle(0, 0, WIN_WIDTH, 120); //绘制角色 putimage(sole.x, sole.y, &img[i_soledown-1],SRCAND);//知道为啥减1不? putimage(sole.x, sole.y, &img[i_soledown],SRCPAINT); //绘制物品 for (int i = 0; i < MAX_MINE; i++) { if (mine[i].flag == true) { switch (mine[i].type) { case GOLD: putimage(mine[i].x, mine[i].y, &img[i_gold-1],SRCAND); putimage(mine[i].x, mine[i].y, &img[i_gold],SRCPAINT); break; case MONEY: putimage(mine[i].x, mine[i].y, &img[i_money - 1], SRCAND); putimage(mine[i].x, mine[i].y, &img[i_money], SRCPAINT); break; case STONE: putimage(mine[i].x, mine[i].y, &img[i_stone - 1], SRCAND); putimage(mine[i].x, mine[i].y, &img[i_stone], SRCPAINT); break; } } } //绘制钩子 setlinecolor(BROWN); setlinestyle(PS_SOLID, 5); line(hook.x, hook.y, hook.endx, hook.endy); //绘制分数 char score[30] = ""; sprintf(score, "分数:%d", sole.coin); settextcolor(WHITE); setbkmode(TRANSPARENT); settextstyle(50, 0, "楷体"); outtextxy(20, 20, score); } //钩子摆动 void HookRock() { if (hook.state == M_NOMAL) { if (hook.dir == RIGHT) { hook.angle++; } else { hook.angle--; } if (hook.angle > MAX_ANGLE) { hook.dir = LEFT; } else if (hook.angle<-MAX_ANGLE) { hook.dir = RIGHT; } //角度转弧度 360 2pai 180 PI hook.endx = hook.x + sin(PI / 180 * hook.angle)*hook.len; hook.endy = hook.y + cos(PI / 180 * hook.angle)*hook.len; } } //游戏控制 void GameControl(int speed) { if (GetAsyncKeyState(VK_SPACE) && hook.state==M_NOMAL) { //按键,求出速度分量 hook.vx = sin(PI / 180 * hook.angle)*speed; hook.vy = cos(PI / 180 * hook.angle)*speed; hook.state = M_LONG; } //碰到边界返回 if (hook.endx<0 || hook.endx>WIN_WIDTH || hook.endy > WIN_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_NOMAL; } } //接下来就是让hook.endx 加上hook.vx printf("%d %d\n", hook.vx, hook.vy); } void JudgeGrap() { //判断抓到那个物品 for (int i = 0; i < MAX_MINE; i++) { if (mine[i].flag == true && hook.endx>mine[i].x && hook.endx<mine[i].x+mine[i].szie && hook.endy>mine[i].y && hook.endy<mine[i].y+mine[i].szie) { hook.index = i; break; } } //如果抓到了 if (hook.index != -1) { hook.state = M_SHORT; mine[hook.index].x = hook.endx; mine[hook.index].y = hook.endy; //缩短完成 if (distance(hook)) { mine[hook.index].flag = false; hook.index = -1; hook.state = M_NOMAL; } } } //void main int main() { GameInit(); DWORD t1 , t2; t1 = t2 = GetTickCount(); BeginBatchDraw(); while (1) { if (t2 - t1 > 15) { HookRock(); t1 = t2; } t2 = GetTickCount(); GameDraw(); FlushBatchDraw(); GameControl(10); JudgeGrap(); //防止闪退 } return 0; } int distance(Hook hook) { int dis = sqrt((float)(hook.x - hook.endx)*(hook.x - hook.endx) + (hook.y - hook.endy)*(hook.y - hook.endy)); return dis <= hook.len; }

还在等什么呢?代码都给你了,赶紧照着去做呗!

自学C/C++编程难度很大,不妨和一些志同道合的小伙伴一起学习成长!

C语言C++编程学习交流圈子,关注+私信【C/C++编程】微信公众号:C语言编程学习基地

有一些源码和资料分享,欢迎转行也学习编程的伙伴,和大家一起交流成长会比自己琢磨更快哦!

挖金子小游戏图形化编程(黄金矿工游戏源码)

 


挖金子小游戏图形化编程(黄金矿工游戏源码)

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至957126978@qq.com举报,一经查实,本站将立刻删除。

攻略排行榜

  • 地铁2033重制版怪物图鉴(FPS游戏地铁2033评测)地铁2033重制版怪物图鉴(FPS游戏地铁2033评测)
    steam开放一天的限时活动,可以免费领取游戏:地铁2033。很多玩家包括小编都喜加一了。在这段时间中,小编已经打通了本游戏的双结局,下面来带大家了解地铁2033的宏大世界观。 《地铁2033》游戏改编自俄罗斯作家Dmitry Glukhovsky的同名小说,之前在中国也发行了小说的中文版。但是游戏和小说有点不相同的就是剧情是不一样的。本篇文章将着重介绍游戏的剧情和世界观。 背景故事:2013年世界爆发了毁灭性的核大战(根据wiki百科,应该是两个中东国家的核弹互射引发了全球范围内的核交换)。俄罗斯的导弹发射前就遭到了核打击,地表上几乎全部的人类都被消灭。在莫斯科,反导系统成功拦截了大部分导
    阅读:742024-05-26
  • 盲目之恋游戏结局什么意思(盘点五款虐心的恋爱游戏)盲目之恋游戏结局什么意思(盘点五款虐心的恋爱游戏)
    爱情一直都是人类所渴望的东西。渴望爱情不仅仅是荷尔蒙分泌导致的结果,更是因为恋爱能够让两个在这个世界上独一无二的人相互扶持,获得心灵上的归宿,一起走完人生的坎坷之路。今天小编给大家介绍的就是五款恋爱游戏,在这些游戏里你能找到恋爱的感觉,但是也会因为一些剧情而感到虐心。 一、露西她所期望的一切 推荐理由:《露西她所期望的一切》是一款人机恋爱题材的双结局文字恋爱游戏。作为小成本作品,游戏能讨论的人工智能内容仅仅是蜻蜓点水,比起辐射4或是电视剧《西部世界》这样有深度内涵的自然不能相提并论,但好处就在于它呈现了小人物与高等人工智能之间的家庭式的对话,过程温馨且不必在设定上太过费劲,这样的小制作能引起
    阅读:292024-05-25
  • wow翡翠林稀有怪(魔兽世界野外平民级宠物攻略)wow翡翠林稀有怪(魔兽世界野外平民级宠物攻略)
    以下获得方法几乎都是野外宠物对战获得,简单轻松,跑图抓捕即可。 在此之前,先分享一个插件:BattlePetBreedID 有没有遇到这么一个问题: 这只小宠物到底,有几种类型? 成长到最后,属性值又是多少? 这只小宠物到底是不是最好的呢? 而此插件就很好的解决这3个问题,只要打开宠物列表,移动鼠标到宠物图标上,就会有详细信息,未抓捕的也可以哦! P : power 攻击力 H : health 生命值 S : speed 速度 B: Balanced 平衡 PP:满攻击. SS:满速. HH:满生命 BB:全均衡 PS:高攻带速度,以此类推。 同样此插件属于单体插件,一般插件盒子都没有携带
    阅读:232024-05-24
  • 金庸群侠传笑傲江湖攻略(金庸群侠传3D笑傲江湖主线)金庸群侠传笑傲江湖攻略(金庸群侠传3D笑傲江湖主线)
    在我们进入《金庸群侠传》世界之后,接到的第一个任务就是来自《笑傲江湖》。 林平之和田伯光是我们最初的人生导师。一位教你怎么风流快活,一位则教你如何禁欲提升武学修为。剧情发展到中期我们就会发现,前期的这些人物都是无足轻重的,对剧情没有多大影响。 《笑傲江湖》是游戏中最难获取的小说,并不是说获取的途径有多繁琐,而是要将所有的任务触发需要走很多重复的路。 首先去悦来客栈找到令狐冲,然后他表示要喝好酒。我们去梅庄拿到梨花酒,然后去欧阳克这边拿到翡翠杯之后,令狐冲就能跟我们上路了。 去思过崖就能拿到《独孤九剑》,将剑法练到10级之后,这条主线就算是正式开始。 先后去拜访衡山、衡山、嵩山、泰山和华山,这
    阅读:232024-05-23
  • 刺客信条2详细图文攻略(刺客信条2第五关通关 )刺客信条2详细图文攻略(刺客信条2第五关通关 )
    刺客信条2的第五章是怎么通关的嘞?很多刚入手的新手宝宝一定还不是很清楚,今天小编为大家带来的是第五章通关教程攻略,感兴趣的宝宝们快来一起参与吧! 一、刺客信条2第五章通关教程攻略: 1、小弟有点小钱了先去铁匠屋买东西 2、好多武器可选 先买把速度快的比较实用 3、随便和那穿珠宝的哈完就去找达分奇聊完就获得毒袖剑了 4、EVASIVE MANEUVERS跟叔叔学躲技、空手夺刃这两招对付金甲武士很有用 a、THE CROW DOES NOT MAKE THE MONK直接杀进去取修士的命就好 b、BEHINE CLOSE DOOR这人因为随着相关人一一被杀他就赫着躲在要塞内 c、这边不管警卫有多
    阅读:402024-05-23
  • 斗地主心得攻略(斗地主拆牌三小招)斗地主心得攻略(斗地主拆牌三小招)
    斗地主拆牌攻略来啦 夜微凉,月如霜 秋意浓,岁月柔 秋高气爽无疑是秋天最好的解说 呼吸一下新鲜空气 打开窗 走出门 你感受到秋天了吗? 风是秋天的信差 享受秋风裹挟而来的自在 这一刻的“闲逸”时光 快乐是属于我们的 小逸这时 不得不来几场刺激欢快的斗地主喽~ 许久没玩了 我怕再不捡起来 “牌神”称号可能得易主 (开玩笑自封的啦~) 不过关于技术这方面小逸我还真是 有话说~ 玩斗地主老是输怎么办? 牌还不错也赢不了? 小牌太多肯定要输? 大家也会遇到这样的问题吗 “宁愿输也不愿拆牌” 可要避免这个想法哟~ 今天小逸就来给大家分享 斗地主拆牌攻略 牌拆的好 残局也能赢~ 一、拆连对 斗地主拆牌的
    阅读:232024-05-23
  • ps4蝙蝠侠合集攻略(蝙蝠侠 阿卡姆合集评测)ps4蝙蝠侠合集攻略(蝙蝠侠 阿卡姆合集评测)
    《蝙蝠侠 阿卡姆合集》实体版9月发售 PS4将追加独占内容 亚马逊英国部门今天在商店上列出了《蝙蝠侠 阿卡姆合集》的实体版预售信息,根据预售信息显示,这款游戏将会在今年9月推出,对应PS4和Xbox one平台。 《蝙蝠侠 阿卡姆合集》是一款收录了《阿卡姆疯人院》和《阿卡姆之城》以及《阿卡姆骑士》三部作品的动作游戏,在去年11月推出过下载版。游戏中,玩家将会扮演蝙蝠侠,在哥谭市的阿卡姆疯人院对抗关在这里的反派们。游戏中收录了多名来自漫画中的反派角色,包括小丑、哈莉、毒藤女、谜语人、双面人和企鹅人等等。另外蝙蝠侠的盟友猫女、戈登等人也会在游戏中登场。两部作品的故事互相连接,给玩家讲述一个完整的
    阅读:552024-05-22
  • 口袋妖怪梦特性是几代出的(宝可梦基础设定之特性)口袋妖怪梦特性是几代出的(宝可梦基础设定之特性)
    接触过第四世代《宝可梦 钻石/珍珠》的训练家们,如果抓到过那只远古“三神柱”之首的雷吉奇卡斯并且使用过它,肯定都对这只披着“远古遗迹神兽”外衣的最弱神兽印象深刻。 慢启动特性惹的祸 雷吉奇卡斯作为拉动了宝可梦世界的大陆,构成如今宝可梦大陆组成部分的传说级宝可梦,来头和名声大到无法想象。本以为种族值之和达到670,可以与封面一级神兽相媲美的它,在进行战斗时却异常疲软,无论训练家怎么对其配招都打不出它面板上的威力。这正是由于雷吉奇卡斯的唯一特性“慢启动”搞得鬼。 我们先来看看特性“慢启动”是怎么回事:慢启动特性的宝可梦出场时,进入慢启动状态。慢启动状态下,攻击与速度减半;慢启动状态会持续五个回合
    阅读:552024-05-22
  • 光环4剧情能自定义护甲吗(光环4pc中文版)光环4剧情能自定义护甲吗(光环4pc中文版)
    光环4(HALO 4)又名光晕4,是由343工作组制作,Microsoft Studios发行的一款第一人称射击游戏,也是《光环》系列推出系列作品的第四代。该作品最早于2012年登陆Xbox平台,现如今整合上架steam平台。 第四代游戏延续了前几部作品的故事背景和玩法,承袭了之前十分成功而且极度受到赞扬的游戏前作,具有如此宽泛的内容。再加上动作本身如此的突出,以至于一经发售就赢得了广大粉丝和玩家的好评。除此之外,这款游戏具有值得夸耀的卓越画面、具有极高重玩性的战役,以及在这个平台的射击游戏中迄今最出色、最完善的在线多人游戏模式,且延续了史诗般的冒险故事。 与此同时,光环4游戏中的场景和主角
    阅读:272024-05-22
  • 异域狂想曲简体中文版(异域镇魂曲游戏攻略)异域狂想曲简体中文版(异域镇魂曲游戏攻略)
    《异域镇魂曲》这款经典游戏想必80后玩家绝对不会陌生吧。今天就给大家讲讲这款游戏的开发商黑岛工作室的“起”与“结”。2003年12月9日,一个借以黑岛老员工之口的消息传遍了网络,黑岛工作室已被关闭。面对沸腾了的角色扮演游戏玩家们,虽然Interplay马上给出了极其暧昧的官方说法,但不管是对此感到愤怒愤怒的人也好、失意的人也罢,对此深有感触的玩家心中都切实的明白到——曾经的黑岛消失了。虽然我们知道没有什么是会长盛不衰,但是辐射、博德之门、异域镇魂曲在这些闪耀光芒的照射下黑岛竟然就这样突然的迎来了“曲终人散”的一刻,实在是玩家们难以想象的。6年,在这一个并不算漫长的时间里,曾经充满活力与创意的
    阅读:582024-05-22