黄金矿工(使用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