#include<iostream>
#include<windows.h>
#include<map>
using namespace std;
int l,r;
int map1[100][100]={
{0,0,0,0,0,0,0,0,0,0,0},
{0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{0,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,0,0,0,0,0,0,0,0,0,0,0,1},
{0,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,0,0,0,0,0,0,0,0,0,0,0,1},
{0,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,0,0,0,0,0,0,0,0,0,0,0,1},
{0,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,0,0,0,0,0,0,0,0,0,0,0,1},
{0,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,0,0,0,0,0,0,0,0,0,0,0,1},
{0,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,0,0,0,0,0,0,0,0,0,0,0,1},
{0,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,0,0,0,0,0,0,0,0,0,0,0,1},
{0,1,2,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,0,0,0,0,0,0,0,0,0,0,1},
{0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
};
void cls()
{
Sleep(100);
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coordScreen = { 0, 0 };
SetConsoleCursorPosition( hConsole, coordScreen );
}
void output(){
for(int i=1;i<=10;i++){
for(int j=1;j<=40;j++){
switch(map1[i][j]){
case 0:{
cout<<" ";
break;
}
case 1:{
cout<<"■";
break;
}
case 2:{
cout<<"♀";
l=i;r=j;
break;
}
case 3:{
cout<<"·";
break;
}
}
}
cout<<endl;
}
}
bool u=true;
int xx,yy;
int xx1,yy1,xx2,yy2;
long long front,after;
struct node{
int coordinate_x;
int coordinate_y;
char direction;
}a[1000000];
int cnt;
void go(){
int flag=0;
cls();
output();
while(true){
cls();
output();
if(GetAsyncKeyState('K')&&map1[l][r-1]!=1&&u==false){
after++;
a[after].direction='a';
a[after].coordinate_x=l;
a[after].coordinate_y=r-1;
map1[l][r-1]=3;
}
if(GetAsyncKeyState('K')&&map1[l][r+1]!=1&&u==true){
after++;
a[after].direction='f';
a[after].coordinate_x=l;
a[after].coordinate_y=r+1;
map1[l][r+1]=3;
}
if(GetAsyncKeyState('D')&&map1[l][r+1]!=1){
u=true;
map1[l][r]=0;
r++;
map1[l][r]=2;
}
if(GetAsyncKeyState('A')&&map1[l][r-1]!=1){
u=false;
map1[l][r]=0;
r--;
map1[l][r]=2;
}
if(GetAsyncKeyState('W')&&map1[l-1][r]!=1&&flag==0){
map1[l][r]=0;
l--;
map1[l][r]=2;
flag++;
}
for(int i=front;i<=after;i++){
if(map1[a[i].coordinate_x][a[i].coordinate_y+1]==1||map1[a[i].coordinate_x][a[i].coordinate_y-1]==1){
front++;
map1[a[i].coordinate_x][a[i].coordinate_y]=0;
continue;
}
if(a[i].direction=='a'){
if(map1[a[i].coordinate_x][a[i].coordinate_y]!=2){
map1[a[i].coordinate_x][a[i].coordinate_y]=0;
a[i].coordinate_y--;
map1[a[i].coordinate_x][a[i].coordinate_y]=3;
}else{
a[i].coordinate_y--;
}
}
if(a[i].direction=='f'){
if(map1[a[i].coordinate_x][a[i].coordinate_y]!=2){
map1[a[i].coordinate_x][a[i].coordinate_y]=0;
a[i].coordinate_y++;
map1[yy1][a[i].coordinate_y]=3;
}else{
a[i].coordinate_y++;
}
}
}
if(flag==1&&map1[l-1][r]!=1){
map1[l][r]=0;
l--;
map1[l][r]=2;
flag++;
continue;
}
if(flag==2&&map1[l+1][r]!=1){
map1[l][r]=0;
l++;
map1[l][r]=2;
flag++;
continue;
}else if(flag==2){
flag++;
}
if(flag==3&&map1[l+1][r]!=1){
map1[l][r]=0;
l++;
map1[l][r]=2;
flag=0;
continue;
}else if(flag==3){
flag=0;
}
while(map1[l+1][r]==0&&flag==0){
map1[l][r]=0;
l++;
map1[l][r]=2;
break;
}
}
cls();
cout<<"Gave Over!!!";
Sleep(2000);
return ;
}
int main(){
go();
return 0;
}
这是一段枪战的实验代码,现在只有左边能够发射出子弹,右边发射不出来。请各位大佬帮忙找一下bug。
最先回答并且正确的人奖励50酷町豆。
很急!