CC++游戏开发(easyx框架)回合制——魔塔

本文介绍了如何利用C++及EasyX图形库开发一款回合制魔塔游戏。游戏开发涉及玩家和怪物属性定义、资源图片加载、地图设置、角色信息显示、人物移动和战斗逻辑实现,包括钥匙、门、药水、水晶和楼梯的交互,以及与怪物的战斗计算。开发者需设置地图、处理移动和战斗事件,并进行条件判断以确保游戏流程的正确性。
摘要由CSDN通过智能技术生成

本游戏用到了图形界面库graphics.h,图形界面库下载安装:
下载链接:https://easyx.cn/download
游戏截图:
请添加图片描述
首先是玩家的定义,使用结构体,这个名字是可以自己改变的

struct gamerole{
	char name[20]; //玩家名字
	int HP;   //血量
	int MP;		//魔法
	int DEF;    //防御
	int ATT;  //攻击
	int Lv;   //等级
	int Exp;  //经验
	int Num_Blue_Key; //蓝钥匙数量
	int Num_Yellow_Key; //黄钥匙数量
	int x, y;	//坐标
}player;
int exp_need = 100;	//升级所需经验

怪物属性的定义

struct monster{
	char name[20];	//怪物名字
	int HP;   //血量
	int ATT;  //攻击
	int DEF;  //防御
	int Exp;  //经验
}monsters[15];

初始化玩家属性

void initPlayer(){
	//输入用户名
	printf("Input role name: ");
	scanf("%s", player.name);

	//初始化游戏角色信息
	player.Lv = 0;
	player.ATT = 50;
	player.DEF = 50;
	player.Num_Blue_Key = 0;
	player.Num_Yellow_Key = 0;
	player.HP = 500;
	player.MP = 250;
	player.Exp = 0;
	player.x = -1;
	player.y = -1;
}

初始化怪物属性

void initMonsters() {
	monsters[2] = { "绿史莱姆", 50, 10, 12, 100 };  //绿史莱姆属性
	monsters[3] = { "红史莱姆", 100, 50, 12, 500 }; //红史莱姆属性
	monsters[11] = { "小蝙蝠", 20, 10, 9, 50 };     //小蝙蝠属性
	monsters[12] = { "小巫师", 100, 30, 9, 400 };//小巫师属性
	monsters[13] = { "小骷髅", 30, 20, 10, 200 };  //小骷髅属性
	monsters[14] = { "大骷髅", 60, 50, 25, 300 };   //大骷髅属性
}

加载游戏资源图片
右键打开项目属性,添加 -> 现有项,添加资源图片进项目·。
资源图片链接:https://pan.baidu.com/s/1NZN7yDFAzBbHDHrxBiWEJApwd=c685
提取码:c685
在这里插入图片描述

IMAGE img[19], playerInfoBox;	//素材图片
void initgamePicture(){
	//加载游戏角色信息框
	loadimage(&playerInfoBox, "info.jpg");

	//加载地图资源
	//60 * 60 固定尺寸
	loadimage(&img[0], "墙.jpg", 60, 60);
	loadimage(&img[1], "地板.jpg", 60, 60);
	loadimage(&img[2], "绿史莱姆.jpg", 60, 60);
	loadimage(&img[3], "红史莱姆.jpg", 60, 60);
	loadimage(&img[4], "蓝水晶.jpg", 60, 60);
	loadimage(&img[5], "红水晶.jpg", 60, 60);
	loadimage(&img[6], "蓝钥匙.jpg", 60, 60);
	loadimage(&img[7], "黄钥匙.jpg", 60, 60);
	loadimage(&img[8], "小红药水.jpg", 60, 60);
	loadimage(&img[9], "小蓝药水.jpg", 60, 60);
	loadimage(&img[10], "梯子.jpg", 60, 60);
	loadimage(&img[11], "小蝙蝠.jpg", 60, 60);
	loadimage(&img[12], "小巫师.jpg", 60, 60);
	loadimage(&img[13], "骷髅兵.jpg", 60, 60);
	loadimage(&img[14], "大骷髅兵.jpg", 60, 60);
	loadimage(&img[15], "蓝门.jpg", 60, 60);
	loadimage(&img[16], "黄门.jpg", 60, 60);
	loadimage(&img[17], "人.jpg", 60, 60);
}

设置地图,用数字来决定地图的每一个方块是什么类型(与img数组的索引对应)。

int map[13][13] = {
	0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,10,6,2,3,2,1,1,1,1,1,1,0,
	0,0,0,0,0,0,0,0,0,0,0,1,0,
	0,8,1,1,15,1,0,0,1,1,1,1,0,
	0,1,14,1,0,1,0,0,5,0,0,1,0,
	0,0,15,0,0,1,15,11,12,11,0,1,0,
	0,6,1,1,0,1,0,0,0,0,0,1,0,
	0,1,14,1,0,1,0,0,0,0,0,1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值