非常垃圾的c++版Mc.

#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h> using namespace std; typedef struct Frame
{
COORD position[2];
}Frame; void Color(int a)
{
//白
if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
//绿
if(a==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
//红
if(a==2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
//蓝
if(a==3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
//粉
if(a==4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
//黄
if(a==5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
//灰
if(a==6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
//棕
if(a==7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN);
//随机
if(a == -1) Color(rand() % 8);
} void SetPos(COORD a)// set cursor
{
HANDLE out=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(out, a);
} void SetPos(int i, int j)// set cursor
{
COORD pos={short(i), short(j)};
SetPos(pos);
} void HideCursor()
{
CONSOLE_CURSOR_INFO cursor_info = {1, 0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
} char input()
{
while(1)
{
if(_kbhit())
{
return _getch();
}
}
} char input(int i, int j)
{
while(1)
{
char x = input();
if(x >= i && x <= j) return x;
}
} //在[a, b)之间产生一个随机整数
int random(int a, int b)
{
int c=(rand() % (a-b))+ a;
return c;
} struct BLOCK
{
int id;
string txt;
int color;
int hard;
int level; //挖掘等级(0=徒手 1=木 2=石 3=铁 4=钻石 5=合金)
string name;
bool fluid; //是否为流体(可以穿越 能够替换成方块)
}; BLOCK block[] = //方块
{
{0, "□", 0, 2000000000, 100, "基岩", false},
{1, "■", 6, 250, 1, "石头", false},
{2, "▓ ", 7, 75, 0, "泥土", false},
{3, "▓ ", 6, 75, 0, "砂砾", false},
{4, "■", 5, 80, 0, "木头", false},
{5, "※", 0, 500, 2, "铁矿石", false},
{6, "∷", 0, 500, 2, "铁块", false},
{7, "※", 5, 600, 3, "金矿石", false},
{8, "∷", 5, 600, 3, "金块", false},
{9, "※", 3, 900, 3, "钻石矿石", false},
{10, "∷", 3, 900, 3, "钻石块", false},
{11, "▓ ", 1, 20, 0, "树叶", false},
{12, "■", 3, 2000000000, 100, "水", true},
{13, "□", 2, 2000000000, 100, "岩浆", true},
{14, "□", 0, 2000, 4, "真正的基岩", false},
{15, "■", 4, 45, 0, "地狱岩", false},
{16, "□", 4, 3000, 4, "远古残骸", false},
{17, "∷", 4, 3000, 4, "下界合金块", false},
{18, "■", 2, 2000000000, 100, "地幔", true},
{19, " ", 0, 2000000000, 100, "空气", true},
{20, "●", 4, 3000, 3, "海洋之星", false},
{21, "□", 3, 2500, 3, "海能石", false},
{22, "※", 1, 1200, 3, "绿宝石矿石", false},
{23, "∷", 1, 1200, 3, "绿宝石块", false},
{24, "■", 7, 2400, 1, "神殿方块", false},
{25, "<>", 2, 6000, 2, "神殿核心", false},
{26, "于", 2, 10000, 1, "于苗晶体A", false},
{27, "苗", 2, 10000, 1, "于苗晶体B", false},
{28, "{}", 3, 7500, 1, "宝藏锚点", false},
{29, "■", 2, 1000, 0, "TNT", false},
{30, "■", 5, 1000, 0, "TNT", false},
{31, "■", 2, 1000, 0, "TNT", false},
{32, "■", 2, 1000, 0, "TNT", false},
{33, "■", 3, 80000, 2, "地牢石", false},
{34, "※", 3, 150000, 4, "魂石", false},
{35, "▓ ", 3, 2000000000, 100, "死水", true},
{36, "■", 5, 440, 2, "下界砖", false}
}; int block_max = 36; struct ITEM
{
int id;
int hurt;
int speed; //每个短刻的挖掘进度
int level;
string name;
int rare; //稀有度 白0<绿1<蓝2<紫3<幻4
}; ITEM item[] = //物品
{
{0, 0, 0, 0, "空气", 0},
{1, 2, 20, 1, "木镐", 0},
{2, 5, 0, 1, "木剑", 0},
{3, 3, 40, 2, "石镐", 0},
{4, 6, 0, 2, "石剑", 0},
{5, 0, 0, 0, "铁锭", 0},
{6, 4, 80, 3, "铁镐", 0},
{7, 9, 0, 3, "铁剑", 0},
{8, 0, 0, 0, "金锭", 1},
{9, 3, 30, 3, "金镐", 1},
{10, 6, 0, 3, "金剑", 1},
{11, 0, 0, 0, "钻石", 2},
{12, 5, 200, 4, "钻石镐", 2},
{13, 12, 0, 4, "钻石剑", 2},
{14, 0, 0, 0, "下界合金碎片", 3},
{15, 0, 0, 0, "下界合金锭", 3},
{16, 6, 900, 5, "下界合金镐", 3},
{17, 15, 0, 5, "下界合金剑", 3},
{18, 0, 0, 0, "桶", 0},
{19, 0, 0, 0, "水桶", 0},
{20, 0, 0, 0, "岩浆桶", 0},
{21, 0, 0, 0, "药水量子", 3},
{22, 0, 0, 0, "强化量子", 3},
{23, 0, 0, 0, "绿宝石", 2},
{24, 6, 150, 4, "绿宝石镐", 2},
{25, 11, 0, 4, "绿宝石剑", 2},
{26, 0, 100, 0, "海洋创造锤", 3},
{27, 0, 0, 0, "无尽核心", 4},
{28, 0, 0, 0, "宝藏探测器", 4},
{29, 0, 0, 0, "死水桶", 0},
{30, 0, 0, 0, "灵魂之星", 3},
{31, 6, 1600, 5, "灵魂镐", 3},
{32, 17, 0, 5, "灵魂剑", 3}
}; int item_max = 32; struct ARMOR
{
int id;
int defease; //最高为20 可抵御(defease*4)%伤害
string name;
}; ARMOR armor[] = //盔甲
{
{0, 0, "空"},
{1, 4, "木盔甲"},
{2, 8, "石盔甲"},
{3, 12, "铁盔甲"},
{4, 16, "钻石盔甲"},
{5, 20, "下界合金盔甲"}
}; struct BUFF
{
int id;
string name;
int level; //等级 默认为0 1级以上显示在玩家属性页面中
int time; //单位: short_tick 降至0后等级降至0级
}; BUFF buff[] = //效果
{
{0, "空", 0, 0},
{1, "生命提升", 0, 0},
{2, "急迫", 0, 0},
{3, "生命吸收", 0, 0},
{4, "中毒", 0, 0}
}; const int buff_max = 4; string buff_str[] = //效果简介
{
"空效果",
"能够提升生命值 每级提升4点生命值",
"能够加快挖掘速度 每级提升25%挖掘速度",
"获得护盾 每级提升1点免伤值",
"负面效果 每级每个构造刻受到1点伤害"
}; int gamemode = 0; //0=生存 1=创造 2=极限
int short_tick = 0, tick = 0; //短刻(每秒10次)和构造刻(每秒1次)
BLOCK world[2400][1200]; //地图 x0~2399 y0~1199
BLOCK fkl[5]; //方块栏
ITEM wpl[5]; //物品栏
ARMOR kjl = armor[0]; //盔甲栏 做出盔甲立即替换
const int xgmax = 5; //可获得的效果总数
BUFF xgl[xgmax]; //效果栏
int xgnum; //已拥有BUFF
int fknum[5], wpnum[5]; //数量(max:64)
int now = 0; //目前手持方块/物品 0~4方块 5~9物品
int playerx = 1200, playery = 700; //冒险者 坐标
double health = 20; //生命
double max_health = 20; //生命值上限
int oxygen = 20; //氧气
int energy = 0; //跳跃能量
int wjjd = 0; //挖掘进度
int zhuiluo = 0; //连续坠落格数
int level = 0, xp = 0; //等级、经验
bool tick_attack = false; //本tick是否受伤 void print_data();
void input_data(); //地牢结构
int dilao_jiegou[27][29] = {
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2},
{2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 2},
{2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 2, 3, 3, 2, 5, 5, 5, 5, 5, 5, 2, 3, 3, 3, 3, 2},
{2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 2, 3, 3, 2, 5, 5, 5, 5, 5, 5, 2, 3, 3, 3, 3, 2},
{2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 2},
{2, 3, 3, 3, 2, 2, 3, 3, 3, 2, 1, 1, 1, 2, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2},
{2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 1, 1, 1, 2, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2},
{2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 1, 1, 1, 2, 3, 3, 2, 3, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2},
{2, 3, 3, 3, 2, 2, 3, 3, 3, 2, 1, 1, 1, 2, 2, 2, 2, 3, 2, 2, 3, 3, 3, 2, 2, 2, 2, 2, 2},
{2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 1, 2, 2, 3, 3, 2, 2, 3, 3, 3, 2, 1, 1, 1, 1, 1},
{2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 3, 3, 2, 1, 1, 1, 1, 1},
{2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 2, 2, 2, 2, 2},
{2, 2, 2, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 2},
{1, 1, 2, 3, 3, 2, 1, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 4, 4, 2, 3, 3, 3, 3, 3, 3, 3, 2},
{1, 1, 2, 3, 3, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2},
{1, 1, 2, 3, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 1, 1, 1},
{1, 1, 2, 3, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1},
{1, 1, 2, 3, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 2, 3, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1}
}; //下界城市
//核心
int nc_core[9][9] =
{
{0, 0, 0, 1, 2, 1, 0, 0, 0},
{0, 0, 1, 1, 2, 1, 1, 0, 0},
{0, 1, 1, 2, 2, 2, 1, 1, 0},
{1, 1, 2, 2, 2, 2, 2, 1, 1},
{2, 2, 2, 2, 2, 2, 2, 2, 2},
{1, 1, 2, 2, 2, 2, 2, 1, 1},
{0, 1, 1, 2, 2, 2, 1, 1, 0},
{0, 0, 1, 1, 2, 1, 1, 0, 0},
{0, 0, 0, 1, 2, 1, 0, 0, 0}
};
//水平廊道
int nc_cz_ld[9][9] =
{
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1},
{2, 2, 2, 2, 2, 2, 2, 2, 2},
{1, 1, 1, 1, 1, 1, 1, 1, 1},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0}
};
//垂直廊道
int nc_sp_ld[9][9] =
{
{0, 0, 0, 1, 2, 1, 0, 0, 0},
{0, 0, 0, 1, 2, 1, 0, 0, 0},
{0, 0, 0, 1, 2, 1, 0, 0, 0},
{0, 0, 0, 1, 2, 1, 0, 0, 0},
{0, 0, 0, 1, 2, 1, 0, 0, 0},
{0, 0, 0, 1, 2, 1, 0, 0, 0},
{0, 0, 0, 1, 2, 1, 0, 0, 0},
{0, 0, 0, 1, 2, 1, 0, 0, 0},
{0, 0, 0, 1, 2, 1, 0, 0, 0}
}; void block_copy(int x, int y, int id) //将一个方块放置到某个坐标
{
world[x][y].id = id;
world[x][y].txt = block[id].txt;
world[x][y].color = block[id].color;
world[x][y].hard = block[id].hard;
world[x][y].name = block[id].name;
world[x][y].level = block[id].level;
world[x][y].fluid = block[id].fluid;
} void chengshi(int x, int y) //下界城市的生成
{
queue<pair<pair<int, int>, int> > q;
int size = 5;
x /= 9;
y /= 9;
int nt = 1;
q.push({{x, y}, 1});
for(int i = 0;i < 9;i++)
{
for(int j = 0;j < 9;j++)
{
if(nt == 1)
{
if(nc_core[i][j] == 2)
{
block_copy(x * 9 + i, y * 9 + j, 19);
}
else if(nc_core[i][j] == 0) ;
else block_copy(x * 9 + i, y * 9 + j, 36);
}
else if(nt == 2)
{
if(nc_sp_ld[i][j] == 2)
{
block_copy(x * 9 + i, y * 9 + j, 19);
}
else if(nc_sp_ld[i][j] == 0);
else block_copy(x * 9 + i, y * 9 + j, 36);
}
else if(nt == 3)
{
if(nc_cz_ld[i][j] == 2)
{
block_copy(x * 9 + i, y * 9 + j, 19);
}
else if(nc_cz_ld[i][j] == 0) ;
else block_copy(x * 9 + i, y * 9 + j, 36);
} }
}
nt = 2;
q.push({{x - 1, y}, 2});
for(int i = 0;i < 9;i++)
{
for(int j = 0;j < 9;j++)
{
if(nt == 1)
{
if(nc_core[i][j] == 2)
{
block_copy(x * 9 - 9 + i, y * 9 + j, 19);
}
else if(nc_core[i][j] == 0);
else block_copy(x * 9 - 9 + i, y * 9 + j, 36);
}
else if(nt == 2)
{
if(nc_sp_ld[i][j] == 2)
{
block_copy(x * 9 - 9 + i, y * 9 + j, 19);
}
else if(nc_sp_ld[i][j] == 0);
else block_copy(x * 9 - 9 + i, y * 9 + j, 36);
}
else if(nt == 3)
{
if(nc_cz_ld[i][j] == 2)
{
block_copy(x * 9 - 9 + i, y * 9 + j, 19);
}
else if(nc_cz_ld[i][j] == 0) ;
else block_copy(x * 9 - 9 + i, y * 9 + j, 36);
} }
}
q.push({{x + 1, y}, 2});
for(int i = 0;i < 9;i++)
{
for(int j = 0;j < 9;j++)
{
if(nt == 1)
{
if(nc_core[i][j] == 2)
{
block_copy(x * 9 + 9 + i, y * 9 + j, 19);
}
else if(nc_core[i][j] == 0) ;
else block_copy(x * 9 + 9 + i, y * 9 + j, 36);
}
else if(nt == 2)
{
if(nc_sp_ld[i][j] == 2)
{
block_copy(x * 9 + 9 + i, y * 9 + j, 19);
}
else if(nc_sp_ld[i][j] == 0) ;
else block_copy(x * 9 + 9 + i, y * 9 + j, 36);
}
else if(nt == 3)
{
if(nc_cz_ld[i][j] == 2)
{
block_copy(x * 9 + 9 + i, y * 9 + j, 19);
}
else if(nc_cz_ld[i][j] == 0) ;
else block_copy(x * 9 + 9 + i, y * 9 + j, 36);
} }
}
nt = 3;
q.push({{x, y - 1}, 3});
for(int i = 0;i < 9;i++)
{
for(int j = 0;j < 9;j++)
{
if(nt == 1)
{
if(nc_core[i][j] == 2)
{
block_copy(x * 9 + i, y * 9 - 9 + j, 19);
}
else if(nc_core[i][j] == 0) ;
else block_copy(x * 9 + i, y * 9 - 9 + j, 36);
}
else if(nt == 2)
{
if(nc_sp_ld[i][j] == 2)
{
block_copy(x * 9 + i, y * 9 - 9 + j, 19);
}
else if(nc_sp_ld[i][j] == 0) ;
else block_copy(x * 9 + i, y * 9 - 9 + j, 36);
}
else if(nt == 3)
{
if(nc_cz_ld[i][j] == 2)
{
block_copy(x * 9 + i, y * 9 - 9 + j, 19);
}
else if(nc_cz_ld[i][j] == 0) ;
else block_copy(x * 9 + i, y * 9 - 9 + j, 36);
}
}
}
q.push({{x, y + 1}, 3});
for(int i = 0;i < 9;i++)
{
for(int j = 0;j < 9;j++)
{
if(nt == 1)
{
if(nc_core[i][j] == 2)
{
block_copy(x * 9 + i, y * 9 + 9 + j, 19);
}
else if(nc_core[i][j] == 0);
else block_copy(x * 9 + i, y * 9 + 9 + j, 36);
}
else if(nt == 2)
{
if(nc_sp_ld[i][j] == 2)
{
block_copy(x * 9 + i, y * 9 + 9 + j, 19);
}
else if(nc_sp_ld[i][j] == 0) ;
else block_copy(x * 9 + i, y * 9 + 9 + j, 36);
}
else if(nt == 3)
{
if(nc_cz_ld[i][j] == 2)
{
block_copy(x * 9 + i, y * 9 + 9 + j, 19);
}
else if(nc_cz_ld[i][j] == 0) ;
else block_copy(x * 9 + i, y * 9 + 9 + j, 36);
} }
}
while(!q.empty() && size < 24)
{
int nx = q.front().first.first;
int ny = q.front().first.second;
int nt = q.front().second;
q.pop();
if(rand() % 3 <= 1 && nt != 3)
{
q.push({{nx - 1, ny}, 2});
size++;
for(int i = 0;i < 9;i++)
{
for(int j = 0;j < 9;j++)
{
if(nt == 1)
{
if(nc_core[i][j] == 2)
{
block_copy(nx * 9 + i, ny * 9 + j, 19);
}
else if(nc_core[i][j] == 0) continue;
else block_copy(nx * 9 + i, ny * 9 + j, 36);
}
else if(nt == 2)
{
if(nc_sp_ld[i][j] == 2)
{
block_copy(nx * 9 + i, ny * 9 + j, 19);
}
else if(nc_sp_ld[i][j] == 0) continue;
else block_copy(nx * 9 + i, ny * 9 + j, 36);
}
else if(nt == 3)
{
if(nc_cz_ld[i][j] == 2)
{
block_copy(nx * 9 + i, ny * 9 + j, 19);
}
else if(nc_cz_ld[i][j] == 0) continue;
else block_copy(nx * 9 + i, ny * 9 + j, 36);
} }
}
}
if(rand() % 3 <= 1 && nt != 3)
{
q.push({{nx + 1, ny}, 2});
size++;
for(int i = 0;i < 9;i++)
{
for(int j = 0;j < 9;j++)
{
if(nt == 1)
{
if(nc_core[i][j] == 2)
{
block_copy(nx * 9 + i, ny * 9 + j, 19);
}
else if(nc_core[i][j] == 0) continue;
else block_copy(nx * 9 + i, ny * 9 + j, 36);
}
else if(nt == 2)
{
if(nc_sp_ld[i][j] == 2)
{
block_copy(nx * 9 + i, ny * 9 + j, 19);
}
else if(nc_sp_ld[i][j] == 0) continue;
else block_copy(nx * 9 + i, ny * 9 + j, 36);
}
else if(nt == 3)
{
if(nc_cz_ld[i][j] == 2)
{
block_copy(nx * 9 + i, ny * 9 + j, 19);
}
else if(nc_cz_ld[i][j] == 0) continue;
else block_copy(nx * 9 + i, ny * 9 + j, 36);
} }
}
}
if(rand() % 3 <= 1 && nt != 2)
{
q.push({{nx, ny - 1}, 3});
size++;
for(int i = 0;i < 9;i++)
{
for(int j = 0;j < 9;j++)
{
if(nt == 1)
{
if(nc_core[i][j] == 2)
{
block_copy(nx * 9 + i, ny * 9 + j, 19);
}
else if(nc_core[i][j] == 0) continue;
else block_copy(nx * 9 + i, ny * 9 + j, 36);
}
else if(nt == 2)
{
if(nc_sp_ld[i][j] == 2)
{
block_copy(nx * 9 + i, ny * 9 + j, 19);
}
else if(nc_sp_ld[i][j] == 0) continue;
else block_copy(nx * 9 + i, ny * 9 + j, 36);
}
else if(nt == 3)
{
if(nc_cz_ld[i][j] == 2)
{
block_copy(nx * 9 + i, ny * 9 + j, 19);
}
else if(nc_cz_ld[i][j] == 0) continue;
else block_copy(nx * 9 + i, ny * 9 + j, 36);
} }
}
}
if(rand() % 3 <= 1 && nt != 2)
{
q.push({{nx, ny + 1}, 3});
size++;
for(int i = 0;i < 9;i++)
{
for(int j = 0;j < 9;j++)
{
if(nt == 1)
{
if(nc_core[i][j] == 2)
{
block_copy(nx * 9 + i, ny * 9 + j, 19);
}
else if(nc_core[i][j] == 0) continue;
else block_copy(nx * 9 + i, ny * 9 + j, 36);
}
else if(nt == 2)
{
if(nc_sp_ld[i][j] == 2)
{
block_copy(nx * 9 + i, ny * 9 + j, 19);
}
else if(nc_sp_ld[i][j] == 0) continue;
else block_copy(nx * 9 + i, ny * 9 + j, 36);
}
else if(nt == 3)
{
if(nc_cz_ld[i][j] == 2)
{
block_copy(nx * 9 + i, ny * 9 + j, 19);
}
else if(nc_cz_ld[i][j] == 0) continue;
else block_copy(nx * 9 + i, ny * 9 + j, 36);
} }
}
}
if(rand() % 3 <= 1 && nt != 1)
{
q.push({{nx + random(-1, 2), ny + random(-1, 2)}, 1});
size++;
for(int i = 0;i < 9;i++)
{
for(int j = 0;j < 9;j++)
{
if(nt == 1)
{
if(nc_core[i][j] == 2)
{
block_copy(nx * 9 + i, ny * 9 + j, 19);
}
else if(nc_core[i][j] == 0) continue;
else block_copy(nx * 9 + i, ny * 9 + j, 36);
}
else if(nt == 2)
{
if(nc_sp_ld[i][j] == 2)
{
block_copy(nx * 9 + i, ny * 9 + j, 19);
}
else if(nc_sp_ld[i][j] == 0) continue;
else block_copy(nx * 9 + i, ny * 9 + j, 36);
}
else if(nt == 3)
{
if(nc_cz_ld[i][j] == 2)
{
block_copy(nx * 9 + i, ny * 9 + j, 19);
}
else if(nc_cz_ld[i][j] == 0) continue;
else block_copy(nx * 9 + i, ny * 9 + j, 36);
} }
}
}
}
} void init() //生成世界
{
cout << "2%" << endl;
for(int x = 0;x < 2400;x++) //填充空气
{
for(int y = 0;y < 1200;y++) block_copy(x, y, 19);
}
cout << "4%" << endl;
for(int y = 1;y < 1200;y++) //边界
{
for(int x = 0;x <= 198;x++) block_copy(x, y, 18);
for(int x = 2301;x <= 2399;x++) block_copy(x, y, 18);
block_copy(199, y, 0);
block_copy(2300, y, 0);
}
cout << "6%" << endl;
int stgd[2400]; //石头高度(海平面700)
//生成主世界构造
//确认x坐标下石头高度 (第一次构造)
stgd[1200] = 200; //默认值
for(int x = 1199;x >= 200;x--)
{
if(random(0, 1000) <= 500)
{
stgd[x] = stgd[x + 1] - random(0, 2) + random(0, 2); //小变动
}
else if(random(0, 1000) <= 100)
{
int add = random(0, 20);
add -= 10;
stgd[x] = stgd[x + 1] + add; //断崖式变动
}
else
{
stgd[x] = stgd[x + 1]; //无变动
}
if(stgd[x] > 210) stgd[x] = 210;
if(stgd[x] < 160) stgd[x] = 160;
}
cout << "12%" << endl;
for(int x = 1201;x < 2300;x++)
{
if(random(0, 1000) <= 500)
{
stgd[x] = stgd[x - 1] - random(0, 2) + random(0, 2);
}
else if(random(0, 1000) <= 100)
{
int add = random(0, 20);
add -= 10;
stgd[x] = stgd[x - 1] + add;
}
else
{
stgd[x] = stgd[x - 1];
}
if(stgd[x] > 220) stgd[x] = 220;
if(stgd[x] < 160) stgd[x] = 160;
}
cout << "15%" << endl;
//拷贝石头(主世界下边界:y=501)
for(int x = 200;x < 2300;x++)
{
for(int y = 501;y <= 501 + stgd[x];y++)
{
block_copy(x, y, 1);
//生成铁矿和金矿
if(random(1, 10000) <= 100)
{
block_copy(x, y, 5);
}
else if(random(1, 10000) <= 300)
{
block_copy(x, y, 7);
} //生成钻石
if(y <= 515 && random(1, 10000) <= 50)
{
block_copy(x, y, 9);
} //生成绿宝石
if(y <= 600 && random(1, 10000) <= 75)
{
block_copy(x, y, 22);
} //生成岩浆
if(y <= 580 && random(1, 10000) <= 100)
{
block_copy(x, y, 13);
}
}
}
cout << "20%" << endl;
//增加海水(第二次构造)
for(int x = 200;x < 2300;x++)
{
for(int y = 501 + stgd[x] + 1;y <= 700;y++)
{
block_copy(x, y, 12);
}
}
cout << "23%" << endl;
for(int x = 200;x < 2300;x++)
{
for(int y = 501 + stgd[x] + 1;y <= 700;y++)
{
if(world[x][y].id != 12) continue;
//海之环生成
bool flag = true;
for(int xx = x - 3;xx <= x + 5;xx++)
{
for(int yy = y - 3;yy <= y + 5;yy++)
{
if(world[xx][yy].id != 12) flag = false;
}
}
if(flag && random(1, 10000) < 6) //符合条件
{
bool haizhihuan[9][9] =
{
{0, 0, 1, 1, 1, 1, 1, 0, 0},
{0, 1, 1, 0, 0, 0, 1, 1, 0},
{1, 1, 0, 0, 1, 0, 0, 1, 1},
{1, 0, 0, 1, 0, 1, 0, 0, 1},
{1, 0, 1, 0, 1, 0, 1, 0, 1},
{1, 0, 0, 1, 0, 1, 0, 0, 1},
{1, 1, 0, 0, 1, 0, 0, 1, 1},
{0, 1, 1, 0, 0, 0, 1, 1, 0},
{0, 0, 1, 1, 1, 1, 1, 0, 0}};
for(int i = x - 5;i <= x + 5;i++)
{
for(int j = y - 5;j <= y + 5;j++)
{
if(haizhihuan[i - (x - 5)][j - (y - 5)] == 1)
{
block_copy(i, j, 21);
}
}
}
block_copy(x, y, 20);
}
}
}
cout << "27%" << endl;
//最上3层为泥土
for(int x = 200;x < 2300;x++)
{
int dian = random(1, 10000);
int tree = random(1, 10000);
block_copy(x, 501 + stgd[x], 2);
block_copy(x, 501 + stgd[x] + 1, 2);
block_copy(x, 501 + stgd[x] + 2, 2);
//生成树
if(tree <= 250)
{
block_copy(x, 501 + stgd[x] + 2, 4);
block_copy(x, 501 + stgd[x] + 3, 4);
block_copy(x, 501 + stgd[x] + 4, 4);
block_copy(x - 1, 501 + stgd[x] + 4, 11);
block_copy(x + 1, 501 + stgd[x] + 4, 11);
block_copy(x, 501 + stgd[x] + 5, 11);
block_copy(x - 1, 501 + stgd[x] + 5, 11);
block_copy(x + 1, 501 + stgd[x] + 5, 11);
block_copy(x, 501 + stgd[x] + 6, 11);
}
//生成高树
else if(tree <= 310)
{
block_copy(x, 501 + stgd[x] + 2, 4);
block_copy(x, 501 + stgd[x] + 3, 4);
block_copy(x, 501 + stgd[x] + 4, 4);
block_copy(x, 501 + stgd[x] + 5, 4);
block_copy(x - 1, 501 + stgd[x] + 4, 4);
block_copy(x + 1, 501 + stgd[x] + 4, 4);
block_copy(x - 2, 501 + stgd[x] + 5, 4);
block_copy(x + 2, 501 + stgd[x] + 5, 4);
block_copy(x - 2, 501 + stgd[x] + 6, 11);
block_copy(x + 2, 501 + stgd[x] + 6, 11);
block_copy(x - 2, 501 + stgd[x] + 4, 11);
block_copy(x + 2, 501 + stgd[x] + 4, 11);
block_copy(x, 501 + stgd[x] + 6, 11);
block_copy(x - 1, 501 + stgd[x] + 5, 11);
block_copy(x + 1, 501 + stgd[x] + 5, 11);
block_copy(x - 1, 501 + stgd[x] + 6, 11);
block_copy(x + 1, 501 + stgd[x] + 6, 11);
block_copy(x, 501 + stgd[x] + 6, 11);
block_copy(x, 501 + stgd[x] + 7, 11);
block_copy(x - 1, 501 + stgd[x] + 7, 11);
block_copy(x + 1, 501 + stgd[x] + 7, 11);
}
//生成入云树
else if(tree <= 340)
{
for(int i = 501 + stgd[x] + 2;i <= 501 + stgd[x] + (rand()%10) + 6;i++)
{
block_copy(x, i, 4);
if(i >= 501 + stgd[x] + 4)
{
block_copy(x - 1, i, 11);
block_copy(x + 1, i, 11);
}
block_copy(x, i + 1, 11);
}
}
//生成巨树
else if(tree <= 370)
{
block_copy(x, 501 + stgd[x] + 2, 4);
block_copy(x - 1, 501 + stgd[x] + 2, 4);
block_copy(x + 1, 501 + stgd[x] + 2, 4);
block_copy(x, 501 + stgd[x] + 3, 4);
block_copy(x - 1, 501 + stgd[x] + 3, 4);
block_copy(x + 1, 501 + stgd[x] + 3, 4);
block_copy(x, 501 + stgd[x] + 4, 4);
block_copy(x - 1, 501 + stgd[x] + 4, 4);
block_copy(x + 1, 501 + stgd[x] + 4, 4);
block_copy(x, 501 + stgd[x] + 5, 4);
block_copy(x - 1, 501 + stgd[x] + 5, 4);
block_copy(x + 1, 501 + stgd[x] + 5, 4);
block_copy(x - 2, 501 + stgd[x] + 4, 11);
block_copy(x + 2, 501 + stgd[x] + 4, 11);
block_copy(x - 2, 501 + stgd[x] + 5, 11);
block_copy(x + 2, 501 + stgd[x] + 5, 11);
block_copy(x - 2, 501 + stgd[x] + 6, 11);
block_copy(x + 2, 501 + stgd[x] + 6, 11);
block_copy(x - 1, 501 + stgd[x] + 6, 11);
block_copy(x + 1, 501 + stgd[x] + 6, 11);
block_copy(x, 501 + stgd[x] + 6, 11);
block_copy(x, 501 + stgd[x] + 7, 11);
block_copy(x - 1, 501 + stgd[x] + 7, 11);
block_copy(x + 1, 501 + stgd[x] + 7, 11);
} //生成于苗神殿
else if(tree <= 405)
{
int y = 501 + stgd[x] + 3; block_copy(x, y, 24);
block_copy(x - 1, y, 24);
block_copy(x + 1, y, 24);
block_copy(x - 2, y, 24);
block_copy(x + 2, y, 24);
block_copy(x - 3, y, 24);
block_copy(x + 3, y, 24);
block_copy(x - 3, y + 1, 24);
block_copy(x + 3, y + 1, 24);
block_copy(x - 3, y + 2, 24);
block_copy(x + 3, y + 2, 24);
block_copy(x - 3, y + 3, 24);
block_copy(x + 3, y + 3, 24);
block_copy(x - 3, y + 4, 24);
block_copy(x + 3, y + 4, 24);
block_copy(x - 3, y + 5, 24);
block_copy(x + 3, y + 5, 24);
block_copy(x - 3, y + 6, 24);
block_copy(x + 3, y + 6, 24);
block_copy(x - 2, y + 6, 24);
block_copy(x + 2, y + 6, 24);
block_copy(x - 1, y + 6, 24);
block_copy(x + 1, y + 6, 24);
block_copy(x, y + 6, 24);
block_copy(x - 2, y + 6, 24);
block_copy(x + 2, y + 6, 24);
block_copy(x - 2, y + 7, 24);
block_copy(x + 2, y + 7, 24);
block_copy(x - 1, y + 7, 26);
block_copy(x + 1, y + 7, 27);
block_copy(x - 2, y + 8, 24);
block_copy(x + 2, y + 8, 24);
block_copy(x - 1, y + 9, 24);
block_copy(x + 1, y + 9, 24);
block_copy(x, y + 9, 25);
block_copy(x - 1, y + 10, 24);
block_copy(x + 1, y + 10, 24);
block_copy(x, y + 10, 24);
}
//生成地牢
else if(tree <= 415 || x == 1200)
{
int t_high = rand() % 20 + 60;
for(int i = 0;i < 27;i++)
{
for(int j = 0;j < 29;j++)
{
int fangkuaiid = 0;
if(dilao_jiegou[i][j] == 1) continue;
else if(dilao_jiegou[i][j] == 2) fangkuaiid = 33;
else if(dilao_jiegou[i][j] == 3) fangkuaiid = 19;
else if(dilao_jiegou[i][j] == 5) fangkuaiid = 35;
else fangkuaiid = 34;
block_copy( x - 14 + j, 501 + stgd[x] + 3 - (t_high) + i, fangkuaiid);
}
}
}
}
cout << "30%" << endl;
for(int x = 200;x < 2300;x++)
{
int gaodu = max(741, 501 + stgd[x]);
for(int y = gaodu + 15;y <= gaodu + 20;y++)
{
if(rand() % 20000 < 1)
{
//生成宝藏岛
block_copy(x, y, 1);
for(int z = x - 2;z <= x + 2;z++) block_copy(z, y + 1, 1);
for(int z = x - 3;z <= x + 3;z++) block_copy(z, y + 2, 1);
for(int z = x - 4;z <= x + 4;z++) block_copy(z, y + 3, 1);
for(int z = x - 5;z <= x + 5;z++) block_copy(z, y + 4, 1);
block_copy(x - 2, y + 5, 9);
block_copy(x + 2, y + 5, 9);
block_copy(x - 2, y + 6, 7);
block_copy(x + 2, y + 6, 7);
block_copy(x - 2, y + 7, 5);
block_copy(x + 2, y + 7, 5);
block_copy(x - 1, y + 8, 22);
block_copy(x + 1, y + 8, 22);
block_copy(x, y + 6, 16);
block_copy(x, y + 10, 28);
break;
}
}
}
cout << "34%" << endl;
for(int x = 200;x < 2300;x++)
{
block_copy(x, 500, 14);
block_copy(x, 499, 14);
block_copy(x, 498, 14);
block_copy(x, 497, 14);
}
cout << "36%" << endl;
for(int x = 200;x < 2300;x++)
{
for(int y = 496;y >= 100;y--)
{
block_copy(x, y, 15);
if(random(0, 10000) <= 60)
{
bool flag = false;
if(random(0, 10000) <= 1000) flag = true;
int r = random(2, 4);
for(int xx = x - r;xx <= x + r;xx++)
{
for(int yy = y - r;yy <= y + r;yy++)
{
block_copy(xx, yy, 19);
if(yy == y - r)
{
if(flag) block_copy(xx, yy, 13);
}
}
}
}
//添加岩浆
if(random(0, 10000) <= 1000) block_copy(x, y, 13);
//远古残骸
if(random(0, 10000) <= 10) block_copy(x, y, 16);
}
}
cout << "42%" << endl;
for(int x = 200;x < 2300;x++)
{
for(int y = 496;y >= 100;y--)
{
//下界城市
if(random(1, 10000) == 1 || (x == 1200 && y == 400))
{
if(random(1, 100) == 1 || (x == 1200 && y == 400))
{
chengshi(x, y);
}
}
}
}
playery = 501 + stgd[1200] + 3;
} void block_pick(BLOCK blk)
{
for(int i = 0;i < 5;i++)
{
if(fkl[i].id == blk.id && blk.id != 0 && fknum[i] < 64)
{
fkl[i].id = blk.id;
fkl[i].name = blk.name;
fkl[i].txt = blk.txt;
fkl[i].hard = blk.hard;
fkl[i].level = blk.level;
fkl[i].fluid = blk.fluid;
fkl[i].color = blk.color;
fknum[i]++;
return;
}
}
for(int i = 0;i < 5;i++)
{
if(fknum[i] <= 0)
{
fkl[i].id = blk.id;
fkl[i].name = blk.name;
fkl[i].txt = blk.txt;
fkl[i].hard = blk.hard;
fkl[i].level = blk.level;
fkl[i].fluid = blk.fluid;
fkl[i].color = blk.color;
fknum[i] = 1;
return;
}
}
} void block_delete(BLOCK blk)
{
for(int i = 0;i < 5;i++)
{
if(fkl[i].id == blk.id && fkl[i].txt == blk.txt)
{
fknum[i]--;
if(fknum[i] == 0)
{
fkl[i].id = 0;
fkl[i].name = "";
fkl[i].txt = "";
fkl[i].hard = 0;
fkl[i].level = 0;
fkl[i].fluid = 0;
fkl[i].color = 0;
}
return;
}
}
} int block_num(BLOCK blk)
{
int num = 0;
for(int i = 0;i < 5;i++)
{
if(fkl[i].id == blk.id && fkl[i].txt == blk.txt)
{
num += fknum[i];
}
}
return num;
} void item_pick(ITEM itm)
{
for(int i = 0;i < 5;i++)
{
if(wpl[i].id == itm.id && itm.id != 0 && wpnum[i] < 64)
{
wpl[i].id = itm.id;
wpl[i].hurt = itm.hurt;
wpl[i].level = itm.level;
wpl[i].name = itm.name;
wpl[i].speed = itm.speed;
wpl[i].rare = itm.rare;
wpnum[i]++;
return;
}
}
for(int i = 0;i < 5;i++)
{
if(wpnum[i] <= 0)
{
wpl[i].id = itm.id;
wpl[i].hurt = itm.hurt;
wpl[i].level = itm.level;
wpl[i].name = itm.name;
wpl[i].speed = itm.speed;
wpl[i].rare = itm.rare;
wpnum[i] = 1;
return;
}
}
} void item_delete(ITEM itm)
{
for(int i = 0;i < 5;i++)
{
if(wpl[i].id == itm.id && wpl[i].name == itm.name)
{
wpnum[i]--;
if(wpnum[i] == 0)
{
wpl[i].id = 0;
wpl[i].hurt = 0;
wpl[i].speed = 0;
wpl[i].level = 0;
wpl[i].name = "";
wpl[i].rare = 0;
}
return;
}
}
} int item_num(ITEM itm)
{
int num = 0;
for(int i = 0;i < 5;i++)
{
if(wpl[i].id == itm.id && wpl[i].name == itm.name)
{
num += wpnum[i];
}
}
return num;
} void armor_delete()
{
kjl.id = 0;
kjl.defease = 0;
kjl.name = "空";
} void armor_pick(ARMOR arm)
{
kjl.id = arm.id;
kjl.defease = arm.defease;
kjl.name = arm.name;
} void buff_give(BUFF bff, int level, int time)
{
if(bff.id == 0) return;
if(xgnum == xgmax) return;
xgl[xgnum].id = bff.id;
xgl[xgnum].level = level;
xgl[xgnum].name = bff.name;
xgl[xgnum++].time = time;
} void buff_delete(BUFF bff)
{
if(bff.id == 0) return;
for(int i = 0;i < xgnum;i++)
{
if(xgl[i].id == bff.id)
{
xgl[i].id = 0;
xgl[i].level = 0;
xgl[i].name = "空";
xgl[i].time = 0;
}
}
} int get_buff_level(BUFF bff)
{
int mx = 0;
if(bff.id == 0) return 0;
for(int i = 0;i < xgnum;i++)
{
if(xgl[i].id == bff.id) mx = max(mx, xgl[i].level);
}
return mx;
} void buff_merge() //效果合并(每短刻进行)
{
for(int i = 0;i < xgnum;i++)
{
for(int j = i + 1;j < xgnum;j++)
{
if(xgl[i].id == xgl[j].id && xgl[i].id != 0)
{
xgl[i].level = max(xgl[i].level, xgl[j].level);
xgl[i].time = xgl[i].time + xgl[j].time;
xgl[j].id = 0;
xgl[j].level = 0;
xgl[j].name = "空";
xgl[j].time = 0;
xgnum--;
//迁移效果
for(int k = j + 1;k < xgnum + 1;k++)
{
xgl[k - 1].level = xgl[k].level;
xgl[k - 1].id = xgl[k].id;
xgl[k - 1].time = xgl[k].time;
xgl[k - 1].name = xgl[k].name;
xgl[k].id = 0;
xgl[k].level = 0;
xgl[k].name = "空";
xgl[k].time = 0;
}
}
}
}
} void buff_live()
{
for(int i = 0;i < xgnum;i++)
{
if(xgl[i].id != 0)
{
xgl[i].time--;
if(xgl[i].time <= 0)
{
xgl[i].id = 0;
xgl[i].level = 0;
xgl[i].name = "空";
xgl[i].time = 0;
}
}
}
} void attack(int hurt_num, string die_str) //造成伤害
{
if(gamemode == 1) return;
double hurt;
hurt = hurt_num * (1.0 - (kjl.defease) * 0.04);
//对高伤害进行削弱
int i = 0;
double shjm = 0.0;
for(int xxx = 0;xxx <= kjl.defease;xxx++)
{
shjm += 0.012 * (1.0 - (xxx * 0.04));
}
if(hurt >= 150)
{
hurt = 150 + sqrt(hurt - 150);
}
hurt -= hurt * 0.1 + shjm;
if(get_buff_level(buff[3]) > 0) hurt -= get_buff_level(buff[3]); //生命吸收
health -= hurt;
tick_attack = true;
if(health < 0 && gamemode == 2) //玩家死亡 极限模式=删除存档
{
system("cls");
SetPos(2, 2);
cout << "GAME OVER";
SetPos(2, 4);
cout << die_str;
SetPos(2, 6);
cout << "极限模式下 你必须删除存档";
init();
print_data();
SetPos(2, 8);
system("pause");
exit(0);
}
else if(health < 0 && gamemode == 0) //玩家死亡 生存模式=复活
{
system("cls");
SetPos(2, 2);
cout << "GAME OVER";
SetPos(2, 4);
cout << die_str;
SetPos(2, 6);
cout << "重生";
SetPos(2, 8);
system("pause");
playerx = 1200;
playery = 700;
block_copy(playerx, playery, 19);
health = max_health + get_buff_level(buff[1]) * 4;
return;
}
} void input_data() //输入数据
{
ifstream fin("data.txt", ios::in);
for(int i = 0;i < 2400;i++)
{
for(int j = 0;j < 1200;j++)
{
int ijid;
fin >> ijid;
block_copy(i, j, ijid);
}
}
fin >> playerx >> playery;
for(int i = 0;i < 5;i++) fin >> fknum[i] >> wpnum[i];
for(int i = 0;i < 5;i++)
{
int fkid, wpid;
fin >> fkid >> wpid;
if(fkid != 0)
{
fkl[i].id = fkid;
fkl[i].fluid = block[fkid].fluid;
fkl[i].color = block[fkid].color;
fkl[i].hard = block[fkid].hard;
fkl[i].level = block[fkid].level;
fkl[i].txt = block[fkid].txt;
fkl[i].name = block[fkid].name;
}
else fknum[i] = 0;
if(wpid != 0)
{
wpl[i].id = wpid;
wpl[i].name = item[wpid].name;
wpl[i].speed = item[wpid].speed;
wpl[i].hurt = item[wpid].hurt;
wpl[i].level = item[wpid].level;
wpl[i].rare = item[wpid].rare;
}
else wpnum[i] = 0;
}
int zbid;
fin >> zbid;
armor_pick(armor[zbid]);
fin >> xgnum;
for(int i = 0;i < xgnum;i++)
{
int xgid, xgtm, xglv;
fin >> xgid >> xgtm >> xglv;
xgl[i].id = xgid;
xgl[i].time = xgtm;
xgl[i].name = buff[xgid].name;
xgl[i].level = xglv;
}
fin >> health >> oxygen;
fin >> gamemode;
fin >> level >> xp >> max_health;
} void print_data() //输出数据
{
ofstream fout("data.txt", ios::out);
for(int i = 0;i < 2400;i++)
{
for(int j = 0;j < 1200;j++)
{
int id = world[i][j].id;
fout << id;
fout << ' ';
}
fout << endl;
}
fout << playerx << endl << playery << endl;
for(int i = 0;i < 5;i++) fout << fknum[i] << ' ' << wpnum[i] << endl;
for(int i = 0;i < 5;i++)
{
fout << fkl[i].id << ' ' << wpl[i].id << endl;
}
fout << kjl.id << endl;
fout << xgnum << endl;
for(int i = 0;i < xgnum;i++)
{
fout << xgl[i].id << ' ' << xgl[i].time << ' ' << xgl[i].level;
fout << endl;
}
fout << health << endl << oxygen << endl;
fout << gamemode << endl;
fout << level << endl << xp << endl << max_health << endl;
} void item_choose() //创造物品选择器
{
system("cls");
SetPos(10, 1);
cout << "创造模式物品选择器:";
SetPos(10, 3);
cout << "a d 迭代手中物品 S 堆叠手中物品";
SetPos(10, 5);
cout << "K 确认";
while(1)
{
SetPos(10, 7);
cout << "手中物品:";
if(now <= 4) //显示方块
{
Color(fkl[now].color), cout << fkl[now].txt << ' ' << fkl[now].name;
cout << " ";
Color(0);
}
else //显示物品
{
if(wpl[now - 5].rare == 0) Color(0);
else if(wpl[now - 5].rare == 1) Color(1);
else if(wpl[now - 5].rare == 2) Color(3);
else if(wpl[now - 5].rare == 3) Color(4);
else Color(2);
cout << wpl[now - 5].name;
cout << " ";
Color(0);
}
Color(0);
if(_kbhit())
{
char f = _getch();
if(f == 'a')
{
if(now <= 4 && fkl[now].id > 0)
{
if(!fknum[now]) fknum[now]++;
fkl[now].id--;
fkl[now].color = block[fkl[now].id].color;
fkl[now].fluid = block[fkl[now].id].fluid;
fkl[now].hard = block[fkl[now].id].hard;
fkl[now].level = block[fkl[now].id].level;
fkl[now].name = block[fkl[now].id].name;
fkl[now].txt = block[fkl[now].id].txt;
}
else if(now >= 5 && wpl[now - 5].id > 0)
{
if(!wpnum[now - 5]) wpnum[now - 5]++;
wpl[now - 5].id--;
wpl[now - 5].hurt = item[wpl[now - 5].id].hurt;
wpl[now - 5].level = item[wpl[now - 5].id].level;
wpl[now - 5].name = item[wpl[now - 5].id].name;
wpl[now - 5].rare = item[wpl[now - 5].id].rare;
wpl[now - 5].speed = item[wpl[now - 5].id].speed;
}
}
else if(f == 'd')
{
if(now <= 4 && fkl[now].id < block_max)
{
if(!fknum[now]) fknum[now]++;
fkl[now].id++;
fkl[now].color = block[fkl[now].id].color;
fkl[now].fluid = block[fkl[now].id].fluid;
fkl[now].hard = block[fkl[now].id].hard;
fkl[now].level = block[fkl[now].id].level;
fkl[now].name = block[fkl[now].id].name;
fkl[now].txt = block[fkl[now].id].txt;
}
else if(now >= 5 && wpl[now - 5].id < item_max)
{
if(!wpnum[now - 5]) wpnum[now - 5]++;
wpl[now - 5].id++;
wpl[now - 5].hurt = item[wpl[now - 5].id].hurt;
wpl[now - 5].level = item[wpl[now - 5].id].level;
wpl[now - 5].name = item[wpl[now - 5].id].name;
wpl[now - 5].rare = item[wpl[now - 5].id].rare;
wpl[now - 5].speed = item[wpl[now - 5].id].speed;
}
}
else if(f == 's')
{
if(now <= 4) fknum[now] = 64;
else wpnum[now - 5] = 64;
}
else if(f == 'k')
{
system("cls");
return;
}
}
}
} void crafting()
{
//合成
system("cls");
SetPos(10, 1);
cout << "合成";
SetPos(10, 3);
cout << "1 工具类";
SetPos(10, 5);
cout << "2 熔炼类";
SetPos(10, 7);
cout << "3 盔甲类";
SetPos(10, 9);
cout << "4 杂项";
SetPos(10, 11);
cout << "5 离开";
char cft0 = input('1', '5');
system("cls");
if(cft0 == '1')
{
SetPos(10, 1);
cout << "合成 - 工具类";
SetPos(10, 3);
cout << "1 木质";
SetPos(10, 5);
cout << "2 石质";
SetPos(10, 7);
cout << "3 铁质";
SetPos(10, 9);
cout << "4 金质";
SetPos(10, 11);
cout << "5 钻石/绿宝石质";
SetPos(10, 13);
cout << "6 合金质";
SetPos(10, 15);
cout << "7 灵魂物质";
SetPos(10, 17);
cout << "8 药水";
SetPos(10, 19);
cout << "9 离开";
char cft1 = input('1', '9');
system("cls");
if(cft1 == '1')
{
SetPos(10, 1);
cout << "合成 - 工具类 - 木质";
SetPos(10, 3);
cout << "1 木镐";
SetPos(10, 5);
cout << "2 木剑";
SetPos(10, 7);
cout << "3 离开";
char cft11 = input('1', '3');
if(cft11 == '1')
{
SetPos(10, 7);
cout << "需要 木头x4";
SetPos(10, 9);
cout << "1 确认";
SetPos(10, 11);
cout << "2 离开";
char cft111 = input('1', '2');
if(cft111 == '1')
{
if(block_num(block[4]) < 4) return;
block_delete(block[4]);
block_delete(block[4]);
block_delete(block[4]);
block_delete(block[4]);
item_pick(item[1]);
xp += 3;
}
else if(cft111 == '2')
{
return;
}
}
else if(cft11 == '2')
{
SetPos(10, 7);
cout << "需要 木头x4";
SetPos(10, 9);
cout << "1 确认";
SetPos(10, 11);
cout << "2 离开";
char cft112 = input('1', '2');
if(cft112 == '1')
{
if(block_num(block[4]) < 4) return;
block_delete(block[4]);
block_delete(block[4]);
block_delete(block[4]);
block_delete(block[4]);
item_pick(item[2]);
xp += 3;
}
else if(cft112 == '2')
{
return;
}
}
else if(cft11 == '3')
{
return;
}
}
else if(cft1 == '2')
{
SetPos(10, 1);
cout << "合成 - 工具类 - 石质";
SetPos(10, 3);
cout << "1 石镐";
SetPos(10, 5);
cout << "2 石剑";
SetPos(10, 7);
cout << "3 离开";
char cft12 = input('1', '3');
if(cft12 == '1')
{
SetPos(10, 9);
cout << "需要 石头x6";
SetPos(10, 11);
cout << "1 确认";
SetPos(10, 13);
cout << "2 离开";
char cft121 = input('1', '2');
if(cft121 == '1')
{
if(block_num(block[1]) < 6) return;
block_delete(block[1]);
block_delete(block[1]);
block_delete(block[1]);
block_delete(block[1]);
block_delete(block[1]);
block_delete(block[1]);
item_pick(item[3]);
xp += 3;
}
else if(cft121 == '2')
{
return;
}
}
else if(cft12 == '2')
{
SetPos(10, 9);
cout << "需要 石头x6";
SetPos(10, 11);
cout << "1 确认";
SetPos(10, 13);
cout << "2 离开";
char cft122 = input('1', '2');
if(cft122 == '1')
{
if(block_num(block[1]) < 6) return;
block_delete(block[1]);
block_delete(block[1]);
block_delete(block[1]);
block_delete(block[1]);
block_delete(block[1]);
block_delete(block[1]);
item_pick(item[4]);
xp += 3;
}
else if(cft122 == '2')
{
return;
}
}
else if(cft12 == '3')
{
return;
}
}
else if(cft1 == '3')
{
SetPos(10, 1);
cout << "合成 - 工具类 - 铁质";
SetPos(10, 3);
cout << "1 铁镐";
SetPos(10, 5);
cout << "2 铁剑";
SetPos(10, 7);
cout << "3 铁块";
SetPos(10, 9);
cout << "4 离开";
char cft13 = input('1', '4');
if(cft13 == '1')
{
SetPos(10, 11);
cout << "需要 铁锭x3";
SetPos(10, 13);
cout << "1 确认";
SetPos(10, 15);
cout << "2 离开";
char cft131 = input('1', '2');
if(cft131 == '1')
{
if(item_num(item[5]) < 3) return;
item_delete(item[5]);
item_delete(item[5]);
item_delete(item[5]);
item_pick(item[6]);
xp += 3;
}
else if(cft131 == '2')
{
return;
}
}
else if(cft13 == '2')
{
SetPos(10, 11);
cout << "需要 铁锭x3";
SetPos(10, 13);
cout << "1 确认";
SetPos(10, 15);
cout << "2 离开";
char cft132 = input('1', '2');
if(cft132 == '1')
{
if(item_num(item[5]) < 3) return;
item_delete(item[5]);
item_delete(item[5]);
item_delete(item[5]);
item_pick(item[7]);
xp += 3;
}
else if(cft132 == '2')
{
return;
}
}
else if(cft13 == '3')
{
SetPos(10, 11);
cout << "需要 铁锭x9";
SetPos(10, 13);
cout << "1 确认";
SetPos(10, 15);
cout << "2 离开";
char cft133 = input('1', '2');
if(cft133 == '1')
{
if(item_num(item[5]) < 9) return;
item_delete(item[5]);
item_delete(item[5]);
item_delete(item[5]);
item_delete(item[5]);
item_delete(item[5]);
item_delete(item[5]);
item_delete(item[5]);
item_delete(item[5]);
item_delete(item[5]);
block_pick(block[6]);
xp += 3;
}
else if(cft133 == '2')
{
return;
}
}
else if(cft13 == '4')
{
return;
}
}
else if(cft1 == '4')
{
SetPos(10, 1);
cout << "合成 - 工具类 - 金质";
SetPos(10, 3);
cout << "1 金镐";
SetPos(10, 5);
cout << "2 金剑";
SetPos(10, 7);
cout << "3 金块";
SetPos(10, 9);
cout << "4 离开";
char cft13 = input('1', '4');
if(cft13 == '1')
{
SetPos(10, 11);
cout << "需要 金锭x3";
SetPos(10, 13);
cout << "1 确认";
SetPos(10, 15);
cout << "2 离开";
char cft131 = input('1', '2');
if(cft131 == '1')
{
if(item_num(item[8]) < 3) return;
item_delete(item[8]);
item_delete(item[8]);
item_delete(item[8]);
item_pick(item[9]);
xp += 3;
}
else if(cft131 == '2')
{
return;
}
}
else if(cft13 == '2')
{
SetPos(10, 11);
cout << "需要 金锭x2";
SetPos(10, 13);
cout << "1 确认";
SetPos(10, 15);
cout << "2 离开";
char cft132 = input('1', '2');
if(cft132 == '1')
{
if(item_num(item[8]) < 2) return;
item_delete(item[8]);
item_delete(item[8]);
item_delete(item[8]);
item_pick(item[10]);
xp += 3;
}
else if(cft132 == '2')
{
return;
}
}
else if(cft13 == '3')
{
SetPos(10, 11);
cout << "需要 金锭x9";
SetPos(10, 13);
cout << "1 确认";
SetPos(10, 15);
cout << "2 离开";
char cft133 = input('1', '2');
if(cft133 == '1')
{
if(item_num(item[8]) < 9) return;
item_delete(item[8]);
item_delete(item[8]);
item_delete(item[8]);
item_delete(item[8]);
item_delete(item[8]);
item_delete(item[8]);
item_delete(item[8]);
item_delete(item[8]);
item_delete(item[8]);
block_pick(block[8]);
xp += 3;
}
else if(cft133 == '2')
{
return;
}
}
else if(cft13 == '4')
{
return;
}
}
else if(cft1 == '5')
{
SetPos(10, 1);
cout << "合成 - 工具类 - 钻石/绿宝石质";
SetPos(10, 3);
cout << "1 钻石镐";
SetPos(10, 5);
cout << "2 钻石剑";
SetPos(10, 7);
cout << "3 钻石块";
SetPos(10, 9);
cout << "4 绿宝石镐";
SetPos(10, 11);
cout << "5 绿宝石剑";
SetPos(10, 13);
cout << "6 绿宝石块";
SetPos(10, 9);
cout << "7 离开";
char cft15 = input('1', '7');
if(cft15 == '1')
{
SetPos(10, 11);
cout << "需要 钻石x6";
SetPos(10, 13);
cout << "1 确认";
SetPos(10, 15);
cout << "2 离开";
char cft151 = input('1', '2');
if(cft151 == '1')
{
if(item_num(item[11]) < 6) return;
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_pick(item[12]);
xp += 3;
}
else if(cft151 == '2')
{
return;
}
}
else if(cft15 == '2')
{
SetPos(10, 11);
cout << "需要 钻石x6";
SetPos(10, 13);
cout << "1 确认";
SetPos(10, 15);
cout << "2 离开";
char cft152 = input('1', '2');
if(cft152 == '1')
{
if(item_num(item[11]) < 6) return;
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_pick(item[13]);
xp += 3;
}
else if(cft152 == '2')
{
return;
}
}
else if(cft15 == '3')
{
SetPos(10, 11);
cout << "需要 钻石x9";
SetPos(10, 13);
cout << "1 确认";
SetPos(10, 15);
cout << "2 离开";
char cft153 = input('1', '2');
if(cft153 == '1')
{
if(item_num(item[11]) < 9) return;
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
block_pick(block[10]);
xp += 3;
}
else if(cft153 == '2')
{
return;
}
}
else if(cft15 == '4')
{
SetPos(10, 11);
cout << "需要 绿宝石x6";
SetPos(10, 13);
cout << "1 确认";
SetPos(10, 15);
cout << "2 离开";
char cft154 = input('1', '2');
if(cft154 == '1')
{
if(item_num(item[23]) < 6) return;
item_delete(item[23]);
item_delete(item[23]);
item_delete(item[23]);
item_delete(item[23]);
item_delete(item[23]);
item_delete(item[23]);
item_pick(item[24]);
xp += 3;
}
else if(cft154 == '2')
{
return;
}
}
else if(cft15 == '5')
{
SetPos(10, 11);
cout << "需要 绿宝石x6";
SetPos(10, 13);
cout << "1 确认";
SetPos(10, 15);
cout << "2 离开";
char cft155 = input('1', '2');
if(cft155 == '1')
{
if(item_num(item[23]) < 6) return;
item_delete(item[23]);
item_delete(item[23]);
item_delete(item[23]);
item_delete(item[23]);
item_delete(item[23]);
item_delete(item[23]);
item_pick(item[25]);
xp += 3;
}
else if(cft155 == '2')
{
return;
}
}
else if(cft15 == '6')
{
SetPos(10, 11);
cout << "需要 绿宝石x9";
SetPos(10, 13);
cout << "1 确认";
SetPos(10, 15);
cout << "2 离开";
char cft156 = input('1', '2');
if(cft156 == '1')
{
if(item_num(item[23]) < 9) return;
item_delete(item[23]);
item_delete(item[23]);
item_delete(item[23]);
item_delete(item[23]);
item_delete(item[23]);
item_delete(item[23]);
item_delete(item[23]);
item_delete(item[23]);
item_delete(item[23]);
block_pick(block[23]);
xp += 3;
}
else if(cft156 == '2')
{
return;
}
}
else if(cft15 == '7')
{
return;
}
}
else if(cft1 == '6')
{
SetPos(10, 1);
cout << "合成 - 工具类 - 下界合金质";
SetPos(10, 3);
cout << "1 下界合金镐";
SetPos(10, 5);
cout << "2 下界合金剑";
SetPos(10, 7);
cout << "3 下界合金块";
SetPos(10, 9);
cout << "4 离开";
char cft16 = input('1', '4');
if(cft16 == '1')
{
SetPos(10, 11);
cout << "需要 钻石x12 下界合金块x1";
SetPos(10, 13);
cout << "1 确认";
SetPos(10, 15);
cout << "2 离开";
char cft161 = input('1', '2');
if(cft161 == '1')
{
if(item_num(item[11]) < 12) return;
if(block_num(block[17]) < 1) return;
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
block_delete(block[17]);
item_pick(item[16]);
xp += 3;
}
else if(cft161 == '2')
{
return;
}
}
else if(cft16 == '2')
{
SetPos(10, 11);
cout << "需要 钻石x12 下界合金块x1";
SetPos(10, 13);
cout << "1 确认";
SetPos(10, 15);
cout << "2 离开";
char cft162 = input('1', '2');
if(cft162 == '1')
{
if(item_num(item[11]) < 12) return;
if(block_num(block[17]) < 1) return;
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
block_delete(block[17]);
item_pick(item[17]);
xp += 3;
}
else if(cft162 == '2')
{
return;
}
}
else if(cft16 == '3')
{
SetPos(10, 11);
cout << "需要 钻石块x1 下界合金锭x9";
SetPos(10, 13);
cout << "1 确认";
SetPos(10, 15);
cout << "2 离开";
char cft163 = input('1', '2');
if(cft163 == '1')
{
if(block_num(block[10]) < 1) return;
if(item_num(item[15]) < 9)
block_delete(block[10]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
block_pick(block[17]);
xp += 3;
}
else if(cft163 == '2')
{
return;
}
}
else if(cft16 == '4')
{
return;
}
}
else if(cft1 == '7')
{
SetPos(10, 1);
cout << "合成 - 工具类 - 灵魂物质";
SetPos(10, 3);
cout << "1 灵魂镐";
SetPos(10, 5);
cout << "2 灵魂剑";
SetPos(10, 7);
cout << "3 灵魂之星";
SetPos(10, 9);
cout << "3 离开";
char cft16 = input('1', '4');
if(cft16 == '1')
{
SetPos(10, 11);
cout << "需要 下界合金锭x12 灵魂之星x1";
SetPos(10, 13);
cout << "1 确认";
SetPos(10, 15);
cout << "2 离开";
char cft161 = input('1', '2');
if(cft161 == '1')
{
if(item_num(item[15]) < 12) return;
if(item_num(item[30]) < 1) return;
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[30]);
item_pick(item[31]);
xp += 3;
}
else if(cft161 == '2')
{
return;
}
}
else if(cft16 == '2')
{
SetPos(10, 11);
cout << "需要 下界合金锭x12 灵魂之星x1";
SetPos(10, 13);
cout << "1 确认";
SetPos(10, 15);
cout << "2 离开";
char cft162 = input('1', '2');
if(cft162 == '1')
{
if(item_num(item[15]) < 12) return;
if(item_num(item[30]) < 1) return;
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[15]);
item_delete(item[30]);
item_pick(item[32]);
xp += 3;
}
else if(cft162 == '2')
{
return;
}
}
else if(cft16 == '3')
{
SetPos(10, 11);
cout << "需要 下界合金块x2 魂石x1";
SetPos(10, 13);
cout << "1 确认";
SetPos(10, 15);
cout << "2 离开";
char cft163 = input('1', '2');
if(cft163 == '1')
{
if(block_num(block[17]) < 2) return;
if(block_num(block[34]) < 1) return;
block_delete(block[17]);
block_delete(block[17]);
block_delete(block[34]);
item_pick(item[30]);
xp += 3;
}
else if(cft163 == '2')
{
return;
}
}
else if(cft16 == '4')
{
return;
}
}
else if(cft1 == '8')
{
SetPos(10, 1);
cout << "合成 - 工具类 - 药水";
SetPos(10, 3);
cout << "1 生命提升药水";
SetPos(10, 5);
cout << "2 急迫药水";
SetPos(10, 7);
cout << "3 生命吸收药水";
SetPos(10, 9);
cout << "4 中毒药水";
SetPos(10, 11);
cout << "5 离开";
char cft17 = input('1', '5');
if(cft17 == '1')
{
SetPos(10, 13);
cout << "需要 水桶x1 药水量子x1";
SetPos(10, 15);
cout << "1 确认";
SetPos(10, 17);
cout << "2 离开";
char cft171 = input('1', '2');
if(cft171 == '1')
{
if(item_num(item[19]) < 1) return;
if(item_num(item[21]) < 1) return;
item_delete(item[19]);
item_delete(item[21]);
buff_give(buff[1], 2, 1200);
xp += 3;
}
}
else if(cft17 == '2')
{
SetPos(10, 13);
cout << "需要 水桶x1 药水量子x1";
SetPos(10, 15);
cout << "1 确认";
SetPos(10, 17);
cout << "2 离开";
char cft172 = input('1', '2');
if(cft172 == '1')
{
if(item_num(item[19]) < 1) return;
if(item_num(item[21]) < 1) return;
item_delete(item[19]);
item_delete(item[21]);
buff_give(buff[2], 2, 1200);
xp += 3;
}
}
else if(cft17 == '3')
{
SetPos(10, 13);
cout << "需要 水桶x1 药水量子x1";
SetPos(10, 15);
cout << "1 确认";
SetPos(10, 17);
cout << "2 离开";
char cft173 = input('1', '2');
if(cft173 == '1')
{
if(item_num(item[19]) < 1) return;
if(item_num(item[21]) < 1) return;
item_delete(item[19]);
item_delete(item[21]);
buff_give(buff[3], 2, 1200);
xp += 3;
}
}
else if(cft17 == '4')
{
SetPos(10, 13);
cout << "需要 水桶x1 药水量子x1";
SetPos(10, 15);
cout << "1 确认";
SetPos(10, 17);
cout << "2 离开";
char cft174 = input('1', '2');
if(cft174 == '1')
{
if(item_num(item[19]) < 1) return;
if(item_num(item[21]) < 1) return;
item_delete(item[19]);
item_delete(item[21]);
buff_give(buff[4], 2, 1200);
xp += 3;
}
}
}
}
else if(cft0 == '2')
{
SetPos(10, 1);
cout << "合成 - 熔炼类";
SetPos(10, 3);
cout << "1 锭熔炼";
SetPos(10, 5);
cout << "2 远古残骸熔炼";
SetPos(10, 7);
cout << "3 离开";
char cft2 = input('1', '3');
system("cls");
if(cft2 == '1')
{
SetPos(10, 1);
cout << "合成 - 熔炼类 - 锭熔炼";
SetPos(10, 3);
cout << "1 铁锭";
SetPos(10, 5);
cout << "2 金锭";
SetPos(10, 7);
cout << "3 钻石";
SetPos(10, 9);
cout << "4 下界合金锭";
SetPos(10, 11);
cout << "5 离开";
char cft21 = input('1', '5');
if(cft21 == '1')
{
SetPos(10, 13);
cout << "需要 铁矿石x1";
SetPos(10, 15);
cout << "1 确认";
SetPos(10, 17);
cout << "2 离开";
char cft211 = input('1', '2');
if(cft211 == '1')
{
if(block_num(block[5]) < 1) return;
block_delete(block[5]);
item_pick(item[5]);
xp += 3;
}
else
{
return;
}
}
else if(cft21 == '2')
{
SetPos(10, 13);
cout << "需要 金矿石x1";
SetPos(10, 15);
cout << "1 确认";
SetPos(10, 17);
cout << "2 离开";
char cft212 = input('1', '2');
if(cft212 == '1')
{
if(block_num(block[7]) < 1) return;
block_delete(block[7]);
item_pick(item[8]);
xp += 3;
}
else
{
return;
}
}
else if(cft21 == '3')
{
SetPos(10, 13);
cout << "需要 钻石矿石x1";
SetPos(10, 15);
cout << "1 确认";
SetPos(10, 17);
cout << "2 离开";
char cft213 = input('1', '2');
if(cft213 == '1')
{
if(block_num(block[9]) < 1) return;
block_delete(block[9]);
item_pick(item[11]);
xp += 3;
}
else
{
return;
}
}
else if(cft21 == '4')
{
SetPos(10, 13);
cout << "需要 下界合金碎片x4 金锭x4";
SetPos(10, 15);
cout << "1 确认";
SetPos(10, 17);
cout << "2 离开";
char cft211 = input('1', '2');
if(cft211 == '1')
{
if(item_num(item[14]) < 4) return;
if(item_num(item[8]) < 4) return;
item_delete(item[14]);
item_delete(item[14]);
item_delete(item[14]);
item_delete(item[14]);
item_delete(item[8]);
item_delete(item[8]);
item_delete(item[8]);
item_delete(item[8]);
item_pick(item[15]);
xp += 3;
}
else
{
return;
}
}
else if(cft21 == '5')
{
return;
}
}
else if(cft2 == '2')
{
SetPos(10, 1);
cout << "合成 - 熔炼类 - 远古残骸熔炼";
SetPos(10, 3);
cout << "1 下界合金碎片";
SetPos(10, 5);
cout << "2 离开";
char cft22 = input('1', '2');
if(cft22 == '1')
{
SetPos(10, 7);
cout << "需要 远古残骸x1";
SetPos(10, 9);
cout << "1 确认";
SetPos(10, 11);
cout << "2 离开";
char cft221 = input('1', '2');
if(cft221 == '1')
{
if(block_num(block[16]) < 1) return;
block_delete(block[16]);
item_pick(item[14]);
xp += 3;
}
}
}
}
else if(cft0 == '3')
{
SetPos(10, 1);
cout << "合成 - 盔甲类";
SetPos(10, 3);
cout << "1 木盔甲";
SetPos(10, 5);
cout << "2 石盔甲";
SetPos(10, 7);
cout << "3 铁盔甲";
SetPos(10, 9);
cout << "4 钻石盔甲";
SetPos(10, 11);
cout << "5 下界合金盔甲";
SetPos(10, 13);
cout << "6 离开";
SetPos(10, 15);
Color(2), cout << "Tips:盔甲制造后立即替换当前盔甲!!", Color(0);
char cft3 = input('1', '6');
if(cft3 == '1')
{
SetPos(10, 17);
cout << "需要 木头x4";
SetPos(10, 19);
cout << "1 确认";
SetPos(10, 21);
cout << "2 离开";
char cft31 = input('1', '2');
if(cft31 == '1')
{
if(block_num(block[4]) < 4) return;
block_delete(block[4]);
block_delete(block[4]);
block_delete(block[4]);
block_delete(block[4]);
armor_pick(armor[1]);
xp += 3;
}
}
else if(cft3 == '2')
{
SetPos(10, 17);
cout << "需要 石头x6";
SetPos(10, 19);
cout << "1 确认";
SetPos(10, 21);
cout << "2 离开";
char cft32 = input('1', '2');
if(cft32 == '1')
{
if(block_num(block[1]) < 6) return;
block_delete(block[1]);
block_delete(block[1]);
block_delete(block[1]);
block_delete(block[1]);
block_delete(block[1]);
block_delete(block[1]);
armor_pick(armor[2]);
xp += 3;
}
}
else if(cft3 == '3')
{
SetPos(10, 17);
cout << "需要 铁锭x3";
SetPos(10, 19);
cout << "1 确认";
SetPos(10, 21);
cout << "2 离开";
char cft33 = input('1', '2');
if(cft33 == '1')
{
if(item_num(item[5]) < 3) return;
item_delete(item[5]);
item_delete(item[5]);
item_delete(item[5]);
armor_pick(armor[3]);
xp += 3;
}
}
else if(cft3 == '4')
{
SetPos(10, 17);
cout << "需要 钻石x12";
SetPos(10, 19);
cout << "1 确认";
SetPos(10, 21);
cout << "2 离开";
char cft34 = input('1', '2');
if(cft34 == '1')
{
if(item_num(item[11]) < 12) return;
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
armor_pick(armor[4]);
xp += 3;
}
}
else if(cft3 == '5')
{
SetPos(10, 17);
cout << "需要 钻石x12 下界合金块x1";
SetPos(10, 19);
cout << "1 确认";
SetPos(10, 21);
cout << "2 离开";
char cft35 = input('1', '2');
if(cft35 == '1')
{
if(item_num(item[11]) < 12) return;
if(block_num(block[17]) < 1) return;
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
item_delete(item[11]);
block_delete(block[17]);
armor_pick(armor[5]);
xp += 3;
}
}
else if(cft3 == '6')
{
return;
}
}
else if(cft0 == '4')
{
SetPos(10, 1);
cout << "合成 - 杂项";
int page = 1, pagemax = 1;
while(1)
{
system("cls");
SetPos(10, 1);
cout << "合成 - 杂项";
SetPos(10, 3);
cout << "A 上一页 D 下一页 E 离开";
SetPos(10, 5);
cout << page << '/' << pagemax << "页";
if(page == 1)
{
SetPos(10, 7);
cout << "1 桶";
SetPos(10, 9);
cout << "2 药水量子";
SetPos(10, 11);
cout << "3 强化量子";
SetPos(10, 13);
cout << "4 海洋创造锤";
}
char cft4 = input();
if(cft4 == 'a' && page != 1) page--;
else if(cft4 == 'd' && page != pagemax) page++;
else if(cft4 == 'e')
{
return;
}
else if(cft4 >= '1' && cft4 <= '5')
{
char choose;
if(page == 1)
{
switch(cft4)
{
case '1':
SetPos(10, 15);
cout << "需要 铁锭x3";
SetPos(10, 17);
cout << "1 确认";
SetPos(10, 19);
cout << "2 离开";
choose = input('1', '2');
if(choose == '1')
{
if(item_num(item[5]) < 3) return;
item_delete(item[5]);
item_delete(item[5]);
item_delete(item[5]);
item_pick(item[18]);
xp += 3;
}
break;
case '2':
SetPos(10, 15);
cout << "需要 下界合金锭x1";
SetPos(10, 17);
cout << "1 确认";
SetPos(10, 19);
cout << "2 离开";
choose = input('1', '2');
if(choose == '1')
{
if(item_num(item[15]) < 1) return;
item_delete(item[15]);
item_pick(item[21]);
xp += 3;
}
break;
case '3':
SetPos(10, 15);
cout << "需要 海洋之星x1 药水量子x1";
SetPos(10, 17);
cout << "1 确认";
SetPos(10, 19);
cout << "2 离开";
choose = input('1', '2');
if(choose == '1')
{
if(item_num(item[21]) < 1) return;
if(block_num(block[20]) < 1) return;
item_delete(item[21]);
block_delete(block[20]);
item_pick(item[22]);
xp += 3;
}
break;
case '4':
SetPos(10, 15);
cout << "需要 海洋之星x1";
SetPos(10, 17);
cout << "1 确认";
SetPos(10, 19);
cout << "2 离开";
choose = input('1', '2');
if(choose == '1')
{
if(block_num(block[20]) < 1) return;
block_delete(block[20]);
item_pick(item[26]);
xp += 3;
}
default:
break;
}
}
}
}
}
else if(cft0 == '5')
{
return;
}
} void sea_crafting()
{
SetPos(10, 1);
cout << "海洋合成";
SetPos(10, 3);
cout << "1 强化型药水";
SetPos(10, 5);
cout << "2 离开";
char sft0 = input('1', '2');
system("cls");
if(sft0 == '1')
{
SetPos(10, 1);
cout << "海洋合成 - 强化型药水";
SetPos(10, 3);
cout << "1 强化急迫药水";
SetPos(10, 5);
cout << "2 强化中毒药水";
SetPos(10, 7);
cout << "3 离开";
char sft1 = input('1', '3');
if(sft1 == '1')
{
SetPos(10, 9);
cout << "需要 岩浆桶x1 强化量子x1";
SetPos(10, 11);
cout << "1 确认";
SetPos(10, 13);
cout << "2 离开";
char sft11 = input('1', '2');
if(sft11 == '1')
{
if(item_num(item[20]) < 1) return;
if(item_num(item[22]) < 1) return;
item_delete(item[20]);
item_delete(item[22]);
buff_give(buff[2], 4, 1200);
xp += 3;
}
}
else if(sft1 == '2')
{
SetPos(10, 9);
cout << "需要 岩浆桶x1 强化量子x1";
SetPos(10, 11);
cout << "1 确认";
SetPos(10, 13);
cout << "2 离开";
char sft12 = input('1', '2');
if(sft12 == '1')
{
if(item_num(item[20]) < 1) return;
if(item_num(item[22]) < 1) return;
item_delete(item[20]);
item_delete(item[22]);
buff_give(buff[4], 4, 1200);
xp += 3;
}
}
}
} void bomb(int x, int y, int lvl)
{
for(int i = x - lvl * 5;i <= x + lvl * 5;i++)
{
for(int j = y - lvl * 5;j <= y + lvl * 5;j++)
{
if(sqrt(abs(i - x) * abs(i - x) + abs(j - y) * abs(j - y)) <= lvl * 2)
{
block_copy(i, j, 19);
}
}
}
if(sqrt(abs(playerx - x) * abs(playerx - x) + abs(playery - y) * abs(playery - y)) <= lvl * 2)
{
attack(lvl * 4, "玩家被炸成了灰烬");
}
} void other()
{
while(1)
{
SetPos(0, 0);
cout << "属性";
SetPos(0, 2);
cout << "Z键开启合成界面";
if(now >= 5 && wpl[now - 5].id == 26)
{
Color(3), cout << " 手持海洋创造锤 可进入专项合成区";
Color(0);
}
SetPos(0, 4);
cout << "药水效果:";
if(xgnum < 5)
{
for(int i = 0;i < xgnum;i++)
{
SetPos(0, 6 + 4 * i);
cout << xgl[i].name << "[" << xgl[i].level << "级]";
SetPos(0, 7 + 4 * i);
cout << xgl[i].time / 600 << ":" << xgl[i].time % 600 / 10;
SetPos(0, 8 + 4 * i);
cout << buff_str[xgl[i].id];
}
}
else if(xgnum < 12)
{
for(int i = 0;i < xgnum;i++)
{
SetPos(0, 6 + 2 * i);
cout << xgl[i].name << "[" << xgl[i].level << "级]";
}
}
else
{
for(int i = 0;i < 12;i++)
{
SetPos(0, 6 + 2 * i);
cout << xgl[i].name << "[" << xgl[i].level << "级]";
}
} SetPos(40, 4);
cout << "基本属性:";
SetPos(40, 6);
cout << "生命值:" << health;
SetPos(40, 8);
cout << "生命值上限:" << max_health + get_buff_level(buff[1]) * 4 << endl;
SetPos(40, 10);
cout << "挖掘速度:";
if(now <= 4) cout << "0";
else cout << (10 + wpl[now - 5].speed) * (1 + get_buff_level(buff[2]) * 0.25) * (sqrt(level * 2.5 + 1) * 0.2) << "每短刻"; SetPos(40, 13);
cout << "等级:" << level;
SetPos(60, 13);
cout << "经验:" << xp << "/" << 100 + (level + 1) * 10;
int xp_of_level = 100 + (level + 1) * 10;
int xp_ge = xp * 30 / xp_of_level;
for(int i = 0;i < min(xp_ge, 30);i++) SetPos(40 + i, 15), Color(2), cout << "█";
for(int i = xp_ge;i < 30;i++) SetPos(40 + 1, 15), Color(0), cout << "█"; SetPos(40, 14);
cout << "X键返回主页面";
if(_kbhit())
{
char x = _getch();
if(x == 'z')
{
system("cls");
if(now >= 5 && wpl[now - 5].id == 26) sea_crafting();
else crafting();
system("cls");
}
else if(x == 'x')
{
system("cls");
return;
}
}
}
} void minecraft()
{
int jianweitishi = 20, wajuetishi = 0;
system("cls");
while(1)
{
Sleep(100);
//时刻流逝
short_tick++;
if(short_tick == 10)
{
short_tick = 0;
tick++;
tick_attack = false;
int zhongdulevel = get_buff_level(buff[4]);
if(zhongdulevel > 0) attack(zhongdulevel, "玩家中毒而死");
}
if(jianweitishi) jianweitishi--;
if(wajuetishi) wajuetishi--;
//处理药水效果
buff_merge();
buff_live(); //处理生命溢出
if(health >= max_health + get_buff_level(buff[1]) * 4)
{
health = max_health + get_buff_level(buff[1]) * 4;
} //处理等级提升
int i = 0;
while(xp >= 100 + (level + 1) * 10)
{
i++;
xp -= 100 + (level + 1) * 10;
level++;
if(level % 2 == 0) max_health++; //每两级加一滴血
} SetPos(0, 0);
cout << "世界与我 Craft And My";
SetPos(0, 1);
if(get_buff_level(buff[4])) Color(5);
else Color(2);
double the_mx = max_health + get_buff_level(buff[1]) * 4; //生命上限
int h = health;
int heart = h / the_mx * 10;
for(int i = 0;i < heart;i++) cout << "◆"; //生命值
int y = h / (the_mx / 10);
for(int z = heart;z < 10;z++) cout << "◇";
cout << ' ' << fixed << setprecision(1) << health << " ";
Color(0);
SetPos(0, 2);
Color(3);
for(int i = 2;i <= oxygen;i += 2) cout << "●"; //氧气值
int u = oxygen / 2;
for(int v = u + 1;v <= 10;v++) cout << "○";
cout << ' ' << fixed << setprecision(1) << oxygen << " ";
Color(0);
SetPos(0, 3);
for(int i = 2;i <= kjl.defease;i += 2) cout << "▼"; //盔甲
SetPos(69, 2); //输出玩家坐标
cout << "X:" << playerx;
SetPos(69, 4);
cout << "Y:" << playery;
for(int i = 0;i < 5;i++) //打印物品栏 方块栏
{
SetPos(69, 6 + i * 2);
if(now == i) Color(5);
else if(wajuetishi) Color(2);
cout << i << " ";
Color(0);
if(fknum[i] > 0)
{
Color(fkl[i].color);
cout << fkl[i].txt << " " << fkl[i].name;
Color(0);
cout << " " << fknum[i] << "x ";
}
else
{
cout << " ";
}
SetPos(69, 6 + (i + 5) * 2);
if(now == i + 5) Color(5);
else if(wajuetishi) Color(1);
cout << i + 5 << " ";
Color(0);
if(wpnum[i] > 0)
{
if(wpl[i].rare == 0) Color(0);
else if(wpl[i].rare == 1) Color(1);
else if(wpl[i].rare == 2) Color(3);
else if(wpl[i].rare == 3) Color(4);
else Color(-1); if(wpl[i].rare == 4)
{
string s = wpl[i].name;
for(int i = 0;i < s.size();i++)
{
Color(-1), cout << s[i];
}
}
else cout << wpl[i].name; if(wpl[i].rare == 4) Color(2);
cout << " " << wpnum[i] << "x ";
Color(0);
}
else
{
cout << " ";
}
}
SetPos(69, 26);
cout << "盔甲:" << kjl.name;
SetPos(0, 24);
cout << " ";
SetPos(0, 25);
cout << " ";
SetPos(0, 26);
cout << "E键开启属性界面";
SetPos(0, 27);
cout << "S键保存当前存档";
if(gamemode == 0 || gamemode == 2)
{
SetPos(0, 28);
cout << "Q键摧毁手持物品";
}
else
{
SetPos(0, 28);
cout << "Q键选择手持物品";
}
SetPos(0, 5);
//输出地图
int j = 4;
for(int i = playery + 13;i >= playery - 3;i--)
{
j++;
SetPos(0, j);
for(int j = playerx - 12;j <= playerx + 12;j++)
{
if(i == playery && j == playerx)
{
cout << "[]";
continue;
} //进入游戏后一秒键位提示
if(jianweitishi)
{
if(world[j][i].fluid)
{
if(j == playerx && i == playery + 1)
{
Color(5), cout << "W^";
Color(0);
continue;
}
else if(j == playerx - 1 && i == playery)
{
Color(5), cout << "A<";
Color(0);
continue;
}
else if(j == playerx + 1 && i == playery)
{
Color(5), cout << "D>";
Color(0);
continue;
}
}
else
{
if(j == playerx && i == playery + 1)
{
Color(2), cout << "I^";
Color(0);
continue;
}
else if(j == playerx && i == playery - 1)
{
Color(2), cout << "Kv";
Color(0);
continue;
}
else if(j == playerx - 1 && i == playery)
{
Color(2), cout << "J<";
Color(0);
continue;
}
else if(j == playerx + 1 && i == playery)
{
Color(2), cout << "L>";
Color(0);
continue;
}
}
} Color(world[j][i].color), cout << world[j][i].txt;
Color(0);
}
}
//流体下降
for(int i = playery + 12;i >= playery - 3;i--)
{
for(int j = playerx - 12;j <= playerx + 12;j++)
{
if(world[j][i].fluid && world[j][i - 1].id == 19)
{
block_copy(j, i - 1, world[j][i].id);
}
}
}
//生命恢复
if(short_tick == 9 && tick % 2 == 0 && health < the_mx && !tick_attack)
{
health++;
if(health > the_mx) health = the_mx;
}
//重力下落
if(zhuiluo < 4 && (tick * 10 + short_tick) % 3 == 0)
{
if(world[playerx][playery - 1].fluid)
{
playery--;
zhuiluo++;
}
else //落地
{
if(zhuiluo > 9) attack((zhuiluo - 9), "玩家摔死了");//摔落伤害
zhuiluo = 0;
}
}
//快速下落
else if(zhuiluo >= 4 && zhuiluo < 8 && short_tick % 2 == 0)
{
if(world[playerx][playery - 1].fluid)
{
playery--;
zhuiluo++;
}
else //落地
{
if(zhuiluo > 9) attack((zhuiluo - 9), "玩家摔死了"); //摔落伤害
zhuiluo = 0;
}
}
//危险下落
else if(zhuiluo >= 8 && short_tick % 3 <= 1)
{
if(world[playerx][playery - 1].fluid)
{
playery--;
zhuiluo++;
}
else //落地
{
if(zhuiluo > 9) attack(sqrt(zhuiluo - 9), "玩家摔死了"); //摔落伤害
zhuiluo = 0;
}
}
//岩浆
if(world[playerx][playery].id == 13 && short_tick % 2 == 1)
{
attack(2, "玩家在熔岩里游泳");
}
//地幔
if(world[playerx][playery].id == 18)
{
attack(5, "玩家在地幔里游泳");
}
//死水
if(world[playerx][playery].id == 35)
{
attack(5, "玩家在死水中化为飞灰");
}
//氧气值下降
if(short_tick == 0)
{
if(world[playerx][playery].fluid && !(world[playerx][playery].name == "空气"))
{
oxygen--;
if(oxygen < 0)
{
//氧气耗尽
oxygen = 0;
attack(1, "玩家窒息而死");
}
}
else if(oxygen < 20)
{
oxygen++; //若玩家不在流体中则恢复氧气
}
}
if(energy > 0) //跳跃
{
if(world[playerx][playery + 1].fluid)
{
playery++;
energy -= 500;
}
else energy = 0;
if(energy < 0) energy = 0;
}
char x;
if(_kbhit()) //按键点击
{
x = _getch();
if(x == 'a')
{
if(world[playerx - 1][playery].fluid)
{
playerx--;
}
wjjd = 0;
}
else if(x == 'd')
{
if(world[playerx + 1][playery].fluid)
{
playerx++;
}
wjjd = 0;
}
else if(x == 'w')
{
energy += 1000;
wjjd = 0;
}
else if(x >= '0' && x <= '9')
{
now = x - '0';
wjjd = 0;
}
else if(x == 'i') //挖掘上方方块/放置方块在上方
{
//桶的收集判定
if(now >= 5 && wpl[now - 5].id == 18)
{
if(world[playerx][playery + 1].id == 12)
{
item_delete(item[18]);
item_pick(item[19]);
block_copy(playerx, playery + 1, 19);
}
else if(world[playerx][playery + 1].id == 13)
{
item_delete(item[18]);
item_pick(item[20]);
block_copy(playerx, playery + 1, 19);
}
else if(world[playerx][playery + 1].id == 35)
{
item_delete(item[18]);
item_pick(item[29]);
block_copy(playerx, playery + 1, 19);
}
}
//宝藏探测器判定
if(now >= 5 && wpl[now - 5].id == 28)
{
int mindis = 100000000, mx, my;
for(int x = 101;x <= 2300;x++)
{
for(int y = 1; y <= 1100;y++)
{
if(world[x][y].id == 28)
{
if(mindis > abs(x - playerx) + abs(y - playery)) mx = x, my = y;
mindis = min(mindis, abs(x - playerx) + abs(y - playery));
}
}
}
if(mindis != 100000000)
{
playerx = mx;
playery = my;
}
}
//TNT判定
if(world[playerx][playery + 1].id == 29)
{
block_copy(playerx, playery + 1, 30);
Sleep(1000);
block_copy(playerx, playery + 1, 31);
Sleep(1000);
block_copy(playerx, playery + 1, 32);
Sleep(1000);
bomb(playerx, playery + 1, 4);
}
//其它判定
if(world[playerx][playery + 1].fluid && now <= 4)
{
wajuetishi = 20;
if(fknum[now] > 0 && fkl[now].id != 0)
{
block_copy(playerx, playery + 1, fkl[now].id);
block_delete(fkl[now]);
}
}
else if(!world[playerx][playery + 1].fluid && now >= 5)
{
wajuetishi = 20;
if(gamemode == 1)
{
block_copy(playerx, playery + 1, 19);
continue;
}
wjjd += (10 + wpl[now - 5].speed) * (1 + get_buff_level(buff[2]) * 0.25) * (sqrt(level * 2.5 + 1) * 0.2);
if(wjjd >= world[playerx][playery + 1].hard)
{
wjjd = 0;
if(max(0, wpl[now - 5].level) >= world[playerx][playery + 1].level)
{
block_pick(world[playerx][playery + 1]);
}
block_copy(playerx, playery + 1, 19);
xp++;
}
else
{
SetPos(0, 24);
cout << "正在挖掘: " << world[playerx][playery + 1].name;
SetPos(0, 25);
cout << "进度: ";
cout << 1.0 * wjjd / world[playerx][playery + 1].hard * 100;
cout << "%";
}
}
}
else if(x == 'k')
{
//桶的收集判定
if(now >= 5 && wpl[now - 5].id == 18)
{
if(world[playerx][playery - 1].id == 12)
{
item_delete(item[18]);
item_pick(item[19]);
block_copy(playerx, playery - 1, 19);
}
else if(world[playerx][playery - 1].id == 13)
{
item_delete(item[18]);
item_pick(item[20]);
block_copy(playerx, playery - 1, 19);
}
else if(world[playerx][playery - 1].id == 35)
{
item_delete(item[18]);
item_pick(item[29]);
block_copy(playerx, playery - 1, 19);
}
}
//宝藏探测器判定
if(now >= 5 && wpl[now - 5].id == 28)
{
int mindis = 100000000, mx, my;
for(int x = 101;x <= 2300;x++)
{
for(int y = 1; y <= 1100;y++)
{
if(world[x][y].id == 28)
{
if(mindis > abs(x - playerx) + abs(y - playery)) mx = x, my = y;
mindis = min(mindis, abs(x - playerx) + abs(y - playery));
}
}
}
if(mindis != 100000000)
{
playerx = mx;
playery = my;
}
}
//TNT判定
if(world[playerx][playery - 1].id == 29)
{
block_copy(playerx, playery - 1, 30);
Sleep(1000);
block_copy(playerx, playery - 1, 31);
Sleep(1000);
block_copy(playerx, playery - 1, 32);
Sleep(1000);
bomb(playerx, playery - 1, 4);
}
//其它判定
if(world[playerx][playery - 1].fluid && now <= 4)
{
wajuetishi = 20;
if(fknum[now] > 0 && fkl[now].id != 0)
{
block_copy(playerx, playery - 1, fkl[now].id);
block_delete(fkl[now]);
}
}
else if(!world[playerx][playery - 1].fluid && now >= 5)
{
wajuetishi = 20;
if(gamemode == 1)
{
block_copy(playerx, playery - 1, 19);
continue;
}
wjjd += (10 + wpl[now - 5].speed) * (1 + get_buff_level(buff[2]) * 0.25) * (sqrt(level * 2.5 + 1) * 0.2);
if(wjjd >= world[playerx][playery - 1].hard)
{
wjjd = 0;
if(max(0, wpl[now - 5].level) >= world[playerx][playery - 1].level)
{
block_pick(world[playerx][playery - 1]);
}
block_copy(playerx, playery - 1, 19);
xp++;
}
else
{
SetPos(0, 24);
cout << "正在挖掘: " << world[playerx][playery - 1].name;
SetPos(0, 25);
cout << "进度: ";
cout << 1.0 * wjjd / world[playerx][playery - 1].hard * 100;
cout << "%";
}
}
}
else if(x == 'j')
{
//桶的收集判定
if(now >= 5 && wpl[now - 5].id == 18)
{
if(world[playerx - 1][playery].id == 12)
{
item_delete(item[18]);
item_pick(item[19]);
block_copy(playerx - 1, playery, 19);
}
else if(world[playerx - 1][playery].id == 13)
{
item_delete(item[18]);
item_pick(item[20]);
block_copy(playerx - 1, playery, 19);
}
else if(world[playerx - 1][playery].id == 35)
{
item_delete(item[18]);
item_pick(item[29]);
block_copy(playerx - 1, playery, 19);
}
}
//宝藏探测器判定
if(now >= 5 && wpl[now - 5].id == 28)
{
int mindis = 100000000, mx, my;
for(int x = 101;x <= 2300;x++)
{
for(int y = 1; y <= 1100;y++)
{
if(world[x][y].id == 28)
{
if(mindis > abs(x - playerx) + abs(y - playery)) mx = x, my = y;
mindis = min(mindis, abs(x - playerx) + abs(y - playery));
}
}
}
if(mindis != 100000000)
{
playerx = mx;
playery = my;
}
}
//TNT判定
if(world[playerx - 1][playery].id == 29)
{
block_copy(playerx - 1, playery, 30);
Sleep(1000);
block_copy(playerx - 1, playery, 31);
Sleep(1000);
block_copy(playerx - 1, playery, 32);
Sleep(1000);
bomb(playerx - 1, playery, 4);
}
//其它判定
if(world[playerx - 1][playery].fluid && now <= 4)
{
wajuetishi = 20;
if(fknum[now] > 0 && fkl[now].id != 0)
{
block_copy(playerx - 1, playery, fkl[now].id);
block_delete(fkl[now]);
}
}
else if(!world[playerx - 1][playery].fluid && now >= 5)
{
wajuetishi = 20;
if(gamemode == 1)
{
block_copy(playerx - 1, playery, 19);
continue;
}
wjjd += (10 + wpl[now - 5].speed) * (1 + get_buff_level(buff[2]) * 0.25) * (sqrt(level * 2.5 + 1) * 0.2);
if(wjjd >= world[playerx - 1][playery].hard)
{
wjjd = 0;
if(max(0, wpl[now - 5].level) >= world[playerx - 1][playery].level)
{
block_pick(world[playerx - 1][playery]);
}
block_copy(playerx - 1, playery, 19);
xp++;
}
else
{
SetPos(0, 24);
cout << "正在挖掘: " << world[playerx - 1][playery].name;
SetPos(0, 25);
cout << "进度: ";
cout << 1.0 * wjjd / world[playerx - 1][playery].hard * 100;
cout << "%";
}
}
}
else if(x == 'l')
{
//桶的收集判定
if(now >= 5 && wpl[now - 5].id == 18)
{
if(world[playerx + 1][playery].id == 12)
{
item_delete(item[18]);
item_pick(item[19]);
block_copy(playerx + 1, playery, 19);
}
else if(world[playerx + 1][playery].id == 13)
{
item_delete(item[18]);
item_pick(item[20]);
block_copy(playerx + 1, playery, 19);
}
else if(world[playerx - 1][playery].id == 35)
{
item_delete(item[18]);
item_pick(item[29]);
block_copy(playerx - 1, playery, 19);
}
}
//宝藏探测器判定
if(now >= 5 && wpl[now - 5].id == 28)
{
int mindis = 100000000, mx, my;
for(int x = 101;x <= 2300;x++)
{
for(int y = 1; y <= 1100;y++)
{
if(world[x][y].id == 28)
{
if(mindis > abs(x - playerx) + abs(y - playery)) mx = x, my = y;
mindis = min(mindis, abs(x - playerx) + abs(y - playery));
}
}
}
if(mindis != 100000000)
{
playerx = mx;
playery = my;
}
}
//TNT判定
if(world[playerx + 1][playery].id == 29)
{
block_copy(playerx + 1, playery, 30);
Sleep(1000);
block_copy(playerx + 1, playery, 31);
Sleep(1000);
block_copy(playerx + 1, playery, 32);
Sleep(1000);
bomb(playerx + 1, playery, 4);
}
//其它判定
if(world[playerx + 1][playery].fluid && now <= 4)
{
wajuetishi = 20;
if(fknum[now] > 0 && fkl[now].id != 0)
{
block_copy(playerx + 1, playery, fkl[now].id);
block_delete(fkl[now]);
}
}
else if(!world[playerx + 1][playery].fluid && now >= 5)
{
wajuetishi = 20;
if(gamemode == 1)
{
block_copy(playerx + 1, playery, 19);
continue;
}
wjjd += (10 + wpl[now - 5].speed) * (1 + get_buff_level(buff[2]) * 0.25) * (sqrt(level * 2.5 + 1) * 0.2);
if(wjjd >= world[playerx + 1][playery].hard)
{
wjjd = 0;
if(max(0, wpl[now - 5].level) >= world[playerx + 1][playery].level)
{
block_pick(world[playerx + 1][playery]);
}
block_copy(playerx + 1, playery, 19);
xp++;
}
else
{
SetPos(0, 24);
cout << "正在挖掘: " << world[playerx + 1][playery].name;
SetPos(0, 25);
cout << "进度: ";
cout << 1.0 * wjjd / world[playerx + 1][playery].hard * 100;
cout << "%";
}
}
}
else if(x == 'e')
{
system("cls");
other();
system("cls");
}
else if(x == 's')
{
print_data();
}
else if(x == 'q')
{
if(gamemode == 1) item_choose(); //创造物品选择器
else if(now >= 4) wpnum[now - 5]--;
}
else if(x == 'z')
{
jianweitishi += 20;
}
else if(x == '/')
{
//命令
SetPos(0, 30);
cout << "/";
SetPos(0, 31);
cout << "输入命令";
SetPos(0, 33);
cout << "请勿随意换行 否则后果自负";
SetPos(1, 30);
string main_com;
cin >> main_com; //关键字
if(main_com == "gamemode")
{
int mode;
cin >> mode;
if(mode < 0 || mode > 2)
{
SetPos(0, 32);
cout << "错误:游戏模式错误";
}
else
{
gamemode = mode;
SetPos(0, 32);
cout << "游戏模式已更新:";
if(gamemode == 0) cout << "生存模式";
else if(gamemode == 1) cout << "创造模式";
else if(gamemode == 2) cout << "极限模式";
}
}
else if(main_com == "give")
{
string type;
cin >> type;
if(type == "block")
{
int id, num;
cin >> id >> num;
if(id < 0 || id > block_max)
{
SetPos(0, 32);
cout << "错误:方块ID越界";
}
else
{
fkl[now].id = id;
fkl[now].fluid = block[fkl[now].id].fluid;
fkl[now].hard = block[fkl[now].id].hard;
fkl[now].color = block[fkl[now].id].color;
fkl[now].level = block[fkl[now].id].level;
fkl[now].name = block[fkl[now].id].name;
fkl[now].txt = block[fkl[now].id].txt;
fknum[now] = num;
SetPos(0, 32);
cout << "已将方块栏第" << now << "处";
cout << "设为" << block[id].name;
}
}
else if(type == "item")
{
int id, num;
cin >> id >> num;
if(id < 0 || id > item_max)
{
SetPos(0, 32);
cout << "错误:物品ID越界";
}
else
{
wpl[now - 5].id = id;
wpl[now - 5].hurt = item[wpl[now - 5].id].hurt;
wpl[now - 5].level = item[wpl[now - 5].id].level;
wpl[now - 5].rare = item[wpl[now - 5].id].rare;
wpl[now - 5].speed = item[wpl[now - 5].id].speed;
wpl[now - 5].name = item[wpl[now - 5].id].name;
wpnum[now - 5] = num;
SetPos(0, 32);
cout << "已将物品栏第" << now - 5 << "处";
cout << "设为" << item[id].name;
}
}
else if(type == "effect")
{
int id, time, level;
cin >> id >> time >> level;
if(id < 0 || id > buff_max)
{
SetPos(0, 32);
cout << "错误:效果ID越界";
}
else
{
buff_give(buff[id], level, time);
buff_merge();
SetPos(0, 32);
cout << "已给予" << level << "级" << buff[id].name;
}
}
else
{
SetPos(0, 32);
cout << "错误:没有该类型";
}
}
else if(main_com == "delete")
{
string type;
cin >> type;
if(type == "block")
{
int id;
cin >> id;
if(id < 0 || id > block_max)
{
SetPos(0, 32);
cout << "错误:方块ID越界";
}
else
{
block_delete(block[id]);
SetPos(0, 32);
cout << "已删除 " << block[id].name;
}
}
else if(type == "item")
{
int id;
cin >> id;
if(id < 0 || id > item_max)
{
SetPos(0, 32);
cout << "错误:物品ID越界";
}
else
{
item_delete(item[id]);
SetPos(0, 32);
cout << "已删除 " << item[id].name;
}
}
else
{
SetPos(0, 32);
cout << "错误:没有该类型";
}
}
else if(main_com == "add_xp")
{
int ax;
cin >> ax;
if(ax < 0)
{
SetPos(0, 32);
cout << "错误:不能降低xp" << endl;
}
else
{
xp += ax;
}
}
else if(main_com == "bomb")
{
int lvl;
cin >> lvl;
if(lvl < 0)
{
SetPos(0, 32);
cout << "错误:爆炸等级不能为负数" << endl;
}
else if(lvl > 20)
{
SetPos(0, 32);
cout << "错误:爆炸等级不能高于20" << endl;
}
else
{
bomb(playerx, playery, lvl);
}
}
else if(main_com == "tp")
{
int x, y;
cin >> x >> y;
playerx = x;
playery = y;
block_copy(playerx, playery, 19);
}
else if(main_com == "kill")
{
attack(1e9, "玩家被一种奇怪的力量抹杀");
}
else if(main_com == "attack")
{
int num;
cin >> num;
attack(num, "玩家被一种奇怪的力量抹杀");
}
else if(main_com == "health")
{
int num;
cin >> num;
health += num;
}
else if(main_com == "set_health")
{
int new_health;
cin >> new_health;
health = new_health;
attack(0, "玩家被一种奇怪的力量抹杀");
}
else if(main_com == "set_oxygen")
{
int new_oxygen;
cin >> new_oxygen;
if(new_oxygen >= 20 || new_oxygen < 0)
{
SetPos(0, 32);
cout << "错误:氧气值不在正常范围内" << endl;
}
else
{
oxygen = new_oxygen;
}
}
else
{
SetPos(0, 32);
cout << "错误:未知命令";
}
SetPos(0, 33);
cout << " ";
SetPos(0, 33);
system("pause");
SetPos(0, 30);
cout << " ";
SetPos(0, 31);
cout << " ";
SetPos(0, 32);
cout << " ";
SetPos(0, 33);
cout << " ";
}
}
else wjjd = 0;
}
} void jiaocheng()
{
SetPos(2, 2);
Color(5), cout << "世界与我 Craft And My 新手教程" << endl;
Sleep(400);
SetPos(2, 4);
Color(1), cout << "这款游戏是2D版的";
Color(6), cout << "我的世界(Minecraft)";
Sleep(400);
SetPos(2, 6);
Color(0), cout << "游戏的第一项基本操作是移动" << endl;
Sleep(400);
SetPos(42, 4);
Color(5), cout << "w";
SetPos(2, 8);
cout << "现在跳跃 ";
char x = input('w', 'w');
SetPos(40, 6);
Color(5), cout << "a";
SetPos(2, 8);
cout << "现在向左移动";
x = input('a', 'a');
SetPos(44, 6);
Color(5), cout << "d";
SetPos(2, 8);
cout << "现在向右移动";
x = input('d', 'd');
SetPos(2, 8);
cout << "做的好! ";
Sleep(400);
SetPos(2, 10);
Color(0), cout << "你可以使用另一套按键挖掘或放置方块" << endl;
Sleep(400);
int cnt[4] = {5, 5, 5, 5};
int rank = 0, now = 0;
SetPos(2, 14);
cout << "持续点击方块直到它变成白色";
while(cnt[0] || cnt[1] || cnt[2] || cnt[3])
{
Sleep(50);
rank++;
if(rank % 10 == 0)
{
Color(0);
if(now == 0)
{
now++;
SetPos(2, 12);
cout << "使用 i 挖掘上面方块";
}
else if(now == 1)
{
now++;
SetPos(2, 12);
cout << "使用 j 挖掘左面方块";
}
else if(now == 2)
{
now++;
SetPos(2, 12);
cout << "使用 l 挖掘右面方块";
}
else if(now == 3)
{
now = 0;
SetPos(2, 12);
cout << "使用 k 挖掘下面方块";
}
}
SetPos(62, 4);
Color(cnt[0]), cout << "i";
SetPos(60, 6);
Color(cnt[1]), cout << "j";
SetPos(64, 6);
Color(cnt[2]), cout << "l";
SetPos(62, 8);
Color(cnt[3]), cout << "k";
char y = ' ';
if(_kbhit()) y = input();
if(y == 'i') cnt[0] = max(cnt[0] - 1, 0);
if(y == 'j') cnt[1] = max(cnt[1] - 1, 0);
if(y == 'l') cnt[2] = max(cnt[2] - 1, 0);
if(y == 'k') cnt[3] = max(cnt[3] - 1, 0);
}
Color(0);
SetPos(2, 12);
cout << "你完成了这项任务! " << endl;
Sleep(400);
SetPos(2, 16);
Color(7), cout << "注意,只有手中拿物品的时候才能挖掘" << endl;
Sleep(800);
SetPos(2, 18);
Color(0), cout << "在你的物品栏中,0~4为方块 5~9为物品" << endl;
SetPos(2, 20);
Color(2), cout << "0 1 2 3 4 ";
Color(1), cout << "5 6 7 8 9";
SetPos(2, 22);
Color(0), cout << "地图中会生成许多结构 等待着你去探索" << endl;
Sleep(1000);
SetPos(2, 24);
cout << "新手教程到此结束,现在,生成你的第一张地图!" << endl;
Sleep(1000);
SetPos(2, 26);
system("pause");
system("cls");
cout << "你的第一张地图正在生成中 0%" << endl;
init();
cout << "50%";
print_data();
cout << "100%";
} int main()
{
//世界准备
system("mode con cols=130 lines=35");
srand(time(0));
HideCursor();
SetConsoleTitle("世界与我 0.8_v2.3");
cundang:
cout << "Craft and My: 世界与我" << endl;
cout << "1 使用原先存档" << endl;
cout << "2 重置新的世界" << endl;
cout << "3 查看更新日志" << endl;
cout << "4 新手教程(";
Color(5), cout << "新人必看";
Color(0), cout << ")" << endl;
cout << "版本: 测试版0.8_v2.3" << endl;
char n = input('1', '4');
if(n == '1') input_data();
else if(n == '2')
{
cout << "世界种子:(数字 输入0以随机选择)" << endl;
int zhongzi;
cin >> zhongzi;
if(zhongzi != 0) srand(zhongzi);
cout << "选择模式:" << endl;
cout << "1 生存:" << endl;
cout << " 挖掘 战斗 成为英雄!" << endl;
cout << "2 创造:" << endl;
cout << " 建造 规划 成为上帝!" << endl;
cout << "3 极限:" << endl;
cout << " 求生 变强 成为王者!" << endl;
char m = input('1', '3');
if(m == '1') gamemode = 0;
else if(m == '2') gamemode = 1;
else gamemode = 2;
system("cls");
SetPos(0, 0);
cout << "Map 地图生成中 0%" << endl;
init();
cout << "50%" << endl;
print_data();
cout << "100%" << endl;
system("cls");
srand(time(0));
}
else if(n == '3')
{
system("cls");
cout << "更新日志" << endl;
int page = 1, pagemax = 3;
while(1)
{
Color(0);
system("cls");
cout << "A 上一页 D 下一页 E退出" << endl;
cout << page << '/' << pagemax << "页" << endl;
if(page == 1)
{
Color(6), cout << "(1) 0.6pre1" << endl;
Color(6), cout << "(2) 0.6pre2" << endl;
Color(5), cout << "(3) 0.6" << endl;
Color(6), cout << "(4) 0.7pre1" << endl;
Color(6), cout << "(5) 0.7pre2" << endl;
Color(6), cout << "(6) 0.7pre3" << endl;
Color(6), cout << "(7) 0.7pre4" << endl;
Color(5), cout << "(8) 0.7" << endl;
Color(5), cout << "(9) 0.7a" << endl;
}
else if(page == 2)
{
Color(5), cout << "(1) 0.7b" << endl;
Color(5), cout << "(2) 0.7c" << endl;
Color(6), cout << "(3) 0.8pre1" << endl;
Color(6), cout << "(4) 0.8pre1.1" << endl;
Color(6), cout << "(5) 0.8pre1.2" << endl;
Color(6), cout << "(6) 0.8pre2" << endl;
Color(6), cout << "(7) 0.8pre2.1" << endl;
Color(5), cout << "(8) 0.8_v1" << endl;
Color(5), cout << "(9) 0.8_v2" << endl;
}
else if(page == 3)
{
Color(5), cout << "(1) 0.8_v2.1" << endl;
Color(5), cout << "(2) 0.8_v2.2" << endl;
Color(5), cout << "(3) 0.8_v2.3" << endl;
Color(0), cout << "(4)" << endl;
Color(0), cout << "(5)" << endl;
Color(0), cout << "(6)" << endl;
Color(0), cout << "(7)" << endl;
Color(0), cout << "(8)" << endl;
Color(0), cout << "(9)" << endl;
}
char n = input();
if(n == 'a')
{
if(page != 1) page--;
}
else if(n == 'd')
{
if(page != pagemax) page++;
}
else if(n >= '1' && n <= '9')
{
if(page == 1)
{
switch(n)
{
case '1':
Color(6), cout << "内部版0.6pre1" << endl, Color(0);
cout << "- 更新2种新的效果" << endl;
cout << "- 更新4种新的方块" << endl;
cout << "- 新增更新日志栏" << endl;
cout << "- 更新血量栏的颜色" << endl;
system("pause");
system("cls");
break;
case '2':
Color(6), cout << "内部版0.6pre2" << endl, Color(0);
cout << "- 更新1个新的配方栏" << endl;
cout << "- 使药水配方能够合成" << endl;
cout << "- 修改属性界面" << endl;
cout << "- 修改日志界面" << endl;
cout << "- 使桶能够收集流体" << endl;
cout << "- 修复一些漏洞" << endl;
system("pause");
system("cls");
break;
case '3':
Color(5), cout << "测试版0.6" << endl, Color(0);
cout << "- 更新2个新的命令" << endl;
cout << "- 新增命令系统" << endl;
cout << "- 修复一些漏洞" << endl;
system("pause");
system("cls");
break;
case '4':
Color(6), cout << "内部版0.7pre1" << endl, Color(0);
cout << "- 更新4个方块 5个物品" << endl;
cout << "- 增加结构 海之环" << endl;
cout << "- 扩大地图(与之前存档不兼容)" << endl;
system("pause");
system("cls");
break;
case '5':
Color(6), cout << "内部版0.7pre2" << endl, Color(0);
cout << "- 更新海洋合成专区" << endl;
cout << "- 新增Z键键位提示" << endl;
cout << "- 修复一些漏洞" << endl;
system("pause");
system("cls");
break;
case '6':
Color(6), cout << "内部版0.7pre3" << endl, Color(0);
cout << "- 修改游戏名称" << endl;
system("pause");
system("cls");
break;
case '7':
Color(6), cout << "内部版0.7pre4" << endl, Color(0);
cout << "- 修复一些漏洞" << endl;
system("pause");
system("cls");
break;
case '8':
Color(5), cout << "测试版0.7" << endl, Color(0);
cout << "- 修改give命令" << endl;
cout << "- 新增1个命令" << endl;
cout << "- 修改主界面" << endl;
cout << "- 重置存档时允许输入种子" << endl;
cout << "- 修复一些漏洞" << endl;
system("pause");
system("cls");
break;
case '9':
Color(5), cout << "测试版0.7a" << endl, Color(0);
cout << "- 修改提升了程序的兼容性" << endl;
system("pause");
system("cls");
break;
default:
break;
}
}
else if(page == 2)
{
switch(n)
{
case '1':
Color(5), cout << "测试版0.7b" << endl, Color(0);
cout << "- 修复了0.7pre1以来致命的错误(错误发现者 武意程先生)" << endl;
system("pause");
system("cls");
break;
case '2':
Color(5), cout << "测试版0.7c" << endl, Color(0);
cout << "- 增加了几种新的树" << endl;
system("pause");
system("cls");
break;
case '3':
Color(6), cout << "内部版0.8pre1" << endl, Color(0);
cout << "- 全新结构:于苗神殿登场!" << endl;
cout << "- 全新结构:宝藏岛登场!" << endl;
cout << "- 下界地形优化:不再填满方块!" << endl;
cout << "- 新增多个物品、方块" << endl;
cout << "- 新增等级系统" << endl;
cout << "- 其它一些小改动or小优化" << endl;
system("pause");
system("cls");
break;
case '4':
Color(6), cout << "内部版0.8pre1.1" << endl, Color(0);
cout << "- 宝藏探测器的一点小更改" << endl;
cout << "- 补上了0.8pre1漏掉的一个小改动" << endl;
cout << "- 等级系统BUG修复" << endl;
system("pause");
system("cls");
break;
case '5':
Color(6), cout << "内部版0.8pre1.2" << endl, Color(0);
cout << "- 大整改!!!" << endl;
cout << "- 爆炸更新:添加了巨大的爆炸系统!" << endl;
cout << "- 指令更新:增加了许多种指令!" << endl;
cout << "- 伤害更新:大幅提升了高伤害时的减免!" << endl;
cout << "- 经验更新:经验等级现在与生命值和挖掘速度挂钩!" << endl;
cout << "- BUG 修改:修改了许多BUG !" << endl;
system("pause");
system("cls");
break;
case '6':
Color(6), cout << "内部版0.8pre2" << endl, Color(0);
cout << "- 修改代码结构" << endl;
system("pause");
system("cls");
break;
case '7':
Color(6), cout << "内部版0.8pre2.1" << endl, Color(0);
cout << "- 灵魂套前导预告:灵魂地牢" << endl;
cout << "- 灵魂地牢:大型地牢结构(好吧没多大),内部含有珍贵魂石" << endl;
system("pause");
system("cls");
break;
case '8':
Color(5), cout << "测试版0.8_v1" << endl, Color(0);
cout << "- 灵魂地牢更新:" << endl;
cout << "- 地牢扩大,增加死水池" << endl;
cout << "- 预计地牢在接下来几个版本里将会持续扩张" << endl;
cout << "- 修复了死亡后重生在地底的BUG" << endl;
cout << "- 新增一个修改氧气值的指令" << endl;
cout << "- 更改伤害指令的死亡信息" << endl;
system("pause");
system("cls");
break;
case '9':
Color(5), cout << "测试版0.8_v2" << endl, Color(0);
cout << "- 灵魂地牢更新:" << endl;
cout << "- 地牢再一次扩大 增加了几个目前没用的房间" << endl;
cout << "- 地牢石和魂石的硬度大幅提升 成为目前可以破坏的最坚硬的物质" << endl;
cout << "- 新增灵魂装备 目前灵魂装备是全游戏最强的装备" << endl;
cout << "- 修改了合成中的一些BUG" << endl;
cout << "- BETA测试专属功能:x=1200格下方必生成灵魂地牢" << endl;
cout << "- 修复了日志栏一直跳转不显示目录的BUG" << endl;
system("pause");
system("cls");
break;
default:
break;
}
}
else if(page == 3)
{
switch(n)
{
case '1':
Color(5), cout << "测试版0.8_v2.1" << endl, Color(0);
cout << "- 改了一下生成 现在不会卡崩了" << endl;
cout << "- 船新新手教程 基础操作手把手指引!" << endl;
system("pause");
system("cls");
break;
case '2':
Color(5), cout << "测试版0.8_v2.2" << endl, Color(0);
cout << "- 改摔伤 降低了摔落伤害 同时修复了单次坠落格数过高时无法再跳跃的问题" << endl;
cout << "- 修改了硬度系统 增高降低了某些方块的硬度 调高了一些镐子的挖掘速度" << endl;
cout << "- 增大了海之环" << endl;
system("pause");
system("cls");
case '3':
Color(5), cout << "测试版0.8_v2.3" << endl, Color(0);
cout << "- 修改宝藏岛 让它的生成变得更难" << endl;
cout << "- 增加了未完成的下界要塞:生成机制重做中" << endl;
system("pause");
system("cls");
default:
break;
}
}
}
else if(n == 'e')
{
system("cls");
goto cundang;
}
}
}
else if(n == '4')
{
system("cls");
jiaocheng();
}
minecraft();
return 0;
}

C++版的Mc的更多相关文章

  1. 123457123456#4#----com.MC.mathGame246----前拼后广--数学Q版训练Game-mc4444

    com.MC.mathGame246----前拼后广--数学Q版训练Game-mc

  2. 美版MC 使用

    备份 C:\ProgramData\TS Support\MultiCharts .NET\StudyServer\Techniques\CS pledit 无法打开 解决方法 regedit hke ...

  3. [No000054] Windows 下Python3.5, NoteBook增强版安装

    接着上周继续,没看的童鞋.请移步: http://www.cnblogs.com/Chary/p/No00004B.html 这里,假设你已经能够看到这个画面了: 接下来,我们继续 给药 : 安装no ...

  4. 《Javascript高级程序设计第3版》精华总结

    一.JavaScript简介   1.1 javascript简史 1.2 javascript实现 + javascript是一种专为网页交互而设计的一种脚本语言,javascript由三大部分组成 ...

  5. MC, MCMC, Gibbs采样 原理&实现(in R)

    本文用讲一下指定分布的随机抽样方法:MC(Monte Carlo), MC(Markov Chain), MCMC(Markov Chain Monte Carlo)的基本原理,并用R语言实现了几个例 ...

  6. 导师互选系统 Alpha版冲刺总结

    导师互选系统 Alpha版冲刺总结 一.设想和目标 我们的软件什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件主要是要实现导师和学生双向互选的功能.功能定义清晰明确,在软 ...

  7. 谷歌 analytics.js 部分解密版

    源:http://www.google-analytics.com/analytics.js (function(){var aa=encodeURIComponent,f=window,ba=set ...

  8. MC, MCMC, Gibbs採样 原理&amp;实现(in R)

    本文用讲一下指定分布的随机抽样方法:MC(Monte Carlo), MC(Markov Chain), MCMC(Markov Chain Monte Carlo)的基本原理,并用R语言实现了几个样 ...

  9. 自实现PC端jQuery版轮播图

    最近其他项目不是很忙,被安排给公司的官网项目做一个新的页面(之前没接触公司官网项目),其中有一个用到轮播图的地方,最开始想直接用swiper.js插件实现就好了,可是发现官网项目里之前都没有引入过sw ...

  10. SLAM+语音机器人DIY系列:(一)Linux基础——2.安装Linux发行版ubuntu系统

    摘要 由于机器人SLAM.自动导航.语音交互这一系列算法都在机器人操作系统ROS中有很好的支持,所以后续的章节中都会使用ROS来组织构建代码:而ROS又是安装在Linux发行版ubuntu系统之上的, ...

随机推荐

  1. 在docker 容器开启ssh , 并映射22端口到物理载体机上以使外网访问

    1.  运行某镜像以启动容器 docker run -it -p 127.0.0.1:5000:22 c7fe6d9267f8 /bin/bash -p 为指定端口, 127.0.0.1 为映射到的物 ...

  2. 【转载】 解决 sudo echo x > 时的 Permission denied错误

    版权声明:本文为CSDN博主「Yannick_J」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/don_chi ...

  3. 如何让您的 .NET应用程序更智能-- 请参加 8.20 的 .NET Conf -- Focus on AI

    Microsoft 将于 2024 年 8 月 20 日举办免费的 .NET Conf: Focus on AI.该虚拟活动为开发人员提供了如何集成 .NET 和 AI 以增强应用程序开发和用户体验的 ...

  4. 跨越时空的对话:如何使用AI阅读工具ChatDOC快速建立数字化身?

    跨越时空的对话:如何使用 ChatDOC 快速建立数字化身?以史蒂夫·乔布斯 AI 为例 开门见山,这篇文章主要介绍如何将 AI 改造为靠谱.好用.基于某个人物的数字化身.比如,乔布斯 AI.马斯克 ...

  5. LeetCode40.组合总和II

    LeetCode40.组合总和II 力扣题目链接(opens new window) 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 ...

  6. 2023 CCPC 桂林题解

    gym H. Sweet Sugar 一个经典贪心是从下到上,如果子树 \(u\) 剩下的部分(一定包含 \(u\))包含合法连通块,那么这个连通块给答案贡献 \(1\),切断 \(u\) 与 \(f ...

  7. 电子行业MES系统流程图梳理

  8. QTreeWidget折叠子项(折叠当前项的所有子项)

    QTreeWidget折叠子项(折叠当前项的所有子项) 本文仅供本人知识总结使用,所以内容会比较浅显,不喜勿喷. 文章目录 QTreeWidget折叠子项(折叠当前项的所有子项) 一.仅折叠子项 二. ...

  9. OpenCV开发笔记(七十九):基于Stitcher类实现全景图片拼接

    前言   一个摄像头视野不大的时候,我们希望进行两个视野合并,这样让正视的视野增大,从而可以看到更广阔的标准视野.拼接的方法分为两条路,第一条路是stitcher类,第二条思路是特征点匹配.  本篇使 ...

  10. 【测试平台开发】——07Vue前端框架实战——restful请求

    本节主要是前后端接口的调用,以及前端如何进行封装接口 一.创建相关文件 在文件夹下创建http.js.api.js.user.js 1)http.js封装接口: 在src下创建api文件夹 添加htt ...