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

本游戏用到了图形界面库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,15,0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以提供一个简单的示例游戏,名为“飞机大战”。这是一个基于easyX库的2D游戏,玩家需要操纵一个飞机躲避敌机和子弹,并且尽可能地击败敌人。 首先,需要安装easyX库并配置好编译器。可以在easyX官网下载安装包,并根据安装指南完成安装和配置。 然后,我们可以开始编写游戏代码。首先,需要定义一些常量和变量: ```c++ #include <graphics.h> #include <conio.h> #include <time.h> #define WIDTH 512 #define HEIGHT 768 #define ENEMY_NUM 5 #define BULLET_NUM 20 IMAGE bgImg; IMAGE player; IMAGE enemy; IMAGE bullet; int playerX, playerY; int enemyX[ENEMY_NUM], enemyY[ENEMY_NUM]; int bulletX[BULLET_NUM], bulletY[BULLET_NUM]; int bulletSpeed = 10; int enemySpeed = 5; bool isFire[BULLET_NUM]; bool isGameOver = false; ``` 这里定义了窗口大小、敌机和子弹数量、图片资源、玩家、敌机、子弹位置和速度等变量。 接下来,需要实现一些函数来加载图片和初始化游戏: ```c++ void loadImages() { loadimage(&bgImg, _T("bg.jpg"), WIDTH, HEIGHT); loadimage(&player, _T("player.png"), 80, 80); loadimage(&enemy, _T("enemy.png"), 80, 80); loadimage(&bullet, _T("bullet.png"), 20, 40); } void initGame() { playerX = WIDTH / 2 - 40; playerY = HEIGHT - 100; for(int i = 0; i < ENEMY_NUM; i++) { enemyX[i] = rand() % (WIDTH - 80); enemyY[i] = rand() % (HEIGHT / 2) - HEIGHT / 2; } for(int i = 0; i < BULLET_NUM; i++) { isFire[i] = false; } } ``` 这里的loadImages函数用来加载游戏资源,initGame函数用来初始化游戏。 然后,需要实现游戏循环,在循环中不断更新游戏状态和绘制游戏画面: ```c++ void gameLoop() { while(!isGameOver) { cleardevice(); putimage(0, 0, &bgImg); // 绘制玩家 putimage(playerX, playerY, &player); // 绘制敌机 for(int i = 0; i < ENEMY_NUM; i++) { putimage(enemyX[i], enemyY[i], &enemy); enemyY[i] += enemySpeed; if(enemyY[i] > HEIGHT) { enemyX[i] = rand() % (WIDTH - 80); enemyY[i] = rand() % (HEIGHT / 2) - HEIGHT / 2; } } // 发射子弹 if(_kbhit() && _getch() == ' ') { for(int i = 0; i < BULLET_NUM; i++) { if(!isFire[i]) { bulletX[i] = playerX + 30; bulletY[i] = playerY - 10; isFire[i] = true; break; } } } // 绘制子弹 for(int i = 0; i < BULLET_NUM; i++) { if(isFire[i]) { putimage(bulletX[i], bulletY[i], &bullet); bulletY[i] -= bulletSpeed; if(bulletY[i] < 0) { isFire[i] = false; } } } // 碰撞检测 for(int i = 0; i < ENEMY_NUM; i++) { for(int j = 0; j < BULLET_NUM; j++) { if(isFire[j] && bulletX[j] > enemyX[i] && bulletX[j] < enemyX[i] + 80 && bulletY[j] > enemyY[i] && bulletY[j] < enemyY[i] + 80) { isFire[j] = false; enemyX[i] = rand() % (WIDTH - 80); enemyY[i] = rand() % (HEIGHT / 2) - HEIGHT / 2; } if(playerX > enemyX[i] - 40 && playerX < enemyX[i] + 80 && playerY > enemyY[i] - 40 && playerY < enemyY[i] + 80) { isGameOver = true; } } } // 更新窗口 Sleep(30); flushbatch(); } // 游戏结束 setbkmode(TRANSPARENT); settextcolor(WHITE); settextstyle(50, 0, _T("微软雅黑")); outtextxy(WIDTH / 2 - 150, HEIGHT / 2 - 25, _T("游戏结束")); getch(); } ``` 这里的gameLoop函数用来执行游戏循环,不断更新游戏状态和绘制游戏画面。在循环中,先清空窗口,绘制背景和玩家、敌机、子弹等图像,然后根据用户输入发射子弹,检测碰撞事件,更新游戏状态和窗口,并在游戏结束时显示游戏结束界面。 最后,在主函数中调用这些函数即可开始游戏: ```c++ int main() { initgraph(WIDTH, HEIGHT); srand(time(NULL)); loadImages(); initGame(); gameLoop(); closegraph(); return 0; } ``` 这个小游戏是一个简单的示例,可以根据需要进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值