⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basic_action.cpp

📁 巫魔世界是一个被墙所环绕的二维格子世界
💻 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 + -