感谢各位又打开了我的一篇卑微之作,你们的阅读是我写作的动力!
不多说了,开整!
(玩法见游戏)
#include<iostream>
#include<conio.h>
#include<windows.h>
#include<cstring>
using namespace std;
int playmap[10][10]={
{8,8,8,8,8,8,8,8,8,8},
{8,1,1,1,2,1,1,1,1,8},
{8,1,1,1,1,1,1,1,1,8},
{8,5,5,1,5,5,1,5,1,8},
{8,1,5,1,5,1,5,1,5,8},
{8,5,1,5,1,1,5,5,5,8},
{8,1,5,5,5,5,1,5,5,8},
{8,5,5,1,5,5,5,1,5,8},
{8,1,1,1,1,1,1,1,1,8},
{8,8,8,8,8,8,8,8,8,8}};
int bombmap[10][10];
char n;
int x,y;
int zd=1;
int qwe=1;
int bomb=1;
void welcome();
void SetColorAndBackground(int ForgC, int BackC) {
WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
}
void welcome()
{
int af=1;
while(af<=100)
{
system("cls");
cout<<"--------------------------------------炸弹模拟器------------------------------------"<<endl;
cout<<"游戏加载中..."<<endl;
SetColorAndBackground(11,0);
for(int b=1;b<af;b++)
{
cout<<"▉";
}
cout<<" "<<af<<"%";
SetColorAndBackground(15,0);
af=af+1;
Sleep(20);
}
cout<<endl;
cout<<"加载完毕!"<<endl;
Sleep(1500);
system("cls");
cout<<"--------------------------------------炸弹模拟器------------------------------------"<<endl;
cout<<"游戏作者:dinosaursmallmi"<<endl;
cout<<endl;
cout<<"图标:“你”:你,“边”:边界,“";
SetColorAndBackground(12,0);
cout<<"⊕";
SetColorAndBackground(15,0);
cout<<"”:爆炸时的火,“";
SetColorAndBackground(8,0);
cout<<"石";
SetColorAndBackground(15,0);
cout<<"”:石头,“";
SetColorAndBackground(6,0);
cout<<"¤";
SetColorAndBackground(15,0);
cout<<"”你扔下的炸弹"<<endl;
cout<<"按键:w s a d 移动,按空格在“你”的下面释放炸弹(可以往石头和火上释放,防止“你”卡在石头里),按“=”在地图上刷新石头"<<endl;
cout<<"按键:按“+”和“-”更改炸弹爆炸模式(有3个模式),按“e”开启、关闭炸弹钻地模式(开启后炸弹能边钻地边爆炸)"<<endl;
cout<<"小秘诀:炸弹爆炸模式切换到3,并开启炸弹钻地模式,很爽(最少3个炸弹毁掉所有石头)"<<endl;
cout<<"目标:没有目标,尽情玩吧!"<<endl;
cout<<endl;
system("pause");
}
int main()
{
memset(bombmap,0,sizeof(bombmap));
for(int qw=0;qw<10;qw++)
{
for(int we=0;we<10;we++)
{
if(playmap[qw][we]==5)
{
bombmap[qw][we]=5;
}
}
}
welcome();
while(1)
{
Sleep(30);
system("cls");
cout<<"--------------------------------------炸弹模拟器------------------------------------"<<endl;
cout<<"游戏作者:dinosaursmallmi"<<endl;
cout<<endl;
cout<<"图标:“你”:你,“边”:边界,“";
SetColorAndBackground(12,0);
cout<<"⊕";
SetColorAndBackground(15,0);
cout<<"”:爆炸时的火,“";
SetColorAndBackground(8,0);
cout<<"石";
SetColorAndBackground(15,0);
cout<<"”:石头,“";
SetColorAndBackground(6,0);
cout<<"¤";
SetColorAndBackground(15,0);
cout<<"”你扔下的炸弹"<<endl;
cout<<"按键:w s a d 移动,按空格在“你”的下面释放炸弹(可以往石头和火上释放,防止“你”卡在石头里),按“=”在地图上刷新石头"<<endl;
cout<<"按键:按“+”和“-”更改炸弹爆炸模式(有3个模式),按“e”开启、关闭炸弹钻地模式(开启后炸弹能边钻地边爆炸)"<<endl;
cout<<"小秘诀:炸弹爆炸模式切换到3,并开启炸弹钻地模式,很爽(最少3个炸弹毁掉所有石头)"<<endl;
cout<<"目标:没有目标,尽情玩吧!"<<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 3:SetColorAndBackground(6,0);cout<<"¤";SetColorAndBackground(15,0);break;
case 2:cout<<"你";break;
case 8:cout<<"边";break;
case 5:SetColorAndBackground(8,0);cout<<"石";SetColorAndBackground(15,0);break;
case 4:SetColorAndBackground(12,0);cout<<"⊕";SetColorAndBackground(15,0);break;
}
}
cout<<endl;
}
cout<<endl;
cout<<"炸弹爆炸:模式"<<bomb<<endl;
if(zd==2)
cout<<"炸弹钻地模式已开启"<<endl;
for(int c=0;c<10;c++)
{
for(int d=0;d<10;d++)
{
if(playmap[c][d]==2)
{
x=c;
y=d;
break;
}
}
}
if(qwe==5)
{
qwe=1;
for(int cc=0;cc<10;cc++)
{
for(int dd=0;dd<10;dd++)
{
switch(playmap[cc][dd])
{
case 4:playmap[cc][dd]=1;break;
}
}
}
}
if(qwe==4)
qwe=5;
if(qwe==3)
qwe=4;
if(qwe==2)
qwe=3;
for(int as=10;as>0;as--)
{
for(int sd=10;sd>0;sd--)
{
if(playmap[as][sd]==3)
{
if(playmap[as+1][sd]==8||playmap[as+1][sd]==5)
{
playmap[as][sd]=4;
switch(bomb)
{
case 1:
if(playmap[as+1][sd]==1||playmap[as+1][sd]==5)
playmap[as+1][sd]=4;
if(playmap[as-1][sd]==1||playmap[as-1][sd]==5)
playmap[as-1][sd]=4;
if(playmap[as][sd+1]==1||playmap[as][sd+1]==5)
playmap[as][sd+1]=4;
if(playmap[as][sd-1]==1||playmap[as][sd-1]==5)
playmap[as][sd-1]=4;
qwe=2;
break;
case 2:
if(playmap[as+1][sd]==1||playmap[as+1][sd]==5)
playmap[as+1][sd]=4;
if(playmap[as-1][sd]==1||playmap[as-1][sd]==5)
playmap[as-1][sd]=4;
if(playmap[as][sd+1]==1||playmap[as][sd+1]==5)
playmap[as][sd+1]=4;
if(playmap[as][sd-1]==1||playmap[as][sd-1]==5)
playmap[as][sd-1]=4;
if(playmap[as+1][sd+1]==1||playmap[as+1][sd+1]==5)
playmap[as+1][sd+1]=4;
if(playmap[as-1][sd-1]==1||playmap[as-1][sd-1]==5)
playmap[as-1][sd-1]=4;
if(playmap[as-1][sd+1]==1||playmap[as-1][sd+1]==5)
playmap[as-1][sd+1]=4;
if(playmap[as+1][sd-1]==1||playmap[as+1][sd-1]==5)
playmap[as+1][sd-1]=4;
qwe=2;
break;
case 3:
if(playmap[as+1][sd]==1||playmap[as+1][sd]==5)
playmap[as+1][sd]=4;
if(playmap[as-1][sd]==1||playmap[as-1][sd]==5)
playmap[as-1][sd]=4;
if(playmap[as][sd+1]==1||playmap[as][sd+1]==5)
playmap[as][sd+1]=4;
if(playmap[as][sd-1]==1||playmap[as][sd-1]==5)
playmap[as][sd-1]=4;
if(playmap[as+1][sd+1]==1||playmap[as+1][sd+1]==5)
playmap[as+1][sd+1]=4;
if(playmap[as-1][sd-1]==1||playmap[as-1][sd-1]==5)
playmap[as-1][sd-1]=4;
if(playmap[as-1][sd+1]==1||playmap[as-1][sd+1]==5)
playmap[as-1][sd+1]=4;
if(playmap[as+1][sd-1]==1||playmap[as+1][sd-1]==5)
playmap[as+1][sd-1]=4;
if(playmap[as+2][sd]==1||playmap[as+2][sd]==5)
playmap[as+2][sd]=4;
if(playmap[as-2][sd]==1||playmap[as-2][sd]==5)
playmap[as-2][sd]=4;
if(playmap[as][sd+2]==1||playmap[as][sd+2]==5)
playmap[as][sd+2]=4;
if(playmap[as][sd-2]==1||playmap[as][sd-2]==5)
playmap[as][sd-2]=4;
qwe=2;
break;
}
}
if(playmap[as+1][sd]==1&&zd==1)
{
playmap[as+1][sd]=3;
playmap[as][sd]=1;
}
if((playmap[as+1][sd]==1&&zd==2)||(playmap[as+1][sd]==4&&zd==2))
{
playmap[as+1][sd]=3;
playmap[as][sd]=1;
}
}
}
}
if(kbhit())
{
n=getch();
switch(n)
{
case 'w':
if(playmap[x-1][y]==1||playmap[x-1][y]==4)
{
playmap[x-1][y]=2;
playmap[x][y]=1;
break;
}
case 's':
if(playmap[x+1][y]==1||playmap[x+1][y]==4)
{
playmap[x+1][y]=2;
playmap[x][y]=1;
break;
}
case 'a':
if(playmap[x][y-1]==1||playmap[x][y-1]==4)
{
playmap[x][y-1]=2;
playmap[x][y]=1;
break;
}
case 'd':
if(playmap[x][y+1]==1||playmap[x][y+1]==4)
{
playmap[x][y+1]=2;
playmap[x][y]=1;
break;
}
case ' ':
if(playmap[x+1][y]==1||playmap[x+1][y]==4||playmap[x+1][y]==5)
{
playmap[x+1][y]=3;
break;
}
case '+':
if((bomb+1)!=4)
bomb+=1;
break;
case '-':
if((bomb-1)!=0)
bomb-=1;
break;
case 'e':
if(zd==1)
{
zd=2;
break;
}
if(zd==2)
{
zd=1;
break;
}
case '=':
for(int er=0;er<10;er++)
{
for(int rt=0;rt<10;rt++)
{
if(bombmap[er][rt]==5&&playmap[er][rt]==1)
playmap[er][rt]=5;
}
}
break;
}
}
}
}