问题标题: 新游戏:无限世界完成!!!

1
0
已解决
薛乘志
薛乘志
初级启示者
初级启示者

我的计划:

0. 类似XACRAFT(早着呢)

1. 自定义mod支持(快完成了)

2. 无限世界(还没做)

请问各位有什么想要的功能呢?

薛乘志在2022-04-16 14:09:10追加了内容

对了,这是现在的GUCRAFT功能代码,如下:

(其实它本身就是一个mod)

#include "../../GUCRAFT.cpp"

gc_api_start;

gc_api void reg_blocks(game::game_type* tgame) {
	tgame->reg_block("bedrock", "屮", 15, 0);
	tgame->reg_block("air", "  ", 15, 15).can_through = true;
	tgame->reg_block("dirt", "  ", 6, 6);
	tgame->reg_block("stone", "  ", 8, 8);
	tgame->reg_block("grass_block", "  ", 10, 10);
}

gc_api void gen_main(game::game_type* tgame, game::game_type::world_type* world) {
	std::map<std::string, game::game_type::block_type> bl = tgame->get_block_list();
	std::map<int, std::map<int, game::game_type::block_type> >& wd = world->blocks;
	u_int seed = world->seed;
	u_int grass_high = rand() % 30 + 61;
	for (int i = -1000; i < 1000; i++) {
		for (int j = 0; j < 255; j++) {
			if (j > grass_high) {
				wd[i][j] = bl["air"];
			} else if (j == grass_high) {
				wd[i][j] = bl["grass_block"];
			} else if (j > grass_high - 4) {
				wd[i][j] = bl["dirt"];
			} else if (j > 0) {
				wd[i][j] = bl["stone"];
			} else {
				wd[i][j] = bl["bedrock"];
			}
		}
		grass_high += rand() % 3 - 1;
		if (grass_high < 50) grass_high += 2;
		if (grass_high > 176) grass_high -= 2;
	}
}

gc_api_end;

然后还有 注册运行函数的文件(2行),游戏主体(438行,以后绝对不会超过1000行)

当然,这些代码有些复杂,以后我会尽量将API改的简单一些(目前调用的其实是游戏本体的代码,没有API)

薛乘志在2022-04-17 14:40:10追加了内容

只要内存容量大,一千亿格都装下!

当然,我家电脑当然没有同时加载100000000个区块(每个区块宽100格)的内存,生成后把前面的释放掉了,只加载了后面的区块

薛乘志在2022-05-09 20:15:33追加了内容

抱歉,我又双叒叕弃坑了。。。


0
已采纳
李宜和
李宜和
高级启示者
高级启示者

但是这样你后面做**时不会重置吗?

0
王牌工作室官方
王牌工作室官方
新手光能
新手光能

无限世界?不可能的

我要回答