?? adventure.cpp
字號:
#include"wupus.h"
void Wupus_World::action()
{
hunter.image[hunter.pos->x][hunter.pos->y]=SAFE;//訪問位標志
set_percepts();
if(hunter.percept.glitter)
{
Grab();//撿金子
hunter.gold=true;
}
if(hunter.percept.stench||hunter.percept.breeze)
{ //有危險
if(hunter.pos->x==1&&hunter.pos->y==1)
{//在入口位置
if(hunter.percept.stench &&!hunter.percept.scream&&hunter.arrow)//有惡魔,沒洞
Shoot();//射箭試探
else if(hunter.percept.breeze)
{//雙重危險
cout<<"????????????????????????????????\nfaint, 還讓我活嗎?"<<char(7)<<char(7)<<endl;
Climb();
}
}
if(hunter.pos->x==1&&hunter.pos->y==1&&hunter.percept.breeze)
{
if(!hunter.percept.scream&&hunter.arrow)
Shoot();//巫魔未死,射箭試探
if(hunter.percept.scream)
{
move(hunter.direction);//巫魔死,面前安全
}
}
if(hunter.pos->x==1&&hunter.pos->y==1&&!hunter.percept.breeze)
{
Shoot();
if(hunter.percept.scream)
{ //巫魔死了
move(hunter.direction);
}
else Turn_left();
}
if(hunter.percept.stench&&!hunter.percept.scream)
{//以下是通過多次出現危險位置而判斷.殺死巫魔
hunter.image[hunter.pos->x][hunter.pos->y]=WUPUS_DANGER_POS;
if((adjacent(Wall)&&hunter.image[hunter.pos->x-1][hunter.pos->y-1]==WUPUS_DANGER_POS
&&hunter.image[hunter.pos->x][hunter.pos->y-1]==SAFE)
||(hunter.pos->x>2&&hunter.image[hunter.pos->x-2][hunter.pos->y]==WUPUS_DANGER_POS)
||(adjacent(Wall)&&hunter.image[hunter.pos->x-1][hunter.pos->y+1]==WUPUS_DANGER_POS
&&hunter.image[hunter.pos->x][hunter.pos->y+1]==SAFE))
{
turn(W);
Shoot();
}
if((adjacent(Wall)&&hunter.image[hunter.pos->x-1][hunter.pos->y-1]==WUPUS_DANGER_POS
&&hunter.image[hunter.pos->x-1][hunter.pos->y]==SAFE)
||(hunter.pos->y>2&&hunter.image[hunter.pos->x][hunter.pos->y-2]==WUPUS_DANGER_POS)
||(adjacent(Wall)&&hunter.image[hunter.pos->x+1][hunter.pos->y-1]==WUPUS_DANGER_POS
&&hunter.image[hunter.pos->x+1][hunter.pos->y]==SAFE))
{
turn(S);
Shoot();
}
if((adjacent(Wall)&&hunter.image[hunter.pos->x+1][hunter.pos->y+1]==WUPUS_DANGER_POS
&&hunter.image[hunter.pos->x][hunter.pos->y+1]==SAFE)
||(hunter.image[hunter.pos->x+2][hunter.pos->y]==WUPUS_DANGER_POS)
||(adjacent(Wall)&&hunter.image[hunter.pos->x+1][hunter.pos->y-1]==WUPUS_DANGER_POS
&&hunter.image[hunter.pos->x][hunter.pos->y-1]==SAFE))
{
turn(E);
Shoot();
}
if((adjacent(Wall)&&hunter.image[hunter.pos->x+1][hunter.pos->y+1]==WUPUS_DANGER_POS
&&hunter.image[hunter.pos->x+1][hunter.pos->y]==SAFE)
||(hunter.image[hunter.pos->x][hunter.pos->y+2]==WUPUS_DANGER_POS)
||(adjacent(Wall)&&hunter.image[hunter.pos->x-1][hunter.pos->y+1]==WUPUS_DANGER_POS
&&hunter.image[hunter.pos->x][hunter.pos->y-1]==SAFE))
{
turn(N);
Shoot();
}
else return;
}
if(hunter.percept.breeze)
{ //有洞,標識位無意義
hunter.image[hunter.pos->x][hunter.pos->y]=SAFE;
return;
}
return;
}
if(hunter.image[hunter.pos->x+1][hunter.pos->y]==FOG&&move(E))
{ //未訪問過的,向三個前進方向分別進發
action();
move(W);
}
if(hunter.image[hunter.pos->x][hunter.pos->y+1]==FOG&&move(N))
{
action();
move(S);
}
if(hunter.image[hunter.pos->x][hunter.pos->y-1]==FOG&&move(S))
{
action();
move(N);
}
Climb(); //結束搜索
return;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -