之前的版本中,当物质发生爆炸时,“你”不可移动,且游戏玩法消失。经过改进,4.0版解决了这个问题,现在把它敲(复制)在下面:
#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
using namespace std;
int playmap[10][10]={
{8,8,8,8,8,8,8,8,8,8},
{8,1,1,1,1,1,1,1,1,8},
{8,1,1,1,1,1,1,1,1,8},
{8,1,1,1,1,1,1,1,1,8},
{8,1,1,1,2,1,1,1,1,8},
{8,1,1,1,1,1,1,1,1,8},
{8,1,1,1,1,1,1,1,1,8},
{8,1,1,1,1,1,1,1,1,8},
{8,1,1,1,1,1,1,1,1,8},
{8,8,8,8,8,8,8,8,8,8},
};
void SetColorAndBackground(int ForgC, int BackC) {
WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
}
int x,y;
int bao[10][10]={0};
int w=0;
int qwe=1;
int g=0;
int t,u;
char n;
int main(){
system("cls");
cout<<endl;
cout<<"--------------------------------------物质模拟器-----------------------------------"<<endl;
cout<<"游戏作者:dinosaursmallmi"<<endl;
cout<<endl;
cout<<"图标:“你”:你,“氢”:氢气,“油”:汽油,“硝”:硝酸,“箭”:火箭弹"<<endl;
cout<<"按键:按e在“你”的上面释放氢气,按f在“你”的下面撒汽油,按r引爆所有能爆炸的东西,按c在“你”的下面撒硝酸,按空格向右发射火箭弹"<<endl;
cout<<"information:由于此游戏有防止炸自己的保护,你可以随心畅玩,躺在爆炸物堆里引爆也没事"<<endl;
cout<<"information:由于此游戏有防止炸自己的保护,你可以随心畅玩,躺在爆炸物堆里引爆也没事"<<endl;
system("pause");
while(1)
{
system("cls");
cout<<endl;
cout<<"--------------------------------------物质模拟器-----------------------------------"<<endl;
cout<<"游戏作者:dinosaursmallmi"<<endl;
cout<<endl;
cout<<"图标:“你”:你,“氢”:氢气,“油”:汽油,“硝”:硝酸,“箭”:火箭弹"<<endl;
cout<<"按键:按e在“你”的上面释放氢气,按f在“你”的下面撒汽油,按r引爆所有能爆炸的东西,按c在“你”的下面撒硝酸,按空格向右发射火箭弹"<<endl;
cout<<"information:由于此游戏有防止炸自己的保护,你可以随心畅玩,躺在爆炸物堆里引爆也没事"<<endl;
cout<<endl;
for(int a=0;a<10;a++)
{
for(int b=0;b<10;b++)
{
switch(playmap[a][b])
{
case 1:cout<<" ";break;
case 2:cout<<"你";break;
case 8:cout<<"边";break;
case 3:cout<<"氢";break;
case 4:SetColorAndBackground(12,0);cout<<"火";SetColorAndBackground(15,0);break;
case 5:SetColorAndBackground(11,0);cout<<"油";SetColorAndBackground(15,0);break;
case 6:SetColorAndBackground(14,0);cout<<"硝";SetColorAndBackground(15,0);break;
case 7:SetColorAndBackground(9,0);cout<<"箭";SetColorAndBackground(15,0);break;
}
}
cout<<endl;
}
Sleep(30);
for(int a=0;a<10;a++)
{
for(int b=0;b<10;b++)
{
switch(bao[a][b])
{
case 0:
break;
case 2:
bao[a][b]=3;
break;
case 3:
bao[a][b]=4;
break;
case 4:
bao[a][b]=5;
break;
case 5:
bao[a][b]=0;
if(playmap[a][b]!=8&&playmap[a][b]!=2)
{
playmap[a][b]=1;
}
break;
}
}
}
for(int a=0;a<10;a++)
{
for(int b=0;b<10;b++)
{
if(playmap[a][b]==4&&bao[a][b]==0)
{
bao[a][b]=2;
}
}
}
for(int c=0;c<10;c++)
{
for(int d=0;d<10;d++)
{
if(playmap[c][d]==2)
{
x=c;
y=d;
}
}
}
if(kbhit())
{
n=getch();
w=1;
}
if(w==1)
{
switch(n)
{
case 'w':
if(playmap[x-1][y]==1)
{
playmap[x-1][y]=2;
playmap[x][y]=1;
}
break;
case 's':
if(playmap[x+1][y]==1)
{
playmap[x+1][y]=2;
playmap[x][y]=1;
}
break;
case 'a':
if(playmap[x][y-1]==1)
{
playmap[x][y-1]=2;
playmap[x][y]=1;
}
break;
case 'd':
if(playmap[x][y+1]==1)
{
playmap[x][y+1]=2;
playmap[x][y]=1;
}
break;
case 'e':
if(playmap[x-1][y]==1)
{
playmap[x-1][y]=3;
}
break;
case 'r':
g=1;
break;
case 'f':
if(playmap[x+1][y]==1)
{
playmap[x+1][y]=5;
}
break;
case 'c':
if(playmap[x+1][y]==1)
{
playmap[x+1][y]=6;
}
break;
case ' ':
if(playmap[x][y+1]==1)
{
playmap[x][y+1]=7;
}
break;
}
}
w=0;
if(g==1)
{
g=0;
for(int f=0;f<10;f++)
{
for(int h=0;h<10;h++)
{
if(playmap[f][h]==3||playmap[f][h]==5)
{
t=f;
u=h;
playmap[t][u]=4;
bao[t][u]=2;
if(playmap[t+1][u]!=8&&playmap[t+1][u]!=2)
playmap[t+1][u]=4;bao[t+1][u]=2;
if(playmap[t-1][u]!=8&&playmap[t-1][u]!=2)
playmap[t-1][u]=4;bao[t-1][u]=2;
if(playmap[t][u+1]!=8&&playmap[t][u+1]!=2)
playmap[t][u+1]=4;bao[t][u+1]=2;
if(playmap[t][u-1]!=8&&playmap[t][u-1]!=2)
playmap[t][u-1]=4;bao[t][u-1]=2;
}
if(playmap[f][h]==6)
{
t=f;
u=h;
playmap[t][u]=4;
bao[t][u]=2;
if(playmap[t+1][u]!=8&&playmap[t+1][u]!=2)
playmap[t+1][u]=4;bao[t+1][u]=2;
if(playmap[t-1][u]!=8&&playmap[t-1][u]!=2)
playmap[t-1][u]=4;bao[t-1][u]=2;
if(playmap[t][u+1]!=8&&playmap[t][u+1]!=2)
playmap[t][u+1]=4;bao[t][u+1]=2;
if(playmap[t][u-1]!=8&&playmap[t][u-1]!=2)
playmap[t][u-1]=4;bao[t][u-1]=2;
if(playmap[t+2][u]!=8&&playmap[t+2][u]!=2)
playmap[t+2][u]=4;bao[t+2][u]=2;
if(playmap[t-2][u]!=8&&playmap[t-2][u]!=2)
playmap[t-2][u]=4;bao[t-2][u]=2;
if(playmap[t][u+2]!=8&&playmap[t][u+2]!=2)
playmap[t][u+2]=4;bao[t][u+2]=2;
if(playmap[t][u-2]!=8&&playmap[t][u-2]!=2)
playmap[t][u-2]=4;bao[t][u-2]=2;
}
}
}
}
for(int aa=0;aa<10;aa++)
{
for(int bb=0;bb<10;bb++)
{
if(playmap[aa][bb]==3)
{
if(playmap[aa-1][bb]!=1)
{
if(playmap[aa-1][bb-1]==1)
{
playmap[aa-1][bb-1]=3;
playmap[aa][bb]=1;
}
else if(playmap[aa-1][bb+1]==1)
{
playmap[aa-1][bb+1]=3;
playmap[aa][bb]=1;
}
break;
}
if(playmap[aa-1][bb]==1)
{
playmap[aa-1][bb]=3;
playmap[aa][bb]=1;
}
}
}
}
for(int qw=0;qw<10;qw++)
{
for(int we=0;we<10;we++)
{
if(playmap[qw][we]==5)
{
if(playmap[qw+1][we]!=1)
{
if(playmap[qw+1][we-1]==1)
{
playmap[qw+1][we-1]=5;
playmap[qw][we]=1;
qwe=2;
break;
}
else if(playmap[qw+1][we+1]==1)
{
playmap[qw+1][we+1]=5;
playmap[qw][we]=1;
qwe=2;
break;
}
}
if(playmap[qw+1][we]==1)
{
playmap[qw+1][we]=5;
playmap[qw][we]=1;
qwe=2;
break;
}
}
}
if(qwe==2)
{
qwe=1;
break;
}
}
for(int qw=0;qw<10;qw++)
{
for(int we=0;we<10;we++)
{
if(playmap[qw][we]==6)
{
if(playmap[qw+1][we]!=1)
{
if(playmap[qw+1][we-1]==1)
{
playmap[qw+1][we-1]=6;
playmap[qw][we]=1;
qwe=2;
break;
}
else if(playmap[qw+1][we+1]==1)
{
playmap[qw+1][we+1]=6;
playmap[qw][we]=1;
qwe=2;
break;
}
}
if(playmap[qw+1][we]==1)
{
playmap[qw+1][we]=6;
playmap[qw][we]=1;
qwe=2;
break;
}
}
}
if(qwe==2)
{
qwe=1;
break;
}
}
for(int qw=0;qw<10;qw++)
{
for(int we=0;we<10;we++)
{
if(playmap[qw][we]==7)
{
if(playmap[qw][we+1]==1)
{
playmap[qw][we+1]=7;
playmap[qw][we]=1;
qwe=2;
break;
}
else
{
playmap[qw][we]=4;
bao[qw][we]=2;
if(playmap[qw+1][we]!=8&&playmap[qw+1][we]!=2)
playmap[qw+1][we]=4;bao[qw+1][we]=2;
if(playmap[qw-1][we]!=8&&playmap[qw-1][we]!=2)
playmap[qw-1][we]=4;bao[qw-1][we]=2;
if(playmap[qw][we+1]!=8&&playmap[qw][we+1]!=2)
playmap[qw][we+1]=4;bao[qw][we+1]=2;
if(playmap[qw][we-1]!=8&&playmap[qw][we-1]!=2)
playmap[qw][we-1]=4;bao[qw][we-1]=2;
}
}
}
if(qwe==2)
{
qwe=1;
break;
}
}
}
return 0;
}