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

C语言/C++项目——黄金矿工 C语言/C++项目源码分享——黄金矿工 这里是一个C语言/C++项目黄金矿工的源码。 这个源码还有待完善,希望大家共同改进。 编译软件:VS2013 游戏的初始界面是这样子的 在这里我并没有写开始游戏的界面,大家可以自己加上去。 在没有抓取的条件下,钩子按照一个固定的速度左右摆动,想要抓取金子,石块或者随机奖励按空格键抓取,如果钩子碰到黄金,则钩子与金子一同回拉,金子在拉取到转轴处消失,地图上的金子减少一个。 下面是项目源码,做的不完整,欢迎大家指正。 #include<stdio.h> #in 阅读详情

 有人下载我的工程文件,“我很欣慰”,名字是“挖金子VC版源码”,大家多讨论。

上回讲哪了?地图加载了,物品能显示了。该显示画面上方摆动的叉子了。计算机图形学的“图形旋转”,当然,有一个WINDOWS API函数PlgBlt,可我没有用。网上有很多介绍图形旋转的文章,我还是讲解一下我这个函数:

void GAMECATCH::TcDrawAngleOff(HDC hdc,int *pv,float a,int num,int x0,int y0)
{
    
int pvdest[20]={0};
//    int x0,y0;
    int i;
    
int tempx,tempy;
    
    memcpy(pvdest,pv,
sizeof(int)*num);
/*
    x0=pv[0];
    y0=pv[1];

    //move
    for(i=0;i<num;i+=2)
    {
        pvdest[i]-=x0;
        pvdest[i+1]-=y0;
    }
*/
    
//rotate
    for(i=0;i<num;i+=2)
    {
        tempx
=pvdest[i];
        tempy
=pvdest[i+1];
        pvdest[i]
=tempx*cos(a)-tempy*sin(a);
        pvdest[i
+1]=tempx*sin(a)+tempy*cos(a);
    }

    
//move,中心点坐标是320 58
    for(i=0;i<num;i+=2)
    {
        pvdest[i]
+=x0;
        pvdest[i
+1]+=y0;
    }

    
//绘制图形
    Draw(hdc,pvdest);
}

为什么我没有删除注释掉的代码?有原因。一个图形绕(x0,y0)旋转,总共分三步(耳熟):图形移动到坐标原点,旋转,再移动回原有位置。而我这个叉子的图形在哪里?就在原点。所以省略了第一步。叉子的图形,是画了几个线段,各端点坐标如下(x1,y1,x2,y2,...):

 //设置爪子各顶点坐标
 int temp[12]={
 0,32,20,32,
 40,0,64,0,
 64,64,40,64
 };

再解释一下公式:

      pvdest[i]=tempx*cos(a)-tempy*sin(a);
        pvdest[i
+1]=tempx*sin(a)+tempy*cos(a);
屏幕坐标轴x向右,y向下,这个公式将逆时针旋转图形。

有一个问题,为什么不用一个位图?位图的显示效果虽然好,但是计算cos,sin时,会产生误差。这将使图像有一些变形,所以没有用位图。

绘制、摆动的问题解决了。下面是伸缩。

叉子的伸缩

关键是使用“状态机”。三种状态:摆动,伸出,拉回。我没有定义宏,应该批评。用0 1 2 表示的。

再次声明软件的“可维护性”,这种状态设置,也许琐碎,但有好处。

摆动状态:修改当前角度,当前摆动方向;

伸出状态:改变坐标,如果达到伸出的最大长度,则状态迁移:拉回;

拉回状态:改变坐标,如果“伸出长度”降为0,则状态迁移:摆动。

为了消除坐标计算的误差,伸出时,直接将坐标偏移值转为整型存储,如下:

   xoff=10*cos(iAngle*10*1.57/90);
   yoff=10*sin(iAngle*10*1.57/90);
拉回的时候,也用相同的偏移值,只要再乘以一个系数,就实现了拉回的快慢不同。

按键检测

用户按“下”,叉子伸出。用按键消息来检测,代码为:

        case WM_KEYDOWN:
            
switch(iGameState)
            {
            
case GAME_STATE_MAIN:
                gamecatch.KeyProc(wParam);
void GAMECATCH::KeyProc(int iKey)
{
    
switch(iKey)
    {
    
case VK_DOWN:
        
if(0==iState)
        {
            
//摆动状态下才能变成伸出状态
            iState=1;
            xoff
=10*cos(iAngle*10*1.57/90);
            yoff
=10*sin(iAngle*10*1.57/90);
        }
        
break;

目前,叉子能正常摆动,用户按“下”,叉子伸出,然后拉回。紧接着就是核心问题“抓到物品”,即“检测碰撞”,下回接着说。欢迎参考原工程“挖金子VC版源码”(在优快云下载频道)。

C语言项目实战:《黄金矿工》零基础项目,180 行源代码示例 这篇文章主要为大家详细介绍了C语言实现——《黄金矿工项目》,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下! 游戏介绍: 在规定的时间内得到规定的金钱时即可。玩法非常简单,按“↓”键开使捞金子,如有炸弹,按“↑”键放炸弹,买东西点鼠标左键。不过本游戏之设计到钩子勾金子的程度,后面的关卡大家可以自行设计,相信能够设计金子了,钻石的话同理还是非常简单的。 本项目编译环境:VS2019/VS2013; 插件:图形库插件easyX,涉及图片素材可以自行百度找也可以关注文末领 阅读详情

相关推荐

C/C++ 黄金采矿游戏项目

在游戏开始时,玩家将扮演一名勇敢的黄金矿工。游戏界面由一个地下矿场组成,其中分布着不同种类的石头和黄金矿石。游戏的目标是尽可能多地收集黄金,同时避免被石头砸中。黄金采矿游戏是一款经典的休闲游戏,玩家需要控制一个角色在地下挖掘金矿并收集尽可能多的黄金。本文将介绍一个使用C/C++语言实现的黄金采矿游戏项目。这个示例项目只是一个简单的黄金采矿游戏的实现,你可以根据自己的需求进一步扩展和优化游戏功能,比如增加难度级别、添加敌人或道具等。函数中,通过循环不断更新游戏状态并绘制界面,直到玩家退出游戏。

TechWhizZ的博客 467

黄金矿工(小游戏)-----------C语言+easyx实现

啥也不说,上代码。 头文件: #include <stdio.h> #include <easyx.h> #include "tools.hpp" //实现easyx透明贴图的 头文件 #include <math.h> #include <stdlib.h> #include <time.h> #include <mmsystem.h> #pragma comment(lib,"winmm.lib") 钩子部分: ..

Bloom的博客 1万+

黄金矿工 小游戏编程 实例

黄金矿工 小游戏编程 实例 swf黄金矿工 小游戏编程 实例 swf

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

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

programking的快乐生活 3571

挖金矿游戏源码(c++)

(c++源码)中文版的黄金矿工小游戏,让你对每种道具的作用更加了解。操作方法:方向键↓放出钩子。每一关必须达到规定的金额才能进入下一关

黄金矿工C语言

// 以下变量只需要初始化一次 static int iInitedHookPos = 0; if( 0 == iInitedHookPos ) { iInitedHookPos = 1; // 钩子初始位置值初始化 g_fHookStartPosX = dGetSpritePositionX( "GoldHook" ); g_fHookStartPosY = dGetSpritePositionY( "GoldHook" ); // 金子可以出现的边界范围初始化 g_iGoldBornMinX = dGetWorldLeft() + 5; g_iGoldBornMaxX = dGetWorldRight() - 5; g_iGoldBornMinY = dGetWorldTop() + 20; g_iGoldBornMaxY = dGetWorldBottom() - 5; }

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

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

programking的快乐生活 4393

黄金矿工funcode源代码

FUNCODE黄金矿工的源代码。 #include "CommonAPI.h" #include "LessonX.h" #include float g_fScreenLeft = 0.f; // 屏幕左边界值 float g_fScreenRight = 0.f; // 右 float g_fScreenTop = 0.f; // 上 float g_fScreenBottom = 0.f; // 下 float g_fSpeedLeft = 0.f; // 左方向速度 float g_fSpeedRight = 0.f; // 右 float g_fSpeedTop = 0.f; // 上 float g_fSpeedBottom = 0.f; // 下

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

今天的程序讲课,开始。 前面几讲,涉及程序框架、地图文件、叉子的摆动、旋转拉伸,这几方面都可以归纳为基本数据处理,今天讲“交互”,很简单,判断叉子抓到物品,当拉回后,增加金钱数量。核心是碰撞检测。网上的这个游戏是FLASH作的,FLASH的碰撞检测就一个函数,即可实现各式各样的图形检测。VC中,就用自己动手。最初的想法,是把叉子看成一个圆形,各种矿石也看成圆形,做两个圆形的检测,只要检测圆

programking的快乐生活 3435

黄金矿工游戏源码(c++)

今后上传的资源都会免费提供下载,包括我开发的demo项目和游戏素材,技术体会都将上传。

计组实验5:cache大小测量与 cache line 大小测量

前言 今天做了实验5,通过 c 语言测 cache 参数。其实按理来说挺简单的,只是我们班没给代码,纯靠自己。听说别的班有给代码 emm 因为《深入理解计算机系统》这本书上面给的代码是 Linux 平台下的,而且需要一个 fcyc2 头文件,可以在 https://github.com/fabiensanglard/CpuCacheMountainViewer 这里找到。 ⚠ 我没有在 Linux 下试过课本上面的代码。。。 我是在 win10 下测试的。。。 所以 。。。 我并不确定我的代码是否正确。

AKGWSB 's blog 1万+

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

先别急着看源码,首先要解决的问题是程序框架。VC只是一个开发环境,支持的是C++。Windows下的程序,当然是用Windows API(Application Programming Interface)写成的。 VC提供了一个类库MFC,如同课本中介绍的一样,“点几下鼠标即可生成一个程序”。控件靠拖动即可生成。很方便,但也是最大的缺陷。隐藏了太多东西。我的电脑中VC的一个链接库有点问题,无

programking的快乐生活 3675

VMFS数据存储(datastore)丢失后恢复步骤

vmfs datastore恢复步骤

jetliu05的博客 3267

挖金矿问题java课程设计_Win32 挖金矿游戏源代码

【实例简介】Win32,游戏编程,很值得学习,对学习Win32消息机制很有帮助【实例截图】【核心代码】挖金子源工程└── 挖金子源工程├── Debug│ └── ini│ └── match.txt├── ReadMe.txt├── StdAfx.cpp├── StdAfx.h├── VC 驿站.txt├── VC 驿站.url├── bitmap1.bmp├── bitmapt...

weixin_42352351的博客 197

一文入门BMS(电池管理系统)

本文章是基于曾师兄的文稿《具有组网扩展功能的新能源汽车电池管理系统》而写的文章。该文章主要是对BMS(Battery Management System,电池管理系统)做一些简要的介绍,借此助各位也助我入门BMS。有纰漏请指出,转载请说明。学习交流请发邮件 1280253714@qq.com。

weixin_45817947的博客 2万+

推免保研夏令营/预推免面试记录—北航网安

链接:https://pan.baidu.com/s/1vkP3EzbVrCc8a7wgQuUZgQ?链接:https://pan.baidu.com/s/1n4EFS2c9WLAfQn91CP4j2g?链接:https://pan.baidu.com/s/1VVNNSfcNDWjXhVhH3MtNjA?上面五个比例基本为:1:5:2:1:1。面试时间:当天上午面试,但是没面完,下午吃了饭之后又继续面试。--来自百度网盘超级会员V5的分享。--来自百度网盘超级会员V5的分享。

admin的博客 3011

c++自制游戏(优化)

cout << "******************0、退出************************" << endl;cout << "******************1、电脑VS玩家******************" << endl;cout << "******************2、玩家VS玩家******************" << endl;

月光下的魔术师 928

计算分子相似度(摩根分子指纹计算)

import numpy as np import pandas as pd import seaborn as sns import matplotlib as plt from rdkit.Chem import Draw from rdkit.Chem import AllChem as Chem from rdkit.Chem import PandasTools from rdkit import DataStructs data = pd.read_csv(r'47_covidLead.csv'

weixin_39417324的博客 1387

c++自制小游戏(不完美)

我做的一个挖矿小游戏,后面会改进一些读入与输出,有建议的话记得评论区留言。 上代码: #include <bits/stdc++.h> using namespace std; struct block{ int type,hard; }; int xx=7,yy=0,hunger=100,money=0,strong=1; int price[100]={1,5,8,8,10,12,30,60,100,170,130,170,300,180,220,400,20}; int bpr...

weixin_60733069的博客 6273

WPF实现圆形菜单动态展开折叠效果

实现效果如下: 思路:根据子菜单个数计算旋转角度动态生成子菜单,并设置展开折叠动画。 步骤: 1、自定义按钮MyButton,建立展示图像属性DisplayImage public class MyButton : Button { public static readonly DependencyProperty DisplayImageProperty = DependencyProperty.Register("DisplayImage", typeof(

dnazhd的博客 3149

编写一个程序实现顺序表的各种基本运算(假设顺序表的元数基本类型为Char)

/* *Copyright (c) 2016, 烟台大学计算机学院 *All rights reserved. *文件名称:main.cpp *作者:张旺华 *完成日期: 2016 年 7 月 1 日 *版本号:v1.0 *问题描述:编写一个程序实现顺序表的各种基本运算(假设顺序表的元数基本类型为Char) * */ #include #include #include

张旺华的博客 1万+

C语言实现基于easyx的(低配版)黄金矿工游戏

C语言实现基于EasyX图形库的(低配)黄金矿工游戏

yyl1025的博客 2650

通过Power Platform自定义D365 CE 业务需求 - 4. 使用Power Automate

Power Automate构建块Power Automate中的连接器流的类型和用途流中的动态值和表达式使用变量、循环和条件在Power Automate中处理审批业务场景、用例和实现Power Virtual Agent的概念Power Virtual Agent的构建块配置Power Virtual Agent示例在公共网站/门户中部署Power Virtual Agent业务场景、用例和实现。

Martin-Mei的博客 558

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

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

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

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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

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

资源小站 1771

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值