黄金矿工—小游戏

本文介绍了使用easy-x图形库制作黄金矿工小游戏的思路和代码实现。游戏关键包括钩子的转动、伸缩以及物品的抓取。钩子转动通过角度变化控制,伸缩则依据空格键进行,而物品抓取依赖于判断钩子结尾坐标是否在物品周围。详细代码在文中阐述。
摘要由CSDN通过智能技术生成

黄金矿工(使用easy-x图形库制作)

一、游戏思路

游戏的核心是如何让钩子动起来、怎么伸缩、怎么抓物品3个部分。

1.钩子的转动

钩子的转动可以根据角度的变化来决定,我们让起始坐标不变,让钩子的结尾坐标变化,在限定角度的范围即可,求结尾坐标思路过程如下,实现代码在后面

在这里插入图片描述

2.钩子的伸缩

钩子的伸缩:分为两部分:伸和缩。当接收到空格时,伸长,遇到边界与物品时要缩回来。
不管伸长还是缩短都与钩子的结尾坐标有关(反正钩子的起始坐标不会变),当按下空格时,要以一定的速度去伸长或者缩回,要注意,当钩子伸长与缩短时,角度要保持不变,所以要设置钩子的状态。实现代码在后面
在这里插入图片描述

3.物品的抓取

抓取是要判断钩子的结尾坐标有没有,在物品坐标的指定范围内,当在该范围时,将物品坐标跟着钩子的结尾坐标走(即物品坐标等于钩子的结尾坐标)。
在这里插入图片描述

在这里插入图片描述

二、游戏代码

头文件

#pragma once
#define Stuff_Max 8  //物品数量
#define PI 3.1426926
#include <stdio.h>
#include <graphics.h>
#include <stdlib.h>
#include <cmath>
#include <time.h>
IMAGE img[12];       //定义12张图片
using namespace std;
enum state
{
   
	extend,//伸长
	shorten,//缩短
	nomal,//正常
	left,//左
	right,//右
};
typedef struct _Role//角色
{
   
	int x;//位置
	int y;
	int width;//角色宽度
	int height;//角色高度
	byte w :1;//角色上,下控制
}Role;
typedef struct _Hook//钩子
{
   
	double x;//钩子开始坐标
	double y;
	double enx;//钩子结束坐标
	double endy;
	double angle;//钩子转动角度
	double vx;   //速度分量(伸长是以什么速度增长)
	double vy;
	int state;//状态
	int dir;//方向
	double len;//钩子长度
	int index;//抓到物品号数
}Hook;
typedef struct _Stuff//物品
{
   
	int size;      //物品大小
	double place_x;//位置指标
	double plaxe_y;
	int type;      //类型
	bool exsit;	   //是否存在
	int worth;     //物品价值
}stf;
Role* role = (Role*)calloc(1, sizeof(Role));//创建角色
Hook* hook = (Hook*)calloc(1, sizeof(Hook));//创建钩子
stf stuf[Stuff_Max];//创建物品
int score = 0;//统计分数
void init_IMAGE();//加载图片
void chartlet();//贴图
void init_role();//角色初始化
void init_stste();//钩子初始化
void swing(double angle);//钩子的摆动
void flex(double speed);//钩子的伸缩
void grab();//抓取物品的判断

main函数

#include "GoldMiner.h"


void init_IMAGE()//加载图片
{
   
	for (int i = 0; i < 10; i++)
	{
   
		char str[1020] = "";
		sprintf_s(str, "./%d.jpg", i);
		loadimage(img+i,str
  • 12
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值