1、安装EasyX
EasyX官网:https://easyx.cn/
EasyX学习文档:https://docs.easyx.cn/zh-cn/intro
安装很简单,下载安装,会直接显示对应的VS版本,进行安装就好了。
2、代码位置
我已经将代码上传到GitHub上了,有需要的可以直接拉下来,目前上面有所有的代码信息,后面我可能会把工程文件啥的删掉,只留下代码。
链接:https://github.com/lml123-1/GreedySnake
3、看一下运行效果
1、主界面
效果很差,如果想改的小伙伴可以将样式改掉,图片位置,工程里面都有。
第一个按键进入游戏,最后一个退出,中间的没设置。
2、游戏界面
所有数据代码中都非常容易找到,因为不是很复杂。颜色可以换成任意自己想要的。附上颜色表链接:https://www.sojson.com/rgb.html
3、游戏运行
三、部分代码
代码量在四百行,我只贴了一部分,链接里面有完整版。
//snake.h
#pragma once
#include <iostream>
#include <graphics.h>
#include <conio.h>
#include <string>
#include <vector>
#ifndef US
#define US unsigned short
#endif
#define VEC std::vector
#define INITCLASS(classname) \
private:\
classname();\
~classname();\
public:\
static classname &GetInstance();
#define MYSNAKEINFO(classname) \
classname &classname::GetInstance()\
{\
static classname snakeInfo; \
return snakeInfo;\
}
#define GETMYSNAKEINFO(classname) classname::GetInstance()
enum DIRECTION
{
UPDIREXTION = 0,
LEFTDIRECTION,
DOWNDIRECTION,
RIGHTDIRECTION,
NONEDIRECTION
};
struct lattice
{
US x;
US y;
};
class gSnake
{
public:
INITCLASS(gSnake)
public:
void SnakeInit();
void SnakeRun();
private:
void LeftButtonDown();
void GameInit();
void SnakeGameInit();
void ProduceFood(); //产生食物
void ShowHead(DIRECTION dt, US flag = 0);
void SnakePosition();
bool SnakeRunDirection(DIRECTION dt);
void GameRun();
bool SnakeRunOne(DIRECTION dt);
bool SnakeIsDeath();
IMAGE &GetImag(std::string strImage);
private:
bool m_bGameFlag; //游戏开始标志
DIRECTION m_Dtion; //蛇头方向
US m_usFFlag; //食物标志
struct lattice m_snakeEnd; //蛇尾部数据
struct ExMessage m_message; //鼠标键盘消息
VEC<struct lattice> m_vecLattice; //所有格子数据
VEC<struct lattice> m_vecSnakeLa; //蛇身坐标数据
};
#define _MYSNAKEINFO GETMYSNAKEINFO(gSnake)
//snake.c
#define WIDTH (640) //x
#define HEIGHT (480) //y
#define BIGWID (50)
#define START_X (BIGWID+10)
#define START_Y (BIGWID+10)
#define HISTORY_X (BIGWID+10)
#define HISTORY_Y (START_Y+((HEIGHT - 2 * BIGWID - 40) / 3)+10)
#define GOVER_X (BIGWID+10)
#define GOVER_Y (HISTORY_Y+((HEIGHT - 2 * BIGWID - 40) / 3)+10)
#define RDOWN _MYSNAKEINFO.GetImag("../Image/down.jpg")
#define RLEFT _MYSNAKEINFO.GetImag("../Image/left.jpg")
#define RRIGHT _MYSNAKEINFO.GetImag("../Image/right.jpg")
#define RUP _MYSNAKEINFO.GetImag("../Image/up.jpg")
#define RSNAKE _MYSNAKEINFO.GetImag("../Image/snake.png")
#define RFOOD _MYSNAKEINFO.GetImag("../Image/food.png")
#define KEYDOWN 0x28
#define KEYLEFT 0x25
#define KEYRIGHT 0x27
#define KEYUP 0x26