1
已解决
薛乘志
初级启示者
初级启示者
我的计划:
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追加了内容
抱歉,我又双叒叕弃坑了。。。