Rogue游戏(四)——药品、楼梯、升级

本文介绍了如何在Rogue游戏中实现药品使用、怪物击杀升级以及上下楼层的功能,通过这些机制增强了游戏的可玩性和挑战性。
摘要由CSDN通过智能技术生成

增加了药品和杀怪升级的机制,同时,上下楼层是rogue游戏不可缺少的要素。

Makefile

objects = main.o makemap.o
rogue:$(objects)
	g++ $(objects) -o rogue -lncurses

makemap.o:makemap.cpp
	g++ -c makemap.cpp

main.o:main.cpp
	g++ -c main.cpp 

clean:
	rm -rf *.o rogue

main.cpp

#include <curses.h>
#define EMPTY 0
#define ME 1
	#define ME_ATK 10
	#define ME_DEF 15
	#define ME_HP 100
	#define LEVEL_EXP 300 
	#define ATK_UP 5 
	#define DEF_UP 2
#define WALL 2
#define IN 4
#define OUT 5
#define MEDICINE 8
	#define MED_HP 20
#define MONSTER_A 3
	#define A_ATK 20 
	#define A_DEF 2
	#define A_HP 20
	#define A_EXP 20
#define MONSTER_B 6
	#define B_ATK 20
	#define B_DEF 5
	#define B_HP 60
	#define B_EXP 25
#define MONSTER_C 7
	#define C_ATK 30
	#define C_DEF 5
	#define C_HP 70
	#define C_EXP 30 
#define LEGEND "\
 <.>--<floor>\n\
 <#>--<wall>\n\
 <@>--<yourself>\n\
 <+>--<medicine>\n\
 <(>--<upstairs>\n\
 <)>--<downstairs>\n\
 <A><B><C>--<monster>\
"
#define INSTRUCTION mvprintw(1, 1, "My Rogue\n a/<left> w/<up> s/<down> d/<right> q/<exit> r/<restart>");\
					mvprintw(offset_y+m_h+1, 0, LEGEND);\
					box(stdscr, '|', '-');
#include <stdlib.h>
static char symbol[] = {'.', '@', '#', 'A', '(', ')', 'B', 'C', '+'};
static const int m_w = 50;
static const int m_h = 22;
static const int offset_x = 5;
static const int offset_y = 3;
static int **map;
int ** all_maps[100];
bool ** visited_maps[100];
int floor;
int reached_floor;
void MakeMap(int _w, int _h, int **_map, bool **_visited);
void drawMap()
{
	for (int i = 0;i < m_w;++i)
		for (int j = 0;j < m_h;++j)
			if (visited_maps[floor-1][j][i] || i == 0 || j == 0 || i == m_w-1 || j == m_h-1)
				mvaddch(j + offset_y, i + offset_x, symbol[map[j][i]]);
}
void MakeFloor()
{
	all_maps[floor] = new int*[m_h];
	for (int i = 0;i < m_h;++i)
		all_maps[floor][i] = new int[m_w];
	visited_maps[floor] = new bool*[m_h];
	for (int i = 0;i < m_h;++i)
		visited_maps[floor][i] = new bool[m_w];
	MakeMap(m_w, m_h, all_maps[floor], visited_maps[floor]);
	map = all_maps[floo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值