专栏文章
C++之逃离后室游戏
休闲·娱乐参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mioe8qyg
- 此快照首次捕获于
- 2025/12/02 17:46 3 个月前
- 此快照最后确认于
- 2025/12/02 17:46 3 个月前
传统wsad上下左右移动,躲避‘G’的抓捕,拿到钥匙‘K’,然后用子弹(小键盘8246对应子弹上下左右)消灭‘G’,最后从门‘D’逃脱,简单小游戏,水作不易之作,求赞
CPP#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <ctime>
#include <conio.h>
using namespace std;
char mapa[11][11];
bool canmove(int x,int y){
if(x>0&&x<11&&y>0&&y<11&&mapa[x][y]!='#')return true;
return false;
}
void writemap(){
for(int i=1;i<=10;i++){
for(int j=1;j<=10;j++){
mapa[i][j]='.';
}
}
int startx,starty,keyx,keyy,badx,bady,doorx,doory;
startx=rand()%10+1;
starty=rand()%10+1;
mapa[startx][starty]='S';
do{
keyx=rand()%10+1;
keyy=rand()%10+1;
}while(keyx==startx&&keyy==starty);
mapa[keyx][keyy]='K';
do{
badx=rand()%10+1;
bady=rand()%10+1;
}while((badx==startx&&bady==starty)||(badx==keyx&&bady==keyy));
mapa[badx][bady]='B';
do{
doorx=rand()%10+1;
doory=rand()%10+1;
}while((doorx==startx&&doory==starty)||(doorx==keyx&&doory==keyy)||(doorx==badx&&doory==bady));
mapa[doorx][doory]='D';
for(int i=1;i<=10;i++){
for(int j=1;j<=10;j++){
int b=rand()%8+1;
if(b==1)mapa[i][j]='#';
}
}
}
int main(){
srand(time(NULL));
system("cls");
writemap();
int x,y,ex,ey,gx,gy,gx2,gy2,zx,zy;
int usez=0;
for(int i=1;i<=10;i++){
for(int j=1;j<=10;j++){
if(mapa[i][j]=='S'){
x=i;
y=j;
}
else if(mapa[i][j]=='D'){
ex=i;
ey=j;
}else if(mapa[i][j]=='B'){
gx=i;
gx2=i;
gy=j;
gy2=j;
}
}
}
bool havekey=0;
int dead1=0,dead2=0;
int gmove=0;
while((x!=ex||y!=ey||havekey!=1||dead1!=5||dead2!=5)&&(x!=gx||y!=gy||dead1!=5)&&(x!=gx2||y!=gy2||dead2!=5)){
if(!usez){
zx=x;
zy=y;
}
for(int i=1;i<=10;i++){
for(int j=1;j<=10;j++){
if(i==x&&j==y)cout<<'O';
else if(i==zx&&j==zy)cout<<'*';
else if((i==gx&&j==gy&&dead1!=5)||(i==gx2&&j==gy2&&dead2!=5))cout<<'G';
else cout<<mapa[i][j];
}
cout<<endl;
}
if(_kbhit()){
char oct=_getch();
switch(oct){
case 'a':
if(canmove(x,y-1))y--;
cout<<"左"<<endl;
break;
case 'd':
if(canmove(x,y+1))y++;
cout<<"右"<<endl;
break;
case 'w':
if(canmove(x-1,y))x--;
cout<<"上"<<endl;
break;
case 's':
if(canmove(x+1,y))x++;
cout<<"下"<<endl;
break;
case '8':
if(!usez)usez=1;
cout<<"biu"<<endl;
break;
case '2':
usez=2;
if(!usez)cout<<"biu"<<endl;
break;
case '4':
if(!usez)usez=3;
cout<<"biu"<<endl;
break;
case '6':
if(!usez)usez=4;
cout<<"biu"<<endl;
break;
}
}
if(gmove%5==0){
int t=rand()%400+1;
if(t>=1&&t<=100){
if(canmove(gx,gy-1)&&mapa[gx][gy-1]!='S')gy--;
}
if(t>=101&&t<=200){
if(canmove(gx,gy+1)&&mapa[gx][gy+1]!='S')gy++;
}
if(t>=201&&t<=300){
if(canmove(gx-1,gy)&&mapa[gx-1][gy]!='S')gx--;
}
if(t>=301&&t<=400){
if(canmove(gx+1,gy)&&mapa[gx+1][gy]!='S')gx++;
}
t=rand()%400+1;
if(t>=1&&t<=100){
if(canmove(gx2,gy2-1)&&mapa[gx2][gy2-1]!='S')gy2--;
}
if(t>=101&&t<=200){
if(canmove(gx2,gy2+1)&&mapa[gx2][gy2+1]!='S')gy2++;
}
if(t>=201&&t<=300){
if(canmove(gx2-1,gy2)&&mapa[gx2-1][gy2]!='S')gx2--;
}
if(t>=301&&t<=400){
if(canmove(gx2+1,gy2)&&mapa[gx2+1][gy2]!='S')gx2++;
}
}
Sleep(50);
system("cls");
gmove++;
if(gmove%2==0&&usez){
if(usez==1)zx--;
if(usez==2)zx++;
if(usez==3)zy--;
if(usez==4)zy++;
if(zx==gx&&zy==gy&&dead1!=5)dead1++;
if(zx==gx2&&zx==gy2&&dead2!=5)dead2++;
if(mapa[zx][zy]=='#'||zx<1||zx>10||zy<1||zy>10)usez=0;
}
if(mapa[x][y]=='K'){
havekey=1;
cout<<"钥匙"<<endl;
}
if(mapa[x][y]=='D'&&havekey!=1){
cout<<"上锁的门"<<endl;
}
}
if(x==ex&&y==ey)cout<<"获胜"<<endl;
else cout<<"失败"<<endl;
return 0;
}
违规紫衫
如果你感兴趣的话也可以看看我的其他作品
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...