怎样做小游戏挖金子(VC,源码5)

【挖金子game】 请注意,这个代码只是一个非常基础的示例,用于说明“挖金子”游戏的基本逻辑。在实际的游戏开发中,您可能需要添加更多的功能,比如复杂的游戏规则、图形用户界面、音效和动画等。如果您想要开发一个更完整的游戏,建议使用专业的游戏开发工具和编程语言。这个简单的游戏允许玩家通过按Enter键来“挖掘”金子,每次挖掘都有一定的几率找到金子。游戏设置了最大挖掘次数和最大金子数量,当玩家挖到所有金子或用尽所有挖掘次数时,游戏结束。如果您想要编写一个简单的“挖金子”游戏代码,可以使用Python这样的编程语言来实现。 阅读详情

今天的程序讲课,开始。

前面几讲,涉及程序框架、地图文件、叉子的摆动、旋转拉伸,这几方面都可以归纳为基本数据处理,今天讲“交互”,很简单,判断叉子抓到物品,当拉回后,增加金钱数量。核心是碰撞检测。

网上的这个游戏是FLASH作的,FLASH的碰撞检测就一个函数,即可实现各式各样的图形检测。VC中,就用自己动手。最初的想法,是把叉子看成一个圆形,各种矿石也看成圆形,做两个圆形的检测,只要检测圆心距离就可以了。看起来很好,我还是用了另外一个方法,叉子口的连线是一个线段,矿石看成圆形,检测线段和圆是否相交。代码如下:

int GAMEMAP::DetectCatch(int x,int y,int iangle)
{
    
int i;
    
int j;
    
int x0,y0; //中点
    int tempx,tempy;
    
int xoff,yoff;
    
//将爪子边上的直线5等分,依次取点比较
    int point[]={0,2,4,-2,-4};

    
if(iCatchId!=-1)
    {
        
return 0;//当前已经获得了物品
    }

    xoff
=8*cos(10*iangle*1.57/90);
    yoff
=8*sin(10*iangle*1.57/90);

    x0
=x+8*xoff;//中点坐标
    y0=y+8*yoff;

    
for(i=0;i<iObjectNum;i++)
    {
        
//如果当前物品已经取走,继续判断下一个
        if(0==objectarray[i].id)
            
continue;
        
for(j=0;j<5;j++)
        {
            tempx
=x0+point[j]*yoff;
            tempy
=y0-point[j]*xoff;

            
if(CmpDistance(objectarray[i].x+objecthit[objectarray[i].id-1].x,
                objectarray[i].y
+objecthit[objectarray[i].id-1].y,
                tempx,tempy,
                objecthit[objectarray[i].id
-1].id))
            {
                iCatchId
=i;
                
return 1;
            }
        }
    }
    
return 0;
}

是不是不像线段和圆的判断?这不是严格的数学检测,我只取了线段的5个等分点,然后判断各点和矿石的距离是否小于矿石的半径。这个计算过程通过一个宏和一个函数实现:

#define DISTANCE(x,y,x2,y2) (((x)-(x2))*((x)-(x2))+((y)-(y2))*((y)-(y2)))

int CmpDistance(int x,int y,int x2,int y2,int l)
{
    
if(DISTANCE(x,y,x2,y2)<=l*l)
    {
        
return 1;
    }
    
return 0;
}

有了数学模型,那么,矿石的“圆心”和“半径”怎样获得呢?需要设置一个数组:

 //各个物体的检测半径,检测圆心坐标(偏移量)
 GAMEOBJECT temp[]={
  {14,14,14},
  {25,25,25},
  {30,30,30},
  {23,23,23},
  {14,14,14}
 };

这是半径、圆心坐标(相对于图形左上角的偏移量)。碰撞检测完成。

矿石的移动
需要把叉子移动的状态、代码,赋予 各个矿石吗?不需要。只要在WM_TIMER消息中,根据叉子的坐标刷新物体的坐标即可。代码为:

//入参:叉子的坐标和角度
void GAMEMAP::MoveObject(int x,int y,int iangle)
{
    
if(-1==iCatchId)
        
return;

    objectarray[iCatchId].x
=x+20*cos(iangle*10*1.59/90);
    objectarray[iCatchId].y
=y+20*sin(iangle*10*1.59/90);

    
if(y<=58)
    {
        
//增加钱币
        iMoneyNow+=object_value[objectarray[iCatchId].id-1];
        
//一个物品拉到目的地
        objectarray[iCatchId].id=0;        
        iCatchId
=-1;        
    }
}

拉回矿石,增加金钱

这个小游戏核心的逻辑就是“拉回矿石,增加金钱”。如同上方的代码,当叉子的坐标小于58(初始的纵坐标),认为拉回了矿石,金钱增加。同时把物品数组objectarray的ID域清零,即从画面中消除了该物品。

各种物品的金钱值放在一维数组中: int tempvalue[]={50,150,500,15,600};

至此,游戏的主要功能就完成了。

附加功能:道具使用

提供了两种道具:炮和药水。点击“炮”,增加炮的数量;点击“药水”,设置叉子的拉回速度。代码为:

void GAMEMAP::UseEquip(int money,int iequip,GAMECATCH &c)
{
    iMoneyNow
-=money;
    
if(iMoneyNow<0)
    {
        iMoneyNow
=0;
    }

    
switch(iequip)
    {
    
case 0:
        
//增加炮的数量
        iFireNum++;
        
break;
    
case 1:
        
//增加拉动速度
        c.iSpeedMore=2;
        
break;
    }
}

炮的使用也很简单,在用户按“上”时,清除当前抓到的物品:代码为:

void GAMEMAP::KeyProc(int iKey)
{
    
switch(iKey)
    {
    
case VK_UP:
        
if(iFireNum>0 && iCatchId>=0)
        {
            iFireNum
--;
            bBombAni.SetAni(objectarray[iCatchId].x,objectarray[iCatchId].y);
            
//一个物销毁
            objectarray[iCatchId].id=0;        
            iCatchId
=-1;        
        }
        
break;
    }
}

至此,所有的交互功能已全部介绍完,游戏制作完成。还有几个部分,像按钮、道具选择界面、动画播放,定时器。概括起来是两项:位图操作、时间控制,应该有很大的优化空间,我就不介绍了。欢迎参考原工程“挖金子VC版源码”(在优快云下载频道)。

谢谢!

python 自制黄金矿工游戏(设计思路+源码) python自制黄金矿工,细节拉满沉浸式体验,看了你也会。 阅读详情

相关推荐

用C/C++编程实现挖金子游戏「含项目源码」

C++挖金子游戏,这个游戏还是小时候玩过。源码比较完整,在VC++ 6.0中可以顺利编译运行,本挖金子游戏界面效果如演示截图所示。 项目结构展示: 部分源码展示: 玩家通过键盘的按键控制矿工抓取金块,将钩子碰触到的金块抓取过来。 要求如下: 1.单机键盘上的空格键进入游戏,金块的总数是20,大小位置是随机的。 2.在没有抓取状态下,钩子左右摆动,此时矿工的是静止的。...

python学习+VX:YYQX2209 1659

《黄金矿工》挖矿游戏 前端高阶版本,Cocos2d-js,附项目源码

西游黄金矿工是一款以黄金矿工玩法为基础,西游题材为背景的HTML5游戏,玩家需要在规定的时间内抓取宝物,同时需要达到过关分值方可过关。正在上传…重新上传取消正在上传…重新上传取消正在上传…重新上传取消......

fdw630的博客 2731

挖金子VC 游戏源码.rar

挖金子VC 游戏源码,这个游戏没有玩过,不知道玩法。不过源码比较完整,在VC 6.0中可以顺利编译运行,本挖金子游戏界面效果如演示截图所示。

还不错的全民采矿小程序源码+代码已开源

正文: 还不错的全民采矿小程序源码+代码已开源,可配合流量主和激励视频,程序是单开版的,一个站点只能单个平台使用此应用,一个小程序使用此应用。 下方图片是小程序工具介绍: 下方是程序介绍: 程序: lanzou.com/iRgwE04a5d0d 图片: ...

rgthyef的博客 1751

vc++小游戏(使用vc++6.0)

使用vc++6 0做的mfc小游戏

挖金子VC版源码

用VC实现的挖金子游戏,包含整个工程文件.

怎样做小游戏挖金子(VC,源码3)

说明:整个工程文件已经上传至“下载频道”, 名字是“挖金子VC版源码”。不仅包括源代码,还有图形资源。最方便的是能直接编译、运行。昨天讲解了游戏开始菜单的相关程序。今天开始讲游戏主逻辑。当用户点击了“开始”按钮后,进入游戏。需要做的工作是:加载地图,游戏上方的叉子开始摆动,同时检测用户按键,判断是否抓到物品等等。待俺一一道来。地图信息包括:第几关,物品及其坐标,以前两关的地图数据为例:

programking的快乐生活 3571

黄金矿工C++ 代码程序

这是一个压缩包,里面含有直接做成的黄金矿工程序exe,可以直接打开或者分享他人去玩,另外还有相应的代码文件和一些附带文件,支持c++,c等

C/C++游戏项目详细教程:《黄金矿工》

《黄金矿工》是一款非常经典的游戏。在游戏中,玩家通过不断挖矿,获取金子,最终能够闯入下一关。在这个过程中,会不断有岩石、烟雾、老鼠来捣乱,甚至还会出现扛着炸药包的小老鼠,玩家必须战胜它们,才能进入更深的矿坑。 游戏的玩法主要是通过不断采集地下的黄金和钻石,来得到更高的积分。只有完成任务目标,才可以通过相应的关卡。游戏画面中沙滩上的人物便是玩家的角色,下方深褐色的部分是地下,而黄金和钻石就是玩家需要采集的物品。人物右边的四个方框里的物品是游戏中可以使用的道具。 画面中的虚线就是游戏中的探测器...

C语言C++学习俱乐部:765860056 2万+

源代码 用VC编写的小游戏全集 非常强大 全部可以直接运行 强力推荐

用VC编写的小游戏全集 非常强大 全部可以直接运行哦!!! 里面有俄罗斯方块,连连看,拼图,扫雷,贪吃蛇,推箱子等等。 强力推荐……

挖金子工程源代码(C++)

这是挖金子小程序的工程源代码,用C++写的,有用C++编程兴趣的朋友可以下下玩玩,资源真的还不错哦,仅供学习使用,请勿非法用途!!!

C语言经典游戏代码大全(珍藏版)

发现很多朋友都想要一些小项目来练手,却找不到从哪里寻找,给大家整理了游戏项目开发源代码汇总。

C214574728的博客 11万+

黄金矿工游戏Unity项目源码 Gold Miner

概述 : 支持unity3d 2019.3.9或更高 从地上尽可能地收集所有的黄金和宝石。你的时间有限,在此期间,你必须收集尽可能多的黄金和宝石。 这些黄金和宝石是由老鼠携带的,你必须小心地瞄准你的钩子才能抓住并卷起它们。 只是要小心矿工的鼹鼠。 他不喜欢你偷他们的金子,所以如果可以的话他会割断你的绳子! 每当你获得金币或宝石时,你就会获得一些额外的时间,并且随着你的进步,游戏会变得更加困难。 所以,尽你最大的努力去收集尽可能多的金币!

vc++语言小游戏代码

新建vc程序文件方法/步骤: 1,打开VC—新建------工程名称-----Win32 Console Application—确定-------一个空工程----完成-------确定。 2,打开VC—新建----文件名-----c++source file----确定。 3,输入代码----组建----点击编译-----点击组建-----点击执行。 完全正确例题<C++贪吃蛇小游戏> #include<iostream.h> #include<windows.h>

qq_32257509的博客 1961

Vue3结合vue-office实现Word文档上传与预览全流程解析

本文详细解析了如何在Vue3项目中集成vue-office插件实现Word文档上传与预览功能。从项目初始化、插件安装到文件上传处理(包括ArrayBuffer转换)、预览优化及常见问题解决方案,提供了一套完整的实现流程,帮助开发者快速实现高效的文档预览功能。

weixin_29001327的博客 464

Xiaojie雷达之路---毫米波雷达基础知识---中频信号的相位

本篇文章主要介绍毫米波雷达的基础知识中的中频信号的相位 文章目录傅里叶变换的快速回顾中频信号的相位中频信号对物体微小位移的灵敏度如何2个chirps来对一个物体的速度进行测量测量一个振动的物体 傅里叶变换的快速回顾 傅里叶变换是将一个信号从时域中转换到频域中,在时域中的一个正弦信号将在频域中产生一个峰值,在大多数情况下,在频域中的一个信号是一个复数(每个值是一个振幅和相位的向量),表示为AejθAe^{j\theta}Aejθ 在频域中峰值的相位等于正弦函数的初始相位 中频信号的相位 上一篇文章中提到,

XiaoJie的博客 1万+

(国赛B题)沙漠掘金——基于深度优先搜索的沙漠掘金游戏策略求解(下,matlab代码)

1:first_question_1.m clc clear close all global weather global path global maxpath global daypath global maxdaypath global d global max_; maxdaypath=[]; max_=0; d=0; maxpath=[]; path=[]; daypath=[]; weather=[2 2 1 3 1 2 3 1 2 2 3 2 1 2 2 2 3 3 2 2 1 1 2 1

zhulinhao的博客 2579

链路监控pinpoint3.0.3安装部署(2)

本文详细介绍了Pinpoint 3.0.3分布式链路监控系统的安装部署过程。主要内容包括:1)数据库安装(HBase、MySQL、Redis、Pinot)的详细配置步骤;2)中间件Zookeeper和Kafka的安装;3)Pinpoint三大组件的部署:Collector、Web和Batch的配置文件修改和启动脚本。文章特别强调了使用-starter-exec.jar包的重要性,并提供了各组件所需的详细参数配置,包括数据库连接、Zookeeper地址、Kafka配置等关键信息。

zouzou_888的博客 1374

c语言游戏代码(c语言制作小游戏)

用C语言编写的小游戏代码是什么? /*也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++6.0、turbo…………)上都能运行,你还可以进一步改进。这是一个类似贪吃蛇的小游戏。祝你好运*/ /*贪吃蛇*/ #include #include #incl...

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 8877

c语言面试5(希诺麦田)

在 C 语言中,当使用strlen函数计算字符串的长度时,它会返回字符串中字符的实际个数,不包括字符串结束符’\0’。而sizeof(array)返回的是array指针所占用的字节数,通常在 32 位系统上为 4 个字节,在 64 位系统上为 8 个字节。在给定的代码中,array被初始化为"\0\0",其中包含两个转义字符’\0’。当使用strlen函数计算array的长度时,它会遇到第一个’\0’并停止计数,因此返回的长度为 2。12.下面四个选项是四个整数在内存中的存储情况,其中数值最大的一个是。

Pierce110110的博客 1053

4、同轴3 - RRR球面并联机构运动分析与自主移动农业水果采摘机器人设计

本文研究了同轴3-RRR球面并联机构的运动学与速度分析,采用几何与数值方法进行位置分析,并利用螺旋理论简化雅可比矩阵的推导,通过ADAMS仿真验证了结果的准确性。同时提出一种新型自主移动农业水果采摘机器人设计,具备多功能末端执行器、水果软管转移系统和配重式静态稳定性结构,旨在减少采摘损伤、提升效率。文章还探讨了该机构在机器人控制与仿真中的应用潜力,以及采摘机器人在智能化升级与多机协作方面的发展方向。

y4z5a6b7的博客 246

【180626】VC挖金子游戏源代码

一款VC++游戏源码,挖金子全部源程序,很有意思的一款游戏,希望你喜欢。源码下载地址:点击下载备用下载地址:点击下载

资源小站 1771

5.1 rocr-runtime libhsakmt event 机制全景—从 Doorbell 到 Signal

本文介绍了ROCm/KFD中的Event机制架构,主要解决GPU异步计算中的反馈问题。Event机制分为三层:硬件层触发事件,内核层管理事件通知,用户态接收处理。事件类型分为三大类:同步类事件(如SIGNAL、QUEUE_EVENT)用于任务完成通知,异常类事件(如MEMORY、HW_EXCEPTION)报告错误,拓扑类事件(如NODECHANGE)处理设备变更。该机制通过共享内存和中断实现高效通信,避免CPU轮询开销。后续文章将深入内核实现、Thunk层封装和多队列完成检测实战。

图形/计算GPU的驱动与虚拟化技术分享园地 1305

怎样做小游戏挖金子(VC,源码1)

  《挖金子》这个游戏,以前就玩过,网上见到是FLASH做的。FLASH做的游戏,很棒,足以让人对脚本语言刮目相看。最近我用vc做了一个,基本实现了功能。但代码写得粗糙,有几处很笨拙。我还是想贴出来,大家讨论吧。(使用了原游戏的图片资源,纯属学习,无商业用途,特此声明)先看一下完成后的截图:屏幕菜单:游戏主画面:过关后的道具选择画面:失败后的画面:画面很粗糙

programking的快乐生活 4393

将Windbg附加到软件进程上排查异常闪退的问题

使用Windbg和Process Explorer排查因为内存泄漏导致的软件异常闪退问题。

dvlinker的技术专栏 1万+

[QMT量化交易小白入门]-三十七、QMT中如何使用类似于通达信中的VBA函数(量化python代码解析)

这段代码主要围绕着在QMT环境中实现类似通达信VBA函数的功能展开,核心功能是基于RSI指标来判断股票的买卖时机,并根据持仓情况进行相应的交易操作。class G():passg = G()这里定义了一个空类G,并创建了该类的实例g。这个实例g将作为全局变量来存储一些在整个程序运行过程中需要共享的数据,例如除复权类型、股票代码、目标数量等。1、使用VBA开发策略时,参数固化的问题会带来一些限制,比如无法修改MA函数的周期参数,只能使用固定周期。

木头大左的博客 1693
上一篇: 怎样做小游戏挖金子(VC,源码4)
下一篇: 带秘笈的纸牌源码
programking
博客等级 码龄23年 450粉丝 140原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值