基于VS C++贪吃蛇游戏(附源码,VS编译就能运行)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值