📄 basic_action.cpp
字号:
#include"wupus.h"
int step=0;
bool Wupus_World::Forward()
{
Position *pos=new Position;
pos->x=hunter.pos->x;
pos->y=hunter.pos->y;
cout << "action= forward" << endl;
switch(hunter.direction)
{
case N: pos->y++; break;
case W: pos->x--; break;
case S: pos->y--; break;
case E: pos->x++; break;
};
pos->parent=hunter.pos;
hunter.pos=pos;
step++;
if (current(Wall))
{ //撞墙
cout <<"我靠,痛!!" <<char(7)<< endl;
_sleep(1024);
hunter.percept.bump=true;
hunter.image[hunter.pos->x][hunter.pos->y]=Wall;
Backward();
return false;
}
if(current(Living_Wupus)||(current(Pit)))
{
hunter.alive=false;
show(false);
cout<<"生得伟大,死得委琐,18年后再见!"<<char(7)<<endl<<endl;
cout<<"score="<<score()<<endl;
exit(-1);
}
set_percepts();
show(false);
return true;
}
void Wupus_World::Backward()
{
if(hunter.pos->x==1&&hunter.pos->y==1)
return;
hunter.pos=hunter.pos->parent;
set_percepts();
show(false);
step=step+2;
}
void Wupus_World::turn(int direction)
{//向指定方向转
switch((direction-hunter.direction+4)%4)
{
case 1:Turn_left();
break;
case 2:Turn_left();
Turn_left();
break;
case 3:Turn_right();
break;
};
hunter.direction=direction;
}
bool Wupus_World::move(int direction)
{
turn(direction);
bool flag=Forward();
hunter.image[hunter.pos->x][hunter.pos->y]=SAFE;
set_percepts();
return flag;
}
void Wupus_World::Turn_left()
{
cout << "action= turn left by 90 degrees" << endl;
switch(hunter.direction)
{
case N: hunter.direction=W; break;
case E: hunter.direction=N; break;
case S: hunter.direction=E; break;
case W: hunter.direction=S; break;
};
step++;
}
void Wupus_World::Turn_right()
{
cout << "action= turn right by 90 degrees"<< endl;
switch(hunter.direction)
{
case N: hunter.direction=E; break;
case E: hunter.direction=S; break;
case S: hunter.direction=W; break;
case W: hunter.direction=N; break;
};
step++;
}
void Wupus_World::Grab()
{
cout << char(7)<<char(7)<<char(7)<<"爽,钱!!!!" << endl<<endl;
if (current(Gold))
{
hunter.gold=true;
world[hunter.pos->x][hunter.pos->y]=Empty;
hunter.percept.glitter=false;
};
step++;
_sleep(1024);
}
void Wupus_World::Shoot()
{
int x=0;
int y=0;
cout << "action= shoot" << endl;
if (!hunter.arrow)
return;
hunter.arrow=false;
switch(hunter.direction)
{
case N: x=hunter.pos->x;
for(y=hunter.pos->y+1; y <=MAX_Y; y++)
{
if(world[x][y]==Living_Wupus)
{
hunter.percept.scream=true;
world[x][y]=Dead_Wupus;
hunter.image[x][y]=SAFE;
}
}
break;
case E: y=hunter.pos->y;
for(x=hunter.pos->x+1; x <= MAX_X; x++)
{
if(world[x][y]==Living_Wupus)
{
hunter.percept.scream=true;
world[x][y]=Dead_Wupus;
hunter.image[x][y]=SAFE;
}
}
break;
case S: x=hunter.pos->x;
for(y=hunter.pos->y-1; y > 0; y--)
{
if(world[x][y]==Living_Wupus)
{
hunter.percept.scream=true;
world[x][y]=Dead_Wupus;
hunter.image[x][y]=SAFE;
}
}
break;
case W: y=hunter.pos->y;
for(x=hunter.pos->x-1; x >0 ; x--)
{
if(world[x][y]==Living_Wupus)
{
hunter.percept.scream=true;
world[x][y]=Dead_Wupus;
hunter.image[x][y]=SAFE;
}
}
break;
};
step++;
cout<<"挂了吧!小样!"<<char(7)<<char(7)<<endl<<endl;
_sleep(1024);
}
void Wupus_World::Climb()
{
if ((hunter.pos->x==1) && (hunter.pos->y==1))
{
cout << "是非之地,不可久留,闪!"<<char(7)<< endl<<endl;
_sleep(1024);
hunter.escaped=true;
hunter.pos->x=0;
hunter.pos->y=0;
show(false);
}
step++;
return;
}
int Wupus_World::score()
{
int score=0;
if(hunter.gold)
score+=1000;
if(!hunter.alive)
score-=10000;
score-=step;
return score;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -