简易参考这个视频:听一遍就懂:
https://www.bilibili.com/video/BV1SB4y1u7gp?t=1185
需要用到easyx库,文档:
https://docs.easyx.cn/zh-cn/intro
大致能实现:生成豆子,躲避敌人,计分(有一点问题)
我自己加上了豆子和吃豆子的部分:
豆子很简单,随机生成就行,吃豆子要看边界条件
代码比较长,没有分流到其他头文件
环境:visual studio 2019
注意看 项目 -> 属性:有几个地方要调:注意平台是win32
1.使用多字节字符集
2.C/C++里面 SDL检查设置为否
应该就这些了,其他没问题
图片自己找
写了更详细的文档,有需要的私信
#include <stdio.h>
#include <easyx.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
#include <graphics.h>
/*****************************定义*********************************************/
//定义数据
#define WIDTH 960
#define HEIGHT 630 //初始化窗口
#define ENEMY_NUM 4 //敌人数量
#define BEAN_NUM 15 //豆子数量
#define R 10
int price = 0; //初始化得分
int end=2; //结束方式:0成功,1失败, 2正常
IMAGE mapImg; //定义背景图片
unsigned long tt1, tt2;
//定义玩家
struct Player
{
int x, y;
int dirx, diry; //玩家的方向
IMAGE player_photo; //玩家图片
unsigned long t1, t2, dt; //dt=t2-t1
};
//玩家
Player player;
//定义怪兽
Player enemy[ENEMY_NUM];
//定义豆子
struct bean
{
int x,y,r;
bool exist; //豆子是否存在
};
bean beans[BEAN_NUM]; //定义豆子数量
/********************************初始化数据界面******************************************/
void GameInit()
{
srand(time(0));
//初始化游戏窗口:宽度和高度
initgraph(WIDTH, HEIGHT);
//初始化游戏界面,欢迎界面
while (!_kbhit())
{
settextcolor(RED);
settextstyle(50, 30, _T("宋体"));
outtextxy(130, 50, "欢迎来到吃豆人小游戏!");
settextstyle(40, 20, _T("楷体"));
outtextxy(400, 130, "游戏规则");
settextcolor(GREEN);
settextstyle(40, 20, _T("楷体"));
outtextxy(300, 200, "1.请吃完所有的豆子");
outtextxy(300, 270, "2.请躲避红色的敌人");
outtextxy(260, 340, "3.上下左右键控制吃豆人移动");
outtextxy(300, 410, "4.按空格键暂停游戏");
int a = 255;
while (!_kbhit())
{
settextstyle(30, 15, _T("宋体"));
settextcolor(RGB(a, 0, 255));
outtextxy(270, 500, "请按除空格外的任意键开始游戏");
Sleep(41);
a -= 5;
if (a == 0)
a = 255;
}
}
//初始化背景图片
loadimage(&mapImg, "map.jpg");
putimage(0, 0, &mapImg);
//初始化玩家
player.x=400; //初始化玩家的位置
player.y=300;
player.dirx=1;
player.diry=0;
loadimage(&player.player_photo,"man.PNG&#