众所周知:
c++还原我的世界是非常难的一件事
但是,我做到了
但是,我的c++编译器没有支持的3D库
所以,只能将就还原2D的了
分4个cpp
#include<iostream>
#include<random>
#include<time.h>
#include<cstdio>
using namespace std;
int main(){
string MD="copy saves\\template saves\\",order,road="saves\\",name,seed,road2;
cout<<"Cpp_Minecraft_2D"<<endl;
cout<<"1.开始游戏 2.了解玩法";
int kz;
cin>>kz;
if(kz==1){
system("Minecraf-1.exe");
}
else{
cout<<"上下左右键移动,QWEASD挖掘,IJKL攻击,FGHVBN放置方块,T指令,R防御(免疫一次伤害),C吃东西,X放置“危”路标,Z放置TNT,F1打开背包,0放置钥匙";
cout<<"\n当你把两格岩浆用铁矿围起来时,进去就会来到下界\n";
cout<<"在下界,打败“XX”获得门钥匙,在下界放置进入末地\n";
cout<<"打败“[]”通关游戏";
}
}
#include<iostream>
#include<conio.h>
#include<string>
#include<map>
#include<cmath>
#include<windows.h>
#include<time.h>
#define Sleep_time 0.03
#define KEY_DOWN(VK_NONAME)((GetAsyncKeyState(VK_NONAME)& 0x8000)?1:0)
using namespace std;
int fallspeed;
int food=20;
bool fy=0;
int jumpspeed=-3;
int gravity=1;
int y=400,x=500;
int restartposy,restartposx,face,health=1000,lasthealth=1000,breath=100,hungry=1000,dienum;
bool attack,defense,hurt,mode;
struct TNT {
int y;
int x;
int time;
int issave;
};
struct BLOCK {
int color;
string ch;
string type;
};
struct MOB {
int fallspeed;
int health;
bool hurt;
int y;
int x;
int attack;
string shap;
bool isenemy;
int color;
string name;
};
struct ARROW {
string shap;
double y;
double x;
double fallspeed;
double plusx;
};
TNT tnt[20];
string die;
ARROW arrow[100];
MOB mobs[50]={
{0,1000,0,0,0,100,"危",true,7,"危"},
{0,10,0,0,0,10," ",true,7," "},
{0,1000,0,0,0,100,"MM",false,7,"MM"},
{0,100000,0,90,70,-100,"AC",true,7,"Accept"},
{0,10000,0,90,70,500,"BO",true,7,"BOSS"},
{0,100000,0,90,70,-1000,"AK",true,7,"AK"},
};
MOB mob[100]={
{0,1000,0,92,4,100,"WA",true,7,"Wrong Anwser"},
{0,1000,0,92,4,100,"TL",true,7,"Time Limit Error"},
{0,2000,0,92,4,300,"CE",true,7,"Compile Error"},
{0,1000,0,45,9,100,"WA",true,7,"Wrong Anwser"},
{0,100000,0,90,70,-100,"AC",true,7,"Accept"},
{0,100000,0,90,70,-1000,"AK",true,7,"AK"},
{0,10000,0,90,70,500,"UK",true,7,"Unknown Error"},
{0,1000,0,92,3,0,"MM",false,7,"MM"},
{0,1000,0,92,3,0,"MM",false,7,"MM"},
{0,1000,0,90,15,0,"MM",false,7,"MM"},
{0,1000,0,90,80,0,"MM",false,7,"MM"},
{0,1000,0,90,70,-10000,"YZX",true,7,"YZX"},
{0,10,0,10,500,0,"FD",true,7,"FOOD"},
{0,10,0,10,500,0,"FD",true,7,"FOOD"},
{0,10,0,10,500,0,"FD",true,7,"FOOD"},
{0,10,0,10,500,0,"FD",true,7,"FOOD"},
{0,10,0,10,500,0,"FD",true,7,"FOOD"},
};
void initfd(){
for(int i=0;i<100;i++){
if(mob[i].shap==""||mob[i].shap!= "FD")continue;
mob[i].x=rand()% 999;
}
}
BLOCK block[50]={
{0," ","air"},
{6,"██","block"},
{8,"██","block"},
{2,"██","block"},
{15,"██","block"},
{4,"██","block"},
{14,"▓▓","fallblock"},
{8,"II","fallblock"},
{9,"██","water"},
{9,"▇▇","water"},
{9,"▆▆","water"},
{9,"▅▅","water"},
{9,"▄▄","water"},
{9,"▃▃","water"},
{9,"▂▂","water"},
{9,"▁▁","water"},
{12,"██","lava"},
{12,"▇▇","lava"},
{12,"▆▆","lava"},
{12,"▅▅","lava"},
{12,"▄▄","lava"},
{12,"▃▃","lava"},
{12,"▂▂","lava"},
{12,"▁▁","lava"},
{12,"危","background"},
{6,"██","background"},
{10,"▓▓","background"},
{15,"▓▓","background"},
{15,"▅▅","bomb"},
{12,"Ⅲ","TNT"},
{7,"Ⅲ","TNT"},
{6,"∷","ladder"},
{16,"▓▓","block"},
{144,"▓▓","block"},
{25,"▓▓","block"},
};
int board[1005][1005];
int setboard[1005][1005];
map<int,int>bag;
int clear_buffer(){
while(kbhit()){
if(getch()!=EOF);
for(int i=1;i<=256;i++){
if(GetAsyncKeyState(i));
}
}
return 0;
}
void color(int a){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
void __init(){
int kz,_31;
for(int i=0;i<35;i++){
kz=999-rand()%96-344;
for(int i=0;i<20;i++){
_31=rand()%999+1;
if(setboard[kz][_31]==2)setboard[kz][_31]=35;
}
}
kz=0;
for(int i=0;i<15;i++){
kz=999-rand()%32-474;
for(int i=0;i<15;i++){
_31=rand()%999+1;
if(setboard[kz][_31]==2)setboard[kz][_31]=34;
}
}
for(int i=0;i<15;i++){
kz=999-rand()%32-442;
for(int i=0;i<7;i++){
_31=rand()%999+1;
if(setboard[kz][_31]==2)setboard[kz][_31]=33;
}
}
}
int init(){
for(int i=0;i<1000;i++){
for(int j=0;j<1000;j++){
board[i][j]=0;
}
}
double lasty=rand()% 101+400;
for(int i=5;i<1000;i+=5){
double y=rand()% 21-10+lasty;
y=min(450.0,y);
double high=lasty;
int dirt=rand()% 5+2;
for(int j=i-5;j<i;j++){
high+=(y-lasty)/ 5;
for(int k=999;k >=(int)high;k--){
if(k==(int)high){
setboard[k][j]=3;
if(high<=350){
setboard[k][j]=4;
}
} else if(k-dirt <=(int)high){
setboard[k][j]=1;
} else {
setboard[k][j]=2;
}
}
}
lasty=y;
}
int dirt=rand()% 5+2;
double high=lasty;
for(int j=995;j<999;j++){
for(int k=999;k >=(int)high;k--){
if(k==(int)high){
setboard[k][j]=3;
if(high<=350){
setboard[k][j]=4;
}
} else if(k-dirt <=(int)high){
setboard[k][j]=1;
} else {
setboard[k][j]=2;
}
}
}
for(int i=0;i<1000;i++){
for(int j=600;j>=410;j--){
if(setboard[j][i]==0){
setboard[j][i]=8;
}
}
}
for(int i=0;i<1000;i++){
bool a=0;
for(int j=999;j>=0;j--){
if(a&&setboard[j][i]!= 0 &&setboard[j][i]!= 8){
setboard[j][i]=6;
continue;
}
if(setboard[j][i]==8){
continue;
}
if(setboard[j][i+3]==8){
a=true;
setboard[j][i]=6;
}
if(setboard[j][i+2]==8){
a=true;
setboard[j][i]=6;
}
if(setboard[j][i+1]==8){
a=true;
setboard[j][i]=6;
}
if(setboard[j][i-1]==8){
a=true;
setboard[j][i]=6;
}
if(setboard[j][i-2]==8){
a=true;
setboard[j][i]=6;
}
if(setboard[j][i-3]==8){
a=true;
setboard[j][i]=6;
}
if(setboard[j-2][i]==8){
a=true;
setboard[j][i]=6;
}
if(setboard[j-1][i]==8){
a=true;
setboard[j][i]=6;
}
if(setboard[j-3][i]==8){
a=true;
setboard[j][i]=6;
}
if(setboard[j-4][i]==8){
a=true;
setboard[j][i]=6;
}
}
}
for(int i=0;i<1000;i++){
for(int j=0;j<1000;j++){
if(setboard[j][i]==0&&block[setboard[j+1][i]].type=="block"){
if(rand()% 10==1){
setboard[j][i]=25;
setboard[j-1][i]=25;
setboard[j-2][i]=25;
setboard[j-3][i]=25;
setboard[j-3][i+1]=26;
setboard[j-3][i-1]=26;
setboard[j-4][i+2]=26;
setboard[j-4][i+1]=26;
setboard[j-4][i]=26;
setboard[j-4][i-1]=26;
setboard[j-4][i-2]=26;
setboard[j-5][i+2]=26;
setboard[j-5][i+1]=26;
setboard[j-5][i]=26;
setboard[j-5][i-1]=26;
setboard[j-5][i-2]=26;
setboard[j-6][i+1]=26;
setboard[j-6][i]=26;
setboard[j-6][i-1]=26;
if(j<=350){
setboard[j-3][i+1]=27;
setboard[j-3][i-1]=27;
setboard[j-4][i+2]=27;
setboard[j-4][i+1]=27;
setboard[j-4][i]=27;
setboard[j-4][i-1]=27;
setboard[j-4][i-2]=27;
setboard[j-5][i+2]=27;
setboard[j-5][i+1]=27;
setboard[j-5][i]=27;
setboard[j-5][i-1]=27;
setboard[j-5][i-2]=27;
setboard[j-6][i+1]=27;
setboard[j-6][i]=27;
setboard[j-6][i-1]=27;
}
}
}
}
}
for(int j=999;j>=700;j--){
if(rand()% 20==1){
setboard[j-3][2]=0;
setboard[j-2][2]=0;
setboard[j-2][3]=0;
setboard[j-1][2]=0;
setboard[j-1][3]=0;
setboard[j-1][4]=0;
setboard[j][2]=0;
setboard[j][3]=0;
setboard[j][4]=0;
setboard[j][5]=0;
setboard[j+1][2]=0;
setboard[j+1][3]=0;
setboard[j+1][4]=0;
setboard[j+2][2]=0;
setboard[j+2][3]=0;
setboard[j+3][2]=0;
}
}
__init();
for(int i=3;i<997;i++){
for(int j=996;j>=500;j--){
if(block[setboard[j+3][i]].type=="block"&&block[setboard[j-3][i]].type=="block"&&setboard[j][i]==0&&setboard[j+1][i]==0&&setboard[j+2][i]==0&&setboard[j-1][i]==0 &&setboard[j-2][i]==0){
j+=rand()% 5-2;
j=max(3,j);
j=min(996,j);
if(rand()% 500<=499){
setboard[j-3][i]=0;
setboard[j-2][i-1]=0;
setboard[j-2][i]=0;
setboard[j-2][i+1]=0;
setboard[j-1][i-2]=0;
setboard[j-1][i-1]=0;
setboard[j-1][i]=0;
setboard[j-1][i+1]=0;
setboard[j-1][i+2]=0;
setboard[j][i-3]=0;
setboard[j][i-2]=0;
setboard[j][i-1]=0;
setboard[j][i]=0;
setboard[j][i+1]=0;
setboard[j][i+2]=0;
setboard[j][i+3]=0;
setboard[j+1][i-2]=0;
setboard[j+1][i-1]=0;
setboard[j+1][i]=0;
setboard[j+1][i+1]=0;
setboard[j+1][i+2]=0;
setboard[j+2][i-1]=0;
setboard[j+2][i]=0;
setboard[j+2][i+1]=0;
setboard[j+3][i]=0;
if(rand()% 20==1){
for(int k=0;k<100;k++){
if(mob[k].shap==""){
mob[k]={0,1000,0,0,0,100,"SS",true,7,"僵尸"};
mob[k].x=i;
mob[k].y=j;
break;
}
}
}
}
} else if(block[setboard[j+3][i]].type=="block"&&block[setboard[j+2][i]].type=="block"&&block[setboard[j+1][i]].type=="block"&&block[setboard[j][i]].type=="block"&&block[setboard[j-1][i]].type=="block"&&block[setboard[j-2][i]].type=="block"&&block[setboard[j-3][i]].type=="block"){
if(rand()% 500==1){
setboard[j-3][i]=0;
setboard[j-2][i-1]=0;
setboard[j-2][i]=0;
setboard[j-2][i+1]=0;
setboard[j-1][i-2]=0;
setboard[j-1][i-1]=0;
setboard[j-1][i]=0;
setboard[j-1][i+1]=0;
setboard[j-1][i+2]=0;
setboard[j][i-3]=0;
setboard[j][i-2]=0;
setboard[j][i-1]=0;
setboard[j][i]=0;
setboard[j][i+1]=0;
setboard[j][i+2]=0;
setboard[j][i+3]=0;
setboard[j+1][i-2]=0;
setboard[j+1][i-1]=0;
setboard[j+1][i]=0;
setboard[j+1][i+1]=0;
setboard[j+1][i+2]=0;
setboard[j+2][i-1]=0;
setboard[j+2][i]=0;
setboard[j+2][i+1]=0;
setboard[j+3][i]=0;
}
}
}
}
bool a=false;
for(int i=400;i<1000;i++){
for(int j=0;j<1000;j++){
if(setboard[j][i]==0&&block[setboard[j+1][i]].type=="block" &&(setboard[j+1][i]==3||setboard[j+1][i]==4)){
restartposy=j;
restartposx=i;
y=j;
x=i;
a=true;
break;
}
}
if(a){
break;
}
}
return 0;
}
int Arrowmove(){
for(int i=0;i<100;i++){
if(arrow[i].shap==""){
continue;
}
arrow[i].x+=(int)arrow[i].plusx;
arrow[i].plusx-=0.1;
for(int j=(int)arrow[j].y+1;j <=(int)arrow[j].y +(int)arrow[j].fallspeed;j++){
if(block[board[j][(int)arrow[j].x]].type=="block"||block[board[j][(int)arrow[j].x]].type=="fallblock"){
arrow[i].fallspeed=0;
return 0;
}
}
arrow[i].y+=arrow[i].fallspeed;
arrow[i].fallspeed+=1;
if(arrow[i].y > 999){
arrow[i].shap="";
}
if(block[board[(int)arrow[i].y+1][(int)arrow[i].x]].type=="block"||block[board[(int)arrow[i].y+1][(int)arrow[i].x]].type=="fallblock"){
arrow[i].shap="";
}
}
return 0;
}
int mobmove(){
for(int j=0;j<100;j++){
if(mob[j].shap==""){
continue;
}
mob[j].hurt=false;
mob[j].color=7;
if(mob[j].health<=0||mob[j].y > 999){
if(mob[j].name=="FD"){
food+=3;
mob[j].x=rand()% 999;
mob[j].y=500;
mob[j].health=20;
} else {
mob[j].shap="";
mob[j].color=7;
continue;
}
}
if(block[board[mob[j].y][mob[j].x]].type=="lava"){
mob[j].health-=200;
mob[j].hurt=true;
} else if((board[mob[j].y+1][mob[j].x]==5)||((mob[j].y==y||mob[j].y==y-1)&&(mob[j].x==x+1||mob[j].x==x||mob[j].x==x-1)&& KEY_DOWN(' '))){
mob[j].health-=100;
mob[j].hurt=true;
}
if(mob[j].y==y&&mob[j].x==x&&mob[j].isenemy&&fy==0){
health-=mob[j].attack;
hurt=true;
die="被 "+mob[j].name+" 杀死了";
}
for(int i=mob[j].y-1;i>=mob[j].y+mob[j].fallspeed;i--){
if(block[board[i-1][mob[j].x]].type=="block"){
mob[j].fallspeed=0-mob[j].y+i+1;
return 0;
}
}
for(int i=mob[j].y+1;i<=mob[j].y+mob[j].fallspeed;i++){
if(block[board[i][mob[j].x]].type=="block"||block[board[i][mob[j].x]].type=="fallblock"){
if(mob[j].fallspeed>=5&&block[board[i-1][mob[j].x]].type=="water"){
mob[j].health-=50 *(mob[j].fallspeed-4);
mob[j].hurt=true;
}
mob[j].fallspeed=0;
return 0;
}
}
mob[j].y+=mob[j].fallspeed;
mob[j].fallspeed+=gravity;
if(mob[j].isenemy){
if(mob[j].y > y &&(block[board[mob[j].y+1][mob[j].x]].type=="block"||block[board[mob[j].y+1][mob[j].x]].type=="fallblock")){
if(mob[j].y > y+50){
mob[j].fallspeed=-7;
}
mob[j].fallspeed=-3;
}
if(mob[j].x<x){
if(block[board[mob[j].y][mob[j].x+1]].type!= "block"||block[board[mob[j].y][mob[j].x+1]].type!= "fallblock"){
mob[j].x++;
} else if(block[board[mob[j].y+1][mob[j].x]].type=="block"||block[board[mob[j].y+1][mob[j].x]].type!= "fallblock"){
mob[j].fallspeed=-3;
}
} else if(mob[j].x > x){
if(block[board[mob[j].y][mob[j].x-1]].type!= "block"||block[board[mob[j].y][mob[j].x-1]].type!= "fallblock"){
mob[j].x--;
} else if(block[board[mob[j].y+1][mob[j].x]].type=="block"||block[board[mob[j].y+1][mob[j].x]].type!= "fallblock"){
mob[j].fallspeed=-3;
}
}
} else {
if(rand()% 3==0){
if(block[board[mob[j].y][mob[j].x+1]].type!= "block"||block[board[mob[j].y][mob[j].x+1]].type!= "fallblock"){
mob[j].x++;
} else if(block[board[mob[j].y+1][mob[j].x]].type=="block"||block[board[mob[j].y+1][mob[j].x]].type!= "fallblock"){
mob[j].fallspeed=-3;
}
} else if(rand()% 3==1){
if(block[board[mob[j].y][mob[j].x-1]].type!= "block"||block[board[mob[j].y][mob[j].x-1]].type!= "fallblock"){
mob[j].x--;
} else if(block[board[mob[j].y+1][mob[j].x]].type=="block"||block[board[mob[j].y+1][mob[j].x]].type!= "fallblock"){
mob[j].fallspeed=-3;
}
}
}
if(mob[j].hurt){
mob[j].color=12;
}
}
return 0;
}
int print(){
if(!mode){
color(8);
printf("HP:");
color(12);
cout<<health<<endl;
for(int i=0;i<health;i+=100){
printf("◆");
}
color(7);
for(int i=health;i<lasthealth;i+=100){
printf("◇");
}
printf("\n");
color(8);
printf("AIR:");
color(11);
printf("%d\n",breath);
for(int i=0;i<breath;i+=10){
printf("●");
}
for(int i=breath;i<91;i+=10){
printf("○");
}
printf("\n");
color(8);
cout<<"HUNGRY:";
color(14);
cout<<hungry<<endl;
for(int i=0;i<hungry;i+=100){
cout<<"§";
}
cout<<endl;
}
color(8);
cout<<"DIENUM:";
color(4);
cout<<dienum<<endl;
for(int i=y-6;i<=y+6;i++){
for(int j=x-6;j<=x+6;j++){
bool ismob=false;
for(int s=0;s<100;s++){
if(mob[s].shap==""){
continue;
} else if(mob[s].x==j&&mob[s].y==i){
color(mob[s].color);
cout<<mob[s].shap;
ismob=true;
break;
}
}
if(ismob){
continue;
}
for(int s=0;s<100;s++){
if(arrow[s].shap==""){
continue;
} else if((int)arrow[s].x==j &&(int)arrow[s].y==i){
color(7);
cout<<arrow[s].shap;
ismob=true;
break;
}
}
if(ismob){
continue;
} else if(i==y&&j==x){
if(KEY_DOWN(VK_DOWN)){
color(14);
if(hurt){
color(12);
}
cout<<"()";
} else {
color(9);
if(hurt){
color(12);
}
cout<<"∏";
}
} else if(i==y-1&&j==x){
if(!KEY_DOWN(VK_DOWN)){
color(14);
if(hurt){
color(12);
}
cout<<"()";
} else {
color(block[board[i][j]].color);
cout<<block[board[i][j]].ch;
}
} else {
if(i<0||i>=1000||j<0||j>=1000){
cout<<" ";
continue;
}
color(block[board[i][j]].color);
cout<<block[board[i][j]].ch;
}
}
cout<<endl;
}
color(7);
cout<<"Y:";
color(6);
cout<<1000-y<<endl;
color(7);
cout<<"X:";
color(6);
cout<<x<<endl;
return 0;
}
int move(){
if(board[y][x]==31){
y+=fallspeed;
return 0;
}
if(block[board[y][x]].type=="water"){
if(fallspeed > 1){
fallspeed=1;
}
} else {
for(int i=y-1;i>=y+fallspeed;i--){
if(block[board[i-1][x]].type=="block"||block[board[i-1][x]].type=="fallblock"){
fallspeed=0-y+i+1;
return 0;
}
}
}
for(int i=y+1;i<=y+fallspeed;i++){
if(block[board[i][x]].type=="block"||block[board[i][x]].type=="fallblock"){
if(fallspeed>=5&&block[board[i-1][x]].type!= "water"){
health-=50 *(fallspeed-4);
if(fallspeed>=7){
die="落地过猛!";
} else {
die="从高处摔了下来!";
}
hurt=true;
}
fallspeed=0;
return 0;
}
}
y+=fallspeed;
fallspeed+=gravity;
return 0;
}
int bomb(){
for(int i=0;i<20;i++){
if(tnt[i].time==0){
int atk=0;
if(abs(x-tnt[i].x)+ abs(y-tnt[i].y)==4){
atk=50;
fallspeed-=1;
x+=x-tnt[i].x;
}
if(abs(x-tnt[i].x)+ abs(y-tnt[i].y)==3){
atk=100;
fallspeed-=2;
x+=x-tnt[i].x;
}
if(abs(x-tnt[i].x)+ abs(y-tnt[i].y)==2){
atk=300;
fallspeed-=4;
x+=2 *(x-tnt[i].x);
}
if(abs(x-tnt[i].x)+ abs(y-tnt[i].y)==1){
atk=500;
fallspeed-=7;
x+=5 *(x-tnt[i].x);
}
if(abs(x-tnt[i].x)+ abs(y-tnt[i].y)==0){
atk=800;
fallspeed-=10;
}
tnt[i].time--;
if(!tnt[i].issave){
health-=atk;
}
die="被TNT炸死了";
if(atk > 0&&!tnt[i].issave){
hurt=true;
}
if(!tnt[i].issave){
for(int yy=tnt[i].y-3;yy<=tnt[i].y+3;yy++){
for(int xx=tnt[i].x-3;xx<=tnt[i].x+3;xx++){
if((int)(sqrt(abs(yy-tnt[i].y)* abs(yy-tnt[i].y)+ abs(xx-tnt[i].x)* abs(xx-tnt[i].x))+ 0.9999)==3){
setboard[yy][xx]=28;
}
if((int)(sqrt(abs(yy-tnt[i].y)* abs(yy-tnt[i].y)+ abs(xx-tnt[i].x)* abs(xx-tnt[i].x))+ 0.9999)< 3){
setboard[yy][xx]=0;
}
}
}
}
} else if(tnt[i].time==-1){
setboard[tnt[i].y][tnt[i].x]=0;
if(!tnt[i].issave){
for(int yy=tnt[i].y-3;yy<=tnt[i].y+3;yy++){
for(int xx=tnt[i].x-3;xx<=tnt[i].x+3;xx++){
if((int)(sqrt(abs(yy-tnt[i].y)* abs(yy-tnt[i].y)+ abs(xx-tnt[i].x)* abs(xx-tnt[i].x))+ 0.9999)<= 3){
setboard[yy][xx]=0;
}
}
}
}
tnt[i].time--;
} else if(tnt[i].time > 0){
tnt[i].time--;
if(tnt[i].time % 2==0){
setboard[tnt[i].y][tnt[i].x]=29;
} else {
setboard[tnt[i].y][tnt[i].x]=30;
}
}
}
return 0;
}
int check(){
for(int i=0;i<1000;i++){
for(int j=0;j<1000;j++){
if(block[board[i][j]].type=="water"&&board[i][j]!= 15){
if(board[i+1][j]==0){
setboard[i+1][j]=board[i][j];
setboard[i+1][j]=8;
} else if(block[board[i+1][j]].type=="lava"){
setboard[i+1][j]=2;
} else if(block[board[i+1][j]].type=="block"||block[board[i+1][j]].type=="fallblock"){
if(board[i][j+1]==0){
setboard[i][j+1]=board[i][j]+1;
} else if(block[board[i][j+1]].type=="lava"){
setboard[i][j+1]=2;
}
if(board[i][j-1]==0){
setboard[i][j-1]=board[i][j]+1;
} else if(block[board[i][j-1]].type=="lava"){
setboard[i][j-1]=2;
}
}
}
if(block[board[i][j]].type=="lava"&&board[i][j]!= 23){
if(board[i+1][j]==0){
setboard[i+1][j]=board[i][j];
setboard[i+1][j]=16;
} else if(block[board[i+1][j]].type=="water"){
setboard[i+1][j]=2;
} else if(block[board[i+1][j]].type=="block"||block[board[i+1][j]].type=="fallblock"){
if(board[i][j+1]==0){
setboard[i][j+1]=board[i][j]+1;
} else if(block[board[i][j+1]].type=="water"){
setboard[i][j+1]=2;
}
if(board[i][j-1]==0){
setboard[i][j-1]=board[i][j]+1;
} else if(block[board[i][j-1]].type=="water"){
setboard[i][j-1]=2;
}
}
}
if(block[board[i][j]].type=="fallblock"){
if(board[i+2][j]==0&&board[i+1][j]==0&&i+2<100){
setboard[i][j]=0;
setboard[i+2][j]=board[i][j];
if(board[i][j]==7&&j==x&&i+2==y){
health-=600;
hurt=true;
die="被压扁了";
}
} else if(board[i+1][j]==0&&i+1<100){
setboard[i][j]=0;
setboard[i+1][j]=board[i][j];
if(board[i][j]==7&&j==x&&i+1==y){
health-=600;
hurt=true;
die="被压扁了";
} else if(board[i][j]==7&&j==x&&i+2==y){
health-=600;
hurt=true;
die="被压扁了";
}
}
}
}
}
for(int i=0;i<1000;i++){
for(int j=0;j<1000;j++){
board[i][j]=setboard[i][j];
}
}
}
void putblock(int type,int toward){
if(toward==7){
setboard[y-1][x+1]=type;
}
if(toward==8){
setboard[y-1][x]=type;
}
if(toward==9){
setboard[y-1][x-1]=type;
}
if(toward==4){
setboard[y][x+1]=type;
}
if(toward==6){
setboard[y][x-1]=type;
}
if(toward==1){
setboard[y+1][x+1]=type;
}
if(toward==2){
setboard[y+1][x]=type;
}
if(toward==3){
setboard[y+1][x-1]=type;
}
}
void to_order(char order[],string str){
for(int i=0;i<str.length();i++){
order[i]=str[i];
}
return;
}
int main(){
system("title Minecraft_2D-主世界");
int tools[9]={32,16,3,4,5,6,7,8,9};
int now=0;
srand((int)time(0));
for(int i=0;i<20;i++){
tnt[i].time=-2;
}
initfd();
init();
while(1){
system("cls");
if(health>1500){
health=1500;
}
if(!mode){
move();
}
if(KEY_DOWN('G')&&setboard[y-2][x]==0){
setboard[y-2][x]=tools[now];
}
if(KEY_DOWN('V')&&setboard[y][x-1]==0){
setboard[y][x-1]=tools[now];
}
if(KEY_DOWN('B')){
setboard[y+1][x]=tools[now];
}
if(KEY_DOWN('N')&&setboard[y][x+1]==0){
setboard[y][x+1]=tools[now];
}
if(KEY_DOWN('H')&&setboard[y-1][x+1]==0){
setboard[y-1][x+1]=tools[now];
}
if(KEY_DOWN('F')&&setboard[y-1][x-1]==0){
setboard[y-1][x-1]=tools[now];
}
check();
bomb();
Arrowmove();
mobmove();
if(mode){
hurt=false;
}
print();
Sleep(Sleep_time);
hungry--;
hungry=max(hungry,0);
if(hungry==0){
die="被饿死了";
hurt=true;
health-=10;
}
if(mode){
health=1000;
}
if(health<=0){
Sleep(500);
system("cls");
color(12);
cout<<" GAME OVER "<<endl;
color(7);
cout<<" STEVE "<<die<<endl;
dienum++;
Sleep(2000);
x=restartposx;
y=restartposy;
health=1000;
hungry=1000;
breath=100;
fallspeed=0;
}
health+=(hungry+201)/ 300;
if(attack){
attack=0;
}
if(defense){
defense=0;
}
if(hurt){
hurt=false;
lasthealth=health;
}
if(block[board[y][x]].type=="water"){
fallspeed=1;
if(KEY_DOWN(VK_UP)){
fallspeed=-1;
}
}
if(block[board[y-1][x]].type=="water"){
die="被水淹死了!";
breath--;
} else {
breath++;
if(breath > 100){
breath=100;
}
}
if(board[y][x]==31){
fallspeed=0;
if(KEY_DOWN(VK_UP)){
fallspeed=-1;
}
if(KEY_DOWN(VK_DOWN)){
fallspeed=1;
}
}
if(block[board[y][x]].type=="lava"){
if(block[board[y-1][x]].type=="lava"){
if(block[board[y-2][x]].type=="iron"
&&block[board[y-1][x-1]].type=="iron"
&&block[board[y-1][x+1]].type=="iron"
&&block[board[y][x-1]].type=="iron"
&&block[board[y][x+1]].type=="iron"
&&block[board[y+1][x]].type=="iron"
){
cout<<"你正在进入下界!";
cout<<"由于数组原因,作者不得不再次加载一个程序,不然你的电脑可能会boom!";
system("Minecraft-2.exe");
}
}
else if(block[board[y+1][x]].type=="lava"){
if(block[board[y-1][x]].type=="iron"
&&block[board[y+1][x-1]].type=="iron"
&&block[board[y+11][x+1]].type=="iron"
&&block[board[y][x-1]].type=="iron"
&&block[board[y][x+1]].type=="iron"
&&block[board[y+2][x]].type=="iron"
){
cout<<"你正在进入下界!";
cout<<"由于数组原因,作者不得不再次加载一个程序,不然你的电脑可能会boom!";
system("Minecraft-2.exe");
}
}
fallspeed=1;
if(KEY_DOWN(VK_UP)){
fallspeed=-1;
}
die="试图在岩浆里游泳!";
hurt=true;
health-=100;
}
if(KEY_DOWN(VK_UP)&&!KEY_DOWN(VK_DOWN)){
if(mode){
y--;
} else {
if(block[board[y][x]].type!= "water"&&board[y][x]!= 31){
if(block[board[y+1][x]].type=="block"||block[board[y+1][x]].type=="fallblock"){
fallspeed=jumpspeed;
}
}
}
}
if(KEY_DOWN(VK_LEFT)){
if((block[board[y][x-1]].type!= "block"&&block[board[y][x-1]].type!= "fallblock")|| mode){
if(KEY_DOWN(VK_DOWN)||(block[board[y-1][x-1]].type!= "block"&&block[board[y-1][x-1]].type!= "fallblock")|| mode){
x-=1;
}
}
face=-1;
}
if(KEY_DOWN(VK_RIGHT)){
if((block[board[y][x+1]].type!= "block"&&block[board[y][x+1]].type!= "fallblock")|| mode){
if(KEY_DOWN(VK_DOWN)||(block[board[y-1][x+1]].type!= "block" &&block[board[y-1][x+1]].type!= "fallblock")|| mode){
x+=1;
}
}
face=1;
}
if(KEY_DOWN(VK_DOWN)){
if(mode){
y++;
} else {
fallspeed+=1;
}
}
if(KEY_DOWN(' ')){
attack=true;
}
if(KEY_DOWN('R')){
fy+=1;
hungry-=20;
}
if(KEY_DOWN('G')&& 1000-hungry<=90){
food-=1;
hungry+=90;
}
if(KEY_DOWN('K')){
for(int i=0;i<100;i++){
if(mob[i].y==y&&mob[i].x==x&&mob[i].isenemy){
mob[i].health-=20;
}
}
}
if(KEY_DOWN('J')){
for(int i=0;i<100;i++){
if(mob[i].y==y-1&&mob[i].x==x&&mob[i].isenemy){
mob[i].health-=20;
}
}
}
if(KEY_DOWN('I')){
for(int i=0;i<100;i++){
if(mob[i].y==y&&mob[i].x==x+1&&mob[i].isenemy){
mob[i].health-=20;
}
}
}
if(KEY_DOWN('L')){
for(int i=0;i<100;i++){
if(mob[i].y==y+1&&mob[i].x==x&&mob[i].isenemy){
mob[i].health-=20;
}
}
}
if(KEY_DOWN(VK_F1)){
for(int i=0;i<35;i++){
switch(i){
case 1:
cout<<i<<":土块:"<<bag[i]<<"个 ";
break;
case 2:
cout<<i<<":石头:∞个";
break;
case 3:
cout<<i<<":草方块:"<<bag[i]<<"个";
break;
case 4:
cout<<i<<":雪块:"<<bag[i]<<"个";
break;
case 5:
cout<<i<<":岩浆块:"<<bag[i]<<"个";
break;
case 6:
cout<<i<<":沙块:∞个";
break;
case 7:
cout<<i<<":铁砧:∞个";
break;
case 8:
cout<<i<<":水:∞个";
break;
case 17:
cout<<i<<":岩浆:∞个";
break;
case 29:
cout<<i<<":TNT:∞个";
break;
case 30:
cout<<i<<":TNT2:∞个";
break;
case 31:
cout<<i<<":梯子:∞个";
break;
case 32:
cout<<i<<":铁:"<<bag[i]<<"个";
break;
case 33:
cout<<i<<":钻石:"<<bag[i]<<"个";
break;
case 34:
cout<<i<<":煤炭:"<<bag[i]<<"个";
break;
}
}
cout<<endl<<"你要\n1.丢弃某个东西 2.把某个东西放到物品栏中";
int kkkz,num;
cin>>kkkz;
if(kkkz==1){
cout<<"你丢弃的物品号码(对应号码如上)\n";
cin>>kkkz;
cout<<"丢弃个数\n";
cin>>num;
if(num>bag[kkkz]){
bag[kkkz]=0;
}
if(num<bag[kkkz]){
bag[kkkz]-num;
}
}
if(kkkz==2){
cout<<"要放的东西\n";
cin>>kkkz;
cout<<"第几个\n";
cin>>num;
swap(tools[num-1],kkkz);
}
system("cls");
}
if(KEY_DOWN('1'))now=0;
if(KEY_DOWN('2'))now=1;
if(KEY_DOWN('3'))now=2;
if(KEY_DOWN('4'))now=3;
if(KEY_DOWN('5'))now=4;
if(KEY_DOWN('6'))now=5;
if(KEY_DOWN('7'))now=6;
if(KEY_DOWN('8'))now=7;
if(KEY_DOWN('9'))now=8;
if(KEY_DOWN('C')){
hungry+=100;
hungry=min(hungry,1000);
}
if(KEY_DOWN('Z')){
for(int i=0;i<20;i++){
if(tnt[i].time==-2){
tnt[i]={y,x,10,0};
break;
}
}
}
if(KEY_DOWN('i')){
for(int i=0;i<20;i++){
if(tnt[i].time==-2){
tnt[i]={y,x,10,1};
break;
}
}
}
if(KEY_DOWN('[')){
for(int i=0;i<20;i++){
if(tnt[i].time==-2){
tnt[i]={y,x,10,2};
break;
}
}
}
if(KEY_DOWN(']')){
for(int i=0;i<20;i++){
if(tnt[i].time==-2){
tnt[i]={y,x,10,3};
break;
}
}
}
if(KEY_DOWN('|')){
for(int i=0;i<20;i++){
if(tnt[i].time==-2){
tnt[i]={y,x,10,4};
break;
}
}
}
if(KEY_DOWN('O')){
for(int i=0;i<20;i++){
if(tnt[i].time==-2){
tnt[i]={y,x,10,5};
break;
}
}
}
if(KEY_DOWN('W')){
bag[setboard[y-2][x]]++;
setboard[y-2][x]=0;
}
if(KEY_DOWN('A')){
bag[setboard[y][x-1]]++;
setboard[y][x-1]=0;
}
if(KEY_DOWN('S')){
bag[setboard[y+1][x]]++;
setboard[y+1][x]=0;
}
if(KEY_DOWN('D')){
bag[setboard[y][x+1]]++;
setboard[y][x+1]=0;
}
if(KEY_DOWN('E')){
bag[setboard[y-1][x+1]]++;
setboard[y-1][x+1]=0;
}
if(KEY_DOWN('Q')){
bag[setboard[y-1][x-1]]++;
setboard[y-1][x-1]=0;
}
if(KEY_DOWN('X')){
setboard[y][x]=24;
}
if(KEY_DOWN('Y')){
if(face==1){
for(int i=0;i<100;i++){
if(arrow[i].shap==""){
arrow[i]={"→",y,x,-0.7,2};
break;
}
}
} else {
for(int i=0;i<100;i++){
if(arrow[i].shap==""){
arrow[i]={"←",y,x,-0.7,-2};
break;
}
}
}
}
if(KEY_DOWN('T')){
clear_buffer();
system("cls");
cout<<"请输入指令:"<<endl;
string a;
cin>>a;
if(a=="kill"){
die="失败了。";
hurt=true;
health=0;
}
if(a=="full_health"){
health=1000;
}
if(a=="creativemode"){
mode=!mode;
}
if(a=="move"){
cin>>y>>x;
y=1000-y;
}
if(a=="summom"){
int a;
cin>>a;
for(int i=0;i<100;i++){
if(mob[i].shap==""){
mob[i]=mobs[a];
mob[i].x=x;
mob[i].y=y;
break;
}
}
}
}
if(KEY_DOWN('O')){
for(int i=0;i<1000;i++){
for(int j=0;j<1000;j++){
setboard[i][j]=0;
}
}
}
if(KEY_DOWN('`')){
breath+=100;
}
if(KEY_DOWN('P')){
for(int i=0;i<1000;i++){
for(int j=0;j<1000;j++){
setboard[i][j]=2;
}
}
}
if(y > 1000){
die="掉出了这个世界!";
hurt=true;
health-=200;
}
if(breath<=0){
breath=0;
hurt=true;
health-=10;
}
if(!KEY_DOWN(VK_DOWN)&& block[board[y-1][x]].type=="block"){
die="在墙里窒息死亡!";
hurt=true;
health-=50;
}
if(board[y+1][x]==5){
hurt=true;
die="发现了地板是熔岩做的。";
health-=30;
}
clear_buffer();
}
return 0;
}
#include<iostream>
#include<conio.h>
#include<string>
#include<map>
#include<cmath>
#include<windows.h>
#include<time.h>
#define Sleep_time 0.03
#define KEY_DOWN(VK_NONAME)((GetAsyncKeyState(VK_NONAME)& 0x8000)?1:0)
using namespace std;
int fallspeed;
int food=20;
bool fy=0;
int jumpspeed=-3;
int gravity=1;
int y=400,x=500;
int restartposy,restartposx,face,health=1000,lasthealth=1000,breath=100,hungry=1000,dienum;
bool attack,defense,hurt,mode;
struct TNT {
int y;
int x;
int time;
int issave;
};
struct BLOCK {
int color;
string ch;
string type;
};
struct MOB {
int fallspeed;
int health;
bool hurt;
int y;
int x;
int attack;
string shap;
bool isenemy;
int color;
string name;
};
struct ARROW {
string shap;
double y;
double x;
double fallspeed;
double plusx;
};
TNT tnt[20];
string die;
ARROW arrow[100];
MOB mobs[50]={
{0,1000,0,0,0,100,"危",true,7,"危"},
{0,10,0,0,0,10," ",true,7," "},
{0,1000,0,0,0,100,"MM",false,7,"MM"},
{0,100000,0,90,70,-100,"AC",true,7,"Accept"},
{0,10000,0,90,70,500,"BO",true,7,"BOSS"},
{0,100000,0,90,70,-1000,"AK",true,7,"AK"},
};
MOB mob[100]={
{0,1000,0,92,4,100,"XX",true,7,"XX"},
{0,1000,0,92,4,100,"XX",true,7,"XX"},
{0,1000,0,92,4,100,"XX",true,7,"XX"},
{0,1000,0,92,4,100,"XX",true,7,"XX"},
{0,1000,0,92,4,100,"XX",true,7,"XX"},
{0,1000,0,92,4,100,"XX",true,7,"XX"},
};
BLOCK block[50]={
{0," ","air"},
{4,"██","block"},
{14,"▓▓","fallblock"},
{8,"II","fallblock"},
{12,"██","lava"},
{12,"▇▇","lava"},
{12,"▆▆","lava"},
{12,"▅▅","lava"},
{12,"▄▄","lava"},
{12,"▃▃","lava"},
{12,"▂▂","lava"},
{12,"▁▁","lava"},
{12,"危","background"},
{2,"██","background"},
{1,"▓▓","background"},
{15,"▅▅","bomb"},
{12,"Ⅲ","TNT"},
{7,"Ⅲ","TNT"},
{6,"∷","ladder"},
{111,"▓▓","iron"},
{144,"▓▓","diamond"},
{25,"▓▓","coal"},
};
int board[1005][1005];
int setboard[1005][1005];
map<int,int>bag;
int clear_buffer(){
while(kbhit()){
if(getch()!=EOF);
for(int i=1;i<=256;i++){
if(GetAsyncKeyState(i));
}
}
return 0;
}
void color(int a){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
void __init(){
int kz,_31;
for(int i=0;i<35;i++){
kz=999-rand()%96-344;
for(int i=0;i<20;i++){
_31=rand()%999+1;
if(setboard[kz][_31]==2)setboard[kz][_31]=35;
}
}
kz=0;
for(int i=0;i<15;i++){
kz=999-rand()%32-474;
for(int i=0;i<15;i++){
_31=rand()%999+1;
if(setboard[kz][_31]==2)setboard[kz][_31]=34;
}
}
for(int i=0;i<15;i++){
kz=999-rand()%32-442;
for(int i=0;i<7;i++){
_31=rand()%999+1;
if(setboard[kz][_31]==2)setboard[kz][_31]=33;
}
}
}
int init(){
for(int i=0;i<1000;i++){
for(int j=0;j<1000;j++){
board[i][j]=0;
}
}
double lasty=rand()% 101+400;
for(int i=5;i<1000;i+=5){
double y=rand()%21-10+lasty;
y=min(450.0,y);
double high=lasty;
int dirt=rand()%5+2;
for(int j=i-5;j<i;j++){
high+=(y-lasty)/5;
for(int k=999;k >=(int)high;k--){
if(k==(int)high){
setboard[k][j]=1;
if(high<=350){
setboard[k][j]=1;
}
} else if(k-dirt <=(int)high){
setboard[k][j]=1;
} else {
setboard[k][j]=1;
}
}
}
lasty=y;
}
int dirt=rand()% 5+2;
double high=lasty;
for(int j=995;j<999;j++){
for(int k=999;k >=(int)high;k--){
if(k==(int)high){
setboard[k][j]=2;
if(high<=350){
setboard[k][j]=1;
}
} else if(k-dirt <=(int)high){
setboard[k][j]=1;
} else {
setboard[k][j]=2;
}
}
}
for(int i=0;i<1000;i++){
for(int j=600;j>=410;j--){
if(setboard[j][i]==0){
setboard[j][i]=4;
}
}
}
for(int i=0;i<1000;i++){
bool a=0;
for(int j=999;j>=0;j--){
if(a&&setboard[j][i]!= 0 &&setboard[j][i]!= 8){
setboard[j][i]=6;
continue;
}
if(setboard[j][i]==4){
continue;
}
if(setboard[j][i+3]==4){
a=true;
setboard[j][i]=2;
}
if(setboard[j][i+2]==4){
a=true;
setboard[j][i]=2;
}
if(setboard[j][i+1]==4){
a=true;
setboard[j][i]=2;
}
if(setboard[j][i-1]==4){
a=true;
setboard[j][i]=2;
}
if(setboard[j][i-2]==4){
a=true;
setboard[j][i]=2;
}
if(setboard[j][i-3]==4){
a=true;
setboard[j][i]=2;
}
if(setboard[j-2][i]==4){
a=true;
setboard[j][i]=2;
}
if(setboard[j-1][i]==4){
a=true;
setboard[j][i]=2;
}
if(setboard[j-3][i]==4){
a=true;
setboard[j][i]=2;
}
if(setboard[j-4][i]==4){
a=true;
setboard[j][i]=2;
}
}
}
for(int i=0;i<1000;i++){
for(int j=0;j<1000;j++){
if(setboard[j][i]==0&&block[setboard[j+1][i]].type=="block"){
if(rand()% 10==1){
setboard[j][i]=13;
setboard[j-1][i]=13;
setboard[j-2][i]=13;
setboard[j-3][i]=13;
setboard[j-3][i+1]=14;
setboard[j-3][i-1]=14;
setboard[j-4][i+2]=14;
setboard[j-4][i+1]=14;
setboard[j-4][i]=14;
setboard[j-4][i-1]=14;
setboard[j-4][i-2]=14;
setboard[j-5][i+2]=14;
setboard[j-5][i+1]=14;
setboard[j-5][i]=14;
setboard[j-5][i-1]=14;
setboard[j-5][i-2]=14;
setboard[j-6][i+1]=14;
setboard[j-6][i]=14;
setboard[j-6][i-1]=14;
if(j<=350){
setboard[j-3][i+1]=14;
setboard[j-3][i-1]=14;
setboard[j-4][i+2]=14;
setboard[j-4][i+1]=14;
setboard[j-4][i]=14;
setboard[j-4][i-1]=14;
setboard[j-4][i-2]=14;
setboard[j-5][i+2]=14;
setboard[j-5][i+1]=14;
setboard[j-5][i]=14;
setboard[j-5][i-1]=14;
setboard[j-5][i-2]=14;
setboard[j-6][i+1]=14;
setboard[j-6][i]=14;
setboard[j-6][i-1]=14;
}
}
}
}
}
for(int j=999;j>=700;j--){
if(rand()%20==1){
setboard[j-3][2]=0;
setboard[j-2][2]=0;
setboard[j-2][3]=0;
setboard[j-1][2]=0;
setboard[j-1][3]=0;
setboard[j-1][4]=0;
setboard[j][2]=0;
setboard[j][3]=0;
setboard[j][4]=0;
setboard[j][5]=0;
setboard[j+1][2]=0;
setboard[j+1][3]=0;
setboard[j+1][4]=0;
setboard[j+2][2]=0;
setboard[j+2][3]=0;
setboard[j+3][2]=0;
}
}
__init();
for(int i=3;i<997;i++){
for(int j=996;j>=500;j--){
if(block[setboard[j+3][i]].type=="block"&&block[setboard[j-3][i]].type=="block"&&setboard[j][i]==0&&setboard[j+1][i]==0&&setboard[j+2][i]==0&&setboard[j-1][i]==0 &&setboard[j-2][i]==0){
j+=rand()% 5-2;
j=max(3,j);
j=min(996,j);
if(rand()% 500<=499){
setboard[j-3][i]=0;
setboard[j-2][i-1]=0;
setboard[j-2][i]=0;
setboard[j-2][i+1]=0;
setboard[j-1][i-2]=0;
setboard[j-1][i-1]=0;
setboard[j-1][i]=0;
setboard[j-1][i+1]=0;
setboard[j-1][i+2]=0;
setboard[j][i-3]=0;
setboard[j][i-2]=0;
setboard[j][i-1]=0;
setboard[j][i]=0;
setboard[j][i+1]=0;
setboard[j][i+2]=0;
setboard[j][i+3]=0;
setboard[j+1][i-2]=0;
setboard[j+1][i-1]=0;
setboard[j+1][i]=0;
setboard[j+1][i+1]=0;
setboard[j+1][i+2]=0;
setboard[j+2][i-1]=0;
setboard[j+2][i]=0;
setboard[j+2][i+1]=0;
setboard[j+3][i]=0;
if(rand()% 20==1){
for(int k=0;k<100;k++){
if(mob[k].shap==""){
mob[k]={0,1000,0,0,0,100,"SS",true,7,"僵尸"};
mob[k].x=i;
mob[k].y=j;
break;
}
}
}
}
} else if(block[setboard[j+3][i]].type=="block"&&block[setboard[j+2][i]].type=="block"&&block[setboard[j+1][i]].type=="block"&&block[setboard[j][i]].type=="block"&&block[setboard[j-1][i]].type=="block"&&block[setboard[j-2][i]].type=="block"&&block[setboard[j-3][i]].type=="block"){
if(rand()% 500==1){
setboard[j-3][i]=0;
setboard[j-2][i-1]=0;
setboard[j-2][i]=0;
setboard[j-2][i+1]=0;
setboard[j-1][i-2]=0;
setboard[j-1][i-1]=0;
setboard[j-1][i]=0;
setboard[j-1][i+1]=0;
setboard[j-1][i+2]=0;
setboard[j][i-3]=0;
setboard[j][i-2]=0;
setboard[j][i-1]=0;
setboard[j][i]=0;
setboard[j][i+1]=0;
setboard[j][i+2]=0;
setboard[j][i+3]=0;
setboard[j+1][i-2]=0;
setboard[j+1][i-1]=0;
setboard[j+1][i]=0;
setboard[j+1][i+1]=0;
setboard[j+1][i+2]=0;
setboard[j+2][i-1]=0;
setboard[j+2][i]=0;
setboard[j+2][i+1]=0;
setboard[j+3][i]=0;
}
}
}
}
bool a=false;
for(int i=400;i<1000;i++){
for(int j=0;j<1000;j++){
if(setboard[j][i]==0&&block[setboard[j+1][i]].type=="block" &&(setboard[j+1][i]==3||setboard[j+1][i]==4)){
restartposy=j;
restartposx=i;
y=j;
x=i;
a=true;
break;
}
}
if(a){
break;
}
}
return 0;
}
int Arrowmove(){
for(int i=0;i<100;i++){
if(arrow[i].shap==""){
continue;
}
arrow[i].x+=(int)arrow[i].plusx;
arrow[i].plusx-=0.1;
for(int j=(int)arrow[j].y+1;j <=(int)arrow[j].y +(int)arrow[j].fallspeed;j++){
if(block[board[j][(int)arrow[j].x]].type=="block"||block[board[j][(int)arrow[j].x]].type=="fallblock"){
arrow[i].fallspeed=0;
return 0;
}
}
arrow[i].y+=arrow[i].fallspeed;
arrow[i].fallspeed+=1;
if(arrow[i].y > 999){
arrow[i].shap="";
}
if(block[board[(int)arrow[i].y+1][(int)arrow[i].x]].type=="block"||block[board[(int)arrow[i].y+1][(int)arrow[i].x]].type=="fallblock"){
arrow[i].shap="";
}
}
return 0;
}
int key;
int mobmove(){
for(int j=0;j<100;j++){
if(mob[j].shap==""){
continue;
}
mob[j].hurt=false;
mob[j].color=7;
if(mob[j].health<=0||mob[j].y > 999){
if(mob[j].name=="XX"){
key++;
} else {
mob[j].shap="";
mob[j].color=7;
continue;
}
}
if(block[board[mob[j].y][mob[j].x]].type=="lava"){
mob[j].health-=200;
mob[j].hurt=true;
} else if((board[mob[j].y+1][mob[j].x]==5)||((mob[j].y==y||mob[j].y==y-1)&&(mob[j].x==x+1||mob[j].x==x||mob[j].x==x-1)&& KEY_DOWN(' '))){
mob[j].health-=100;
mob[j].hurt=true;
}
if(mob[j].y==y&&mob[j].x==x&&mob[j].isenemy&&fy==0){
health-=mob[j].attack;
hurt=true;
die="被 "+mob[j].name+" 杀死了";
}
for(int i=mob[j].y-1;i>=mob[j].y+mob[j].fallspeed;i--){
if(block[board[i-1][mob[j].x]].type=="block"){
mob[j].fallspeed=0-mob[j].y+i+1;
return 0;
}
}
for(int i=mob[j].y+1;i<=mob[j].y+mob[j].fallspeed;i++){
if(block[board[i][mob[j].x]].type=="block"||block[board[i][mob[j].x]].type=="fallblock"){
if(mob[j].fallspeed>=5&&block[board[i-1][mob[j].x]].type=="water"){
mob[j].health-=50 *(mob[j].fallspeed-4);
mob[j].hurt=true;
}
mob[j].fallspeed=0;
return 0;
}
}
mob[j].y+=mob[j].fallspeed;
mob[j].fallspeed+=gravity;
if(mob[j].isenemy){
if(mob[j].y > y &&(block[board[mob[j].y+1][mob[j].x]].type=="block"||block[board[mob[j].y+1][mob[j].x]].type=="fallblock")){
if(mob[j].y > y+50){
mob[j].fallspeed=-7;
}
mob[j].fallspeed=-3;
}
if(mob[j].x<x){
if(block[board[mob[j].y][mob[j].x+1]].type!= "block"||block[board[mob[j].y][mob[j].x+1]].type!= "fallblock"){
mob[j].x++;
} else if(block[board[mob[j].y+1][mob[j].x]].type=="block"||block[board[mob[j].y+1][mob[j].x]].type!= "fallblock"){
mob[j].fallspeed=-3;
}
} else if(mob[j].x > x){
if(block[board[mob[j].y][mob[j].x-1]].type!= "block"||block[board[mob[j].y][mob[j].x-1]].type!= "fallblock"){
mob[j].x--;
} else if(block[board[mob[j].y+1][mob[j].x]].type=="block"||block[board[mob[j].y+1][mob[j].x]].type!= "fallblock"){
mob[j].fallspeed=-3;
}
}
} else {
if(rand()% 3==0){
if(block[board[mob[j].y][mob[j].x+1]].type!= "block"||block[board[mob[j].y][mob[j].x+1]].type!= "fallblock"){
mob[j].x++;
} else if(block[board[mob[j].y+1][mob[j].x]].type=="block"||block[board[mob[j].y+1][mob[j].x]].type!= "fallblock"){
mob[j].fallspeed=-3;
}
} else if(rand()% 3==1){
if(block[board[mob[j].y][mob[j].x-1]].type!= "block"||block[board[mob[j].y][mob[j].x-1]].type!= "fallblock"){
mob[j].x--;
} else if(block[board[mob[j].y+1][mob[j].x]].type=="block"||block[board[mob[j].y+1][mob[j].x]].type!= "fallblock"){
mob[j].fallspeed=-3;
}
}
}
if(mob[j].hurt){
mob[j].color=12;
}
}
return 0;
}
int print(){
if(!mode){
color(8);
printf("HP:");
color(12);
cout<<health<<endl;
for(int i=0;i<health;i+=100){
printf("◆");
}
color(7);
for(int i=health;i<lasthealth;i+=100){
printf("◇");
}
printf("\n");
color(8);
printf("AIR:");
color(11);
printf("%d\n",breath);
for(int i=0;i<breath;i+=10){
printf("●");
}
for(int i=breath;i<91;i+=10){
printf("○");
}
printf("\n");
color(8);
cout<<"HUNGRY:";
color(14);
cout<<hungry<<endl;
for(int i=0;i<hungry;i+=100){
cout<<"§";
}
cout<<endl;
}
color(8);
cout<<"DIENUM:";
color(4);
cout<<dienum<<endl;
for(int i=y-6;i<=y+6;i++){
for(int j=x-6;j<=x+6;j++){
bool ismob=false;
for(int s=0;s<100;s++){
if(mob[s].shap==""){
continue;
} else if(mob[s].x==j&&mob[s].y==i){
color(mob[s].color);
cout<<mob[s].shap;
ismob=true;
break;
}
}
if(ismob){
continue;
}
for(int s=0;s<100;s++){
if(arrow[s].shap==""){
continue;
} else if((int)arrow[s].x==j &&(int)arrow[s].y==i){
color(7);
cout<<arrow[s].shap;
ismob=true;
break;
}
}
if(ismob){
continue;
} else if(i==y&&j==x){
if(KEY_DOWN(VK_DOWN)){
color(14);
if(hurt){
color(12);
}
cout<<"()";
} else {
color(9);
if(hurt){
color(12);
}
cout<<"∏";
}
} else if(i==y-1&&j==x){
if(!KEY_DOWN(VK_DOWN)){
color(14);
if(hurt){
color(12);
}
cout<<"()";
} else {
color(block[board[i][j]].color);
cout<<block[board[i][j]].ch;
}
} else {
if(i<0||i>=1000||j<0||j>=1000){
cout<<" ";
continue;
}
color(block[board[i][j]].color);
cout<<block[board[i][j]].ch;
}
}
cout<<endl;
}
color(7);
cout<<"Y:";
color(6);
cout<<1000-y<<endl;
color(7);
cout<<"X:";
color(6);
cout<<x<<endl;
return 0;
}
int move(){
if(board[y][x]==31){
y+=fallspeed;
return 0;
}
if(block[board[y][x]].type=="water"){
if(fallspeed > 1){
fallspeed=1;
}
} else {
for(int i=y-1;i>=y+fallspeed;i--){
if(block[board[i-1][x]].type=="block"||block[board[i-1][x]].type=="fallblock"){
fallspeed=0-y+i+1;
return 0;
}
}
}
for(int i=y+1;i<=y+fallspeed;i++){
if(block[board[i][x]].type=="block"||block[board[i][x]].type=="fallblock"){
if(fallspeed>=5&&block[board[i-1][x]].type!= "water"){
health-=50 *(fallspeed-4);
if(fallspeed>=7){
die="落地过猛!";
} else {
die="从高处摔了下来!";
}
hurt=true;
}
fallspeed=0;
return 0;
}
}
y+=fallspeed;
fallspeed+=gravity;
return 0;
}
int bomb(){
for(int i=0;i<20;i++){
if(tnt[i].time==0){
int atk=0;
if(abs(x-tnt[i].x)+ abs(y-tnt[i].y)==4){
atk=50;
fallspeed-=1;
x+=x-tnt[i].x;
}
if(abs(x-tnt[i].x)+ abs(y-tnt[i].y)==3){
atk=100;
fallspeed-=2;
x+=x-tnt[i].x;
}
if(abs(x-tnt[i].x)+ abs(y-tnt[i].y)==2){
atk=300;
fallspeed-=4;
x+=2 *(x-tnt[i].x);
}
if(abs(x-tnt[i].x)+ abs(y-tnt[i].y)==1){
atk=500;
fallspeed-=7;
x+=5 *(x-tnt[i].x);
}
if(abs(x-tnt[i].x)+ abs(y-tnt[i].y)==0){
atk=800;
fallspeed-=10;
}
tnt[i].time--;
if(!tnt[i].issave){
health-=atk;
}
die="被TNT炸死了";
if(atk > 0&&!tnt[i].issave){
hurt=true;
}
if(!tnt[i].issave){
for(int yy=tnt[i].y-3;yy<=tnt[i].y+3;yy++){
for(int xx=tnt[i].x-3;xx<=tnt[i].x+3;xx++){
if((int)(sqrt(abs(yy-tnt[i].y)* abs(yy-tnt[i].y)+ abs(xx-tnt[i].x)* abs(xx-tnt[i].x))+ 0.9999)==3){
setboard[yy][xx]=28;
}
if((int)(sqrt(abs(yy-tnt[i].y)* abs(yy-tnt[i].y)+ abs(xx-tnt[i].x)* abs(xx-tnt[i].x))+ 0.9999)< 3){
setboard[yy][xx]=0;
}
}
}
}
} else if(tnt[i].time==-1){
setboard[tnt[i].y][tnt[i].x]=0;
if(!tnt[i].issave){
for(int yy=tnt[i].y-3;yy<=tnt[i].y+3;yy++){
for(int xx=tnt[i].x-3;xx<=tnt[i].x+3;xx++){
if((int)(sqrt(abs(yy-tnt[i].y)* abs(yy-tnt[i].y)+ abs(xx-tnt[i].x)* abs(xx-tnt[i].x))+ 0.9999)<= 3){
setboard[yy][xx]=0;
}
}
}
}
tnt[i].time--;
} else if(tnt[i].time > 0){
tnt[i].time--;
if(tnt[i].time % 2==0){
setboard[tnt[i].y][tnt[i].x]=29;
} else {
setboard[tnt[i].y][tnt[i].x]=30;
}
}
}
return 0;
}
int check(){
for(int i=0;i<1000;i++){
for(int j=0;j<1000;j++){
if(block[board[i][j]].type=="water"&&board[i][j]!= 15){
if(board[i+1][j]==0){
setboard[i+1][j]=board[i][j];
setboard[i+1][j]=8;
} else if(block[board[i+1][j]].type=="lava"){
setboard[i+1][j]=2;
} else if(block[board[i+1][j]].type=="block"||block[board[i+1][j]].type=="fallblock"){
if(board[i][j+1]==0){
setboard[i][j+1]=board[i][j]+1;
} else if(block[board[i][j+1]].type=="lava"){
setboard[i][j+1]=2;
}
if(board[i][j-1]==0){
setboard[i][j-1]=board[i][j]+1;
} else if(block[board[i][j-1]].type=="lava"){
setboard[i][j-1]=2;
}
}
}
if(block[board[i][j]].type=="lava"&&board[i][j]!= 23){
if(board[i+1][j]==0){
setboard[i+1][j]=board[i][j];
setboard[i+1][j]=16;
} else if(block[board[i+1][j]].type=="water"){
setboard[i+1][j]=2;
} else if(block[board[i+1][j]].type=="block"||block[board[i+1][j]].type=="fallblock"){
if(board[i][j+1]==0){
setboard[i][j+1]=board[i][j]+1;
} else if(block[board[i][j+1]].type=="water"){
setboard[i][j+1]=2;
}
if(board[i][j-1]==0){
setboard[i][j-1]=board[i][j]+1;
} else if(block[board[i][j-1]].type=="water"){
setboard[i][j-1]=2;
}
}
}
if(block[board[i][j]].type=="fallblock"){
if(board[i+2][j]==0&&board[i+1][j]==0&&i+2<100){
setboard[i][j]=0;
setboard[i+2][j]=board[i][j];
if(board[i][j]==7&&j==x&&i+2==y){
health-=600;
hurt=true;
die="被压扁了";
}
} else if(board[i+1][j]==0&&i+1<100){
setboard[i][j]=0;
setboard[i+1][j]=board[i][j];
if(board[i][j]==7&&j==x&&i+1==y){
health-=600;
hurt=true;
die="被压扁了";
} else if(board[i][j]==7&&j==x&&i+2==y){
health-=600;
hurt=true;
die="被压扁了";
}
}
}
}
}
for(int i=0;i<1000;i++){
for(int j=0;j<1000;j++){
board[i][j]=setboard[i][j];
}
}
}
void putblock(int type,int toward){
if(toward==7){
setboard[y-1][x+1]=type;
}
if(toward==8){
setboard[y-1][x]=type;
}
if(toward==9){
setboard[y-1][x-1]=type;
}
if(toward==4){
setboard[y][x+1]=type;
}
if(toward==6){
setboard[y][x-1]=type;
}
if(toward==1){
setboard[y+1][x+1]=type;
}
if(toward==2){
setboard[y+1][x]=type;
}
if(toward==3){
setboard[y+1][x-1]=type;
}
}
int main(){
system("title Minecraft_2D-下界");
int tools[9]={20,4,3,4,5,6,7,8,9};
int now=0;
srand((int)time(0));
for(int i=0;i<20;i++){
tnt[i].time=-2;
}
init();
while(1){
system("cls");
if(health>1500){
health=1500;
}
if(!mode){
move();
}
if(KEY_DOWN('0')){
cout<<"你即将进入末地";
system("Minecraft-3.exe");
}
if(KEY_DOWN('G')&&setboard[y-2][x]==0){
setboard[y-2][x]=tools[now];
}
if(KEY_DOWN('V')&&setboard[y][x-1]==0){
setboard[y][x-1]=tools[now];
}
if(KEY_DOWN('B')){
setboard[y+1][x]=tools[now];
}
if(KEY_DOWN('N')&&setboard[y][x+1]==0){
setboard[y][x+1]=tools[now];
}
if(KEY_DOWN('H')&&setboard[y-1][x+1]==0){
setboard[y-1][x+1]=tools[now];
}
if(KEY_DOWN('F')&&setboard[y-1][x-1]==0){
setboard[y-1][x-1]=tools[now];
}
check();
bomb();
Arrowmove();
mobmove();
if(mode){
hurt=false;
}
print();
Sleep(Sleep_time);
hungry--;
hungry=max(hungry,0);
if(hungry==0){
die="被饿死了";
hurt=true;
health-=10;
}
if(mode){
health=1000;
}
if(health<=0){
Sleep(500);
system("cls");
color(12);
cout<<" GAME OVER "<<endl;
color(7);
cout<<" STEVE "<<die<<endl;
dienum++;
Sleep(2000);
x=restartposx;
y=restartposy;
health=1000;
hungry=1000;
breath=100;
fallspeed=0;
}
health+=(hungry+201)/ 300;
if(attack){
attack=0;
}
if(defense){
defense=0;
}
if(hurt){
hurt=false;
lasthealth=health;
}
if(block[board[y][x]].type=="water"){
fallspeed=1;
if(KEY_DOWN(VK_UP)){
fallspeed=-1;
}
}
if(block[board[y-1][x]].type=="water"){
die="被水淹死了!";
breath--;
} else {
breath++;
if(breath > 100){
breath=100;
}
}
if(board[y][x]==31){
fallspeed=0;
if(KEY_DOWN(VK_UP)){
fallspeed=-1;
}
if(KEY_DOWN(VK_DOWN)){
fallspeed=1;
}
}
if(block[board[y][x]].type=="lava"){
if(block[board[y-1][x]].type=="lava"){
if(block[board[y-2][x]].type=="iron"
&&block[board[y-1][x-1]].type=="iron"
&&block[board[y-1][x+1]].type=="iron"
&&block[board[y][x-1]].type=="iron"
&&block[board[y][x+1]].type=="iron"
&&block[board[y+1][x]].type=="iron"
){
cout<<"你正在进入主世界!";
cout<<"由于数组原因,作者不得不再次加载一个程序,不然你的电脑可能会boom!";
system("Minecraft-1.exe");
}
}
else if(block[board[y+1][x]].type=="lava"){
if(block[board[y-1][x]].type=="iron"
&&block[board[y+1][x-1]].type=="iron"
&&block[board[y+11][x+1]].type=="iron"
&&block[board[y][x-1]].type=="iron"
&&block[board[y][x+1]].type=="iron"
&&block[board[y+2][x]].type=="iron"
){
cout<<"你正在进入主世界!";
cout<<"由于数组原因,作者不得不再次加载一个程序,不然你的电脑可能会boom!";
system("Minecraft-1.exe");
}
}
fallspeed=1;
if(KEY_DOWN(VK_UP)){
fallspeed=-1;
}
die="试图在岩浆里游泳!";
hurt=true;
health-=100;
}
if(KEY_DOWN(VK_UP)&&!KEY_DOWN(VK_DOWN)){
if(mode){
y--;
} else {
if(block[board[y][x]].type!= "water"&&board[y][x]!= 31){
if(block[board[y+1][x]].type=="block"||block[board[y+1][x]].type=="fallblock"){
fallspeed=jumpspeed;
}
}
}
}
if(KEY_DOWN(VK_LEFT)){
if((block[board[y][x-1]].type!= "block"&&block[board[y][x-1]].type!= "fallblock")|| mode){
if(KEY_DOWN(VK_DOWN)||(block[board[y-1][x-1]].type!= "block"&&block[board[y-1][x-1]].type!= "fallblock")|| mode){
x-=1;
}
}
face=-1;
}
if(KEY_DOWN(VK_RIGHT)){
if((block[board[y][x+1]].type!= "block"&&block[board[y][x+1]].type!= "fallblock")|| mode){
if(KEY_DOWN(VK_DOWN)||(block[board[y-1][x+1]].type!= "block" &&block[board[y-1][x+1]].type!= "fallblock")|| mode){
x+=1;
}
}
face=1;
}
if(KEY_DOWN(VK_DOWN)){
if(mode){
y++;
} else {
fallspeed+=1;
}
}
if(KEY_DOWN(' ')){
attack=true;
}
if(KEY_DOWN('R')){
fy+=1;
hungry-=20;
}
if(KEY_DOWN('G')&& 1000-hungry<=90){
food-=1;
hungry+=90;
}
if(KEY_DOWN('K')){
for(int i=0;i<100;i++){
if(mob[i].y==y&&mob[i].x==x&&mob[i].isenemy){
mob[i].health-=20;
}
}
}
if(KEY_DOWN('J')){
for(int i=0;i<100;i++){
if(mob[i].y==y-1&&mob[i].x==x&&mob[i].isenemy){
mob[i].health-=20;
}
}
}
if(KEY_DOWN('I')){
for(int i=0;i<100;i++){
if(mob[i].y==y&&mob[i].x==x+1&&mob[i].isenemy){
mob[i].health-=20;
}
}
}
if(KEY_DOWN('L')){
for(int i=0;i<100;i++){
if(mob[i].y==y+1&&mob[i].x==x&&mob[i].isenemy){
mob[i].health-=20;
}
}
}
if(KEY_DOWN('R')){
system("cls");
for(int i=0;i<35;i++){
switch(i){
case 1:
cout<<i<<":土块:"<<bag[i]<<"个 ";
break;
case 2:
cout<<i<<":石头:∞个";
break;
case 3:
cout<<i<<":草方块:"<<bag[i]<<"个";
break;
case 4:
cout<<i<<":雪块:"<<bag[i]<<"个";
break;
case 5:
cout<<i<<":岩浆块:"<<bag[i]<<"个";
break;
case 6:
cout<<i<<":沙块:∞个";
break;
case 7:
cout<<i<<":铁砧:∞个";
break;
case 8:
cout<<i<<":水:∞个";
break;
case 17:
cout<<i<<":岩浆:∞个";
break;
case 29:
cout<<i<<":TNT:∞个";
break;
case 30:
cout<<i<<":TNT2:∞个";
break;
case 31:
cout<<i<<":梯子:∞个";
break;
case 32:
cout<<i<<":铁:"<<bag[i]<<"个";
break;
case 33:
cout<<i<<":钻石:"<<bag[i]<<"个";
break;
case 34:
cout<<i<<":煤炭:"<<bag[i]<<"个";
break;
}
}
cout<<endl<<"你要\n1.丢弃某个东西 2.把某个东西放到物品栏中";
int kkkz,num;
cin>>kkkz;
if(kkkz=1){
cout<<"你丢弃的物品号码(对应号码如上)\n";
cin>>kkkz;
cout<<"丢弃个数\n";
cin>>num;
if(num>bag[kkkz]){
bag[kkkz]=0;
}
if(num<bag[kkkz]){
bag[kkkz]-num;
}
}
if(kkkz==2){
cout<<"要放的东西\n";
cin>>kkkz;
cout<<"第几个\n";
cin>>num;
swap(tools[num-1],kkkz);
}
}
if(KEY_DOWN('1'))now=0;
if(KEY_DOWN('2'))now=1;
if(KEY_DOWN('3'))now=2;
if(KEY_DOWN('4'))now=3;
if(KEY_DOWN('5'))now=4;
if(KEY_DOWN('6'))now=5;
if(KEY_DOWN('7'))now=6;
if(KEY_DOWN('8'))now=7;
if(KEY_DOWN('9'))now=8;
if(KEY_DOWN('C')){
hungry+=100;
hungry=min(hungry,1000);
}
if(KEY_DOWN('Z')){
for(int i=0;i<20;i++){
if(tnt[i].time==-2){
tnt[i]={y,x,10,0};
break;
}
}
}
if(KEY_DOWN('i')){
for(int i=0;i<20;i++){
if(tnt[i].time==-2){
tnt[i]={y,x,10,1};
break;
}
}
}
if(KEY_DOWN('[')){
for(int i=0;i<20;i++){
if(tnt[i].time==-2){
tnt[i]={y,x,10,2};
break;
}
}
}
if(KEY_DOWN(']')){
for(int i=0;i<20;i++){
if(tnt[i].time==-2){
tnt[i]={y,x,10,3};
break;
}
}
}
if(KEY_DOWN('|')){
for(int i=0;i<20;i++){
if(tnt[i].time==-2){
tnt[i]={y,x,10,4};
break;
}
}
}
if(KEY_DOWN('O')){
for(int i=0;i<20;i++){
if(tnt[i].time==-2){
tnt[i]={y,x,10,5};
break;
}
}
}
if(KEY_DOWN('W')){
bag[setboard[y-2][x]]++;
setboard[y-2][x]=0;
}
if(KEY_DOWN('A')){
bag[setboard[y][x-1]]++;
setboard[y][x-1]=0;
}
if(KEY_DOWN('S')){
bag[setboard[y+1][x]]++;
setboard[y+1][x]=0;
}
if(KEY_DOWN('D')){
bag[setboard[y][x+1]]++;
setboard[y][x+1]=0;
}
if(KEY_DOWN('E')){
bag[setboard[y-1][x+1]]++;
setboard[y-1][x+1]=0;
}
if(KEY_DOWN('Q')){
bag[setboard[y-1][x-1]]++;
setboard[y-1][x-1]=0;
}
if(KEY_DOWN('X')){
setboard[y][x]=24;
}
if(KEY_DOWN('Y')){
if(face==1){
for(int i=0;i<100;i++){
if(arrow[i].shap==""){
arrow[i]={"→",y,x,-0.7,2};
break;
}
}
} else {
for(int i=0;i<100;i++){
if(arrow[i].shap==""){
arrow[i]={"←",y,x,-0.7,-2};
break;
}
}
}
}
if(KEY_DOWN('T')){
clear_buffer();
system("cls");
cout<<"请输入指令:"<<endl;
string a;
cin>>a;
if(a=="kill"){
die="失败了。";
hurt=true;
health=0;
}
if(a=="full_health"){
health=1000;
}
if(a=="creativemode"){
mode=!mode;
}
if(a=="move"){
cin>>y>>x;
y=1000-y;
}
if(a=="summom"){
int a;
cin>>a;
for(int i=0;i<100;i++){
if(mob[i].shap==""){
mob[i]=mobs[a];
mob[i].x=x;
mob[i].y=y;
break;
}
}
}
}
if(KEY_DOWN('O')){
for(int i=0;i<1000;i++){
for(int j=0;j<1000;j++){
setboard[i][j]=0;
}
}
}
if(KEY_DOWN('`')){
breath+=100;
}
if(KEY_DOWN('P')){
for(int i=0;i<1000;i++){
for(int j=0;j<1000;j++){
setboard[i][j]=2;
}
}
}
if(y > 1000){
die="掉出了这个世界!";
hurt=true;
health-=200;
}
if(breath<=0){
breath=0;
hurt=true;
health-=10;
}
if(!KEY_DOWN(VK_DOWN)&& block[board[y-1][x]].type=="block"){
die="在墙里窒息死亡!";
hurt=true;
health-=50;
}
if(board[y+1][x]==5){
hurt=true;
die="发现了地板是熔岩做的。";
health-=30;
}
clear_buffer();
}
return 0;
}
还有第二篇