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

📄 rc_agent.cpp

📁 人工智能课堂作业
💻 CPP
📖 第 1 页 / 共 3 页
字号:
#include "rc_agent.h"
#include "wumpus_world.h"#include <iostream.h>#include <math.h> 
#include "types.h"



void Control_Agent::EMPTY(Percept percept2[5][5])
{

 for(int i=1;i<=4;i++)
  {
     for(int j=1;j<=4;j++)
	 {
	   if(i==1&&j==4)
	   {
	     if(((percept2[i+1][j].breeze==Fasle)||(percept2[i][j-1].breeze==Fasle))&&((percept2[i+1][j].stench==Fasle)||(percept2[i][j-1].stench==Fasle)))
         {     object[i][j]=Empty; }
	   }
	   if(i==4&&j==4)
	   {
	     if(((percept2[i-1][j].breeze==Fasle)||(percept2[i][j-1].breeze==Fasle))&&((percept2[i-1][j].stench==Fasle)||(percept2[i][j-1].stench==Fasle)))
		 {     object[i][j]=Empty;}
	   }
	   if(i==4&&j==1)
	   {
	     if(((percept2[i-1][j].breeze==Fasle)||(percept2[i][j+1].breeze==Fasle))&&((percept2[i-1][j].stench==Fasle)||(percept2[i][j+1].stench==Fasle)))
		 {     object[i][j]=Empty;}
	   }
	   //这里是边界的方格的判断
	   if(i==1&&j!=4&&j!=1)
	   {
	   
	     if(((percept2[i+1][j].breeze==Fasle)||(percept2[i][j-1].breeze==Fasle)||(percept2[i][j+1].breeze==Fasle))&&((percept2[i+1][j].stench==Fasle)||(percept2[i][j-1].stench==Fasle)||(percept2[i][j+1].stench==Fasle)))
		 {   object[i][j]=Empty;    
		 }
	   }
	   if(i==4&&j!=4&&j!=1)
	   {
	     if(((percept2[i-1][j].breeze==Fasle)||(percept2[i][j-1].breeze==Fasle)||(percept2[i][j+1].breeze==Fasle))&&((percept2[i-1][j].stench==Fasle)||(percept2[i][j-1].stench==Fasle)||(percept2[i][j+1].stench==Fasle)))
               object[i][j]=Empty;
	   }
	   if(j==1&&i!=4&&i!=1)
	   {
	     if(((percept2[i][j+1].breeze==Fasle)||(percept2[i-1][j].breeze==Fasle)||(percept2[i+1][j].breeze==Fasle))&&((percept2[i][j+1].stench==Fasle)||(percept2[i-1][j].stench==Fasle)||(percept2[i+1][j].stench==Fasle)))
               object[i][j]=Empty;
	   }
	   if(j==4&&i!=4&&i!=1)
	   {
	     if(((percept2[i][j-1].breeze==Fasle)||(percept2[i-1][j].breeze==Fasle)||(percept2[i+1][j].breeze==Fasle))&&((percept2[i][j-1].stench==Fasle)||(percept2[i-1][j].stench==Fasle)||(percept2[i+1][j].stench==Fasle)))
               object[i][j]=Empty;
	   }
	   //对不是边界判断
	   if((i!=1)&&(i!=4)&&(j!=4)&&(j!=1))

       {
	      if(((percept2[i-1][j].breeze==Fasle)||(percept2[i+1][j].breeze==Fasle)||(percept2[i][j-1].breeze==Fasle)||(percept2[i][j+1].breeze==Fasle))&&((percept2[i-1][j].stench==Fasle)||(percept2[i+1][j].stench==Fasle)||(percept2[i][j-1].stench==Fasle)||(percept2[i][j+1].stench==Fasle)))
	          object[i][j]=Empty;
	   }
 
	 }  	     
  }


}

void Control_Agent::PIT(Percept percept2[5][5])
{
  //下面的程序是判断object是否有pit
  for(int i=1;i<=4;i++)
  {
     for(int j=1;j<=4;j++)
	 {
     //这里下面的程序是用来判断图四个角的方格Pit  
         if(i==1&&j==4)
		 { 
			 if(percept2[i+1][j].breeze==True)
                 if(object[i+2][j]==Empty&&object[i+1][j-1]==Empty)
					 object[i][j]=Pit;
 			 if(percept2[i][j-1].breeze==True)
                 if(object[i][j-2]==Empty&&object[i+1][j-1]==Empty)
					 object[i][j]=Pit;             
		 }
         if(i==4&&j==4)
		 { 
			 if(percept2[i-1][j].breeze==True)
                 if(object[i-2][j]==Empty&&object[i-1][j-1]==Empty)
					 object[i][j]=Pit;
			 if(percept2[i][j-1].breeze==True)
                 if(object[i][j-2]==Empty&&object[i-1][j-1]==Empty)
					 object[i][j]=Pit;
		 }
         if(i==4&&j==1)
		 { 
			 if(percept2[i-1][j].breeze==True)
                 if(object[i-2][j]==Empty&&object[i-1][j+1]==Empty)
					 object[i][j]=Pit;
			 if(percept2[i][j+1].breeze==True)
                 if(object[i][j+2]==Empty&&object[i-1][j+1]==Empty)
					 object[i][j]=Pit;
		 }
	   //这里是边界的方格的判断
	   if(i==1&&j!=4&&j!=1)
	   {
            if(percept2[i][j-1].breeze==True)
			{	if((j-1)==1)
					if(object[i+1][j-1]==Empty)
						object[i][j]=Pit;
                else
				    if(object[i+1][j-1]==Empty&&object[i][j-2]==Empty)
						object[i][j]=Pit;
            } 
			if(percept2[i][j+1].breeze==True)
			{	if((j+1)==4)
					if(object[i+1][j+1]==Empty)
                       object[i][j]=Pit;    
                else
				    if(object[i+1][j+1]==Empty&&object[i][j+2]==Empty)
						object[i][j]=Pit;
            }
			if(percept2[i+1][j].breeze==True)
				if(object[i+1][j-1]==Empty&&object[i+1][j+1]==Empty&&object[i+2][j]==Empty)
					object[i][j]=Pit;
	   }
	   if(i==4&&j!=4&&j!=1)
	   {
            if(percept2[i][j-1].breeze==True)
			{	if((j-1)==1)
					if(object[i-1][j-1]==Empty)
						object[i][j]=Pit;
                else
				    if(object[i-1][j-1]==Empty&&object[i][j-2]==Empty)
						object[i][j]=Pit;
            } 
			if(percept2[i][j+1].breeze==True)
			{	if((j+1)==4)
					if(object[i-1][j+1]==Empty)
                       object[i][j]=Pit;    
                else
				    if(object[i-1][j+1]==Empty&&object[i][j+2]==Empty)
						object[i][j]=Pit;
            }
			if(percept2[i-1][j].breeze==True)
				if(object[i-1][j-1]==Empty&&object[i-1][j+1]==Empty&&object[i-2][j]==Empty)
					object[i][j]=Pit;
	   }
	   if(j==1&&i!=4&&i!=1)
	   {
           //cout<<"PIT ONLINE"<<endl; 
		   //cout<<j<<"      "<<i<<endl;
		   if(percept2[i-1][j].breeze==True)
			{	
			   if((i-1)==1)
			   {	
				   if(object[i-1][j+1]==Empty)
			            object[i][j]=Pit;
			   }
                else
				{//cout<<"PIT ONLINE"<<endl; cout<<j<<"      "<<i<<endl;
				    if(object[i-1][j+1]==Empty&&object[i-2][j]==Empty)
					{	object[i][j]=Pit;}
				}
            } 
			if(percept2[i+1][j].breeze==True)
			{	if((i+1)==4)
					if(object[i+1][j+1]==Empty)
                       object[i][j]=Pit;    
                else
				    if(object[i+1][j+1]==Empty&&object[i+2][j]==Empty)
						object[i][j]=Pit;
            }
			if(percept2[i][j+1].breeze==True)
				if(object[i+1][j+1]==Empty&&object[i+1][j+1]==Empty&&object[i][j+2]==Empty)
					object[i][j]=Pit;
	   }
	   if(j==4&&i!=4&&i!=1)
	   {
            if(percept2[i-1][j].breeze==True)
			{	if((i-1)==1)
					if(object[i-1][j-1]==Empty)
						object[i][j]=Pit;
                else
				    if(object[i-1][j-1]==Empty&&object[i-2][j]==Empty)
						object[i][j]=Pit;
            } 
			if(percept2[i+1][j].breeze==True)
			{	if((i+1)==4)
					if(object[i+1][j+1]==Empty)
                       object[i][j]=Pit;    
                else
				    if(object[i+1][j+1]==Empty&&object[i+2][j]==Empty)
						object[i][j]=Pit;
            }
			if(percept2[i][j-1].breeze==True)
				if(object[i-1][j-1]==Empty&&object[i+1][j-1]==Empty&&object[i][j-2]==Empty)
					object[i][j]=Pit;
	   }
	   //对不是边界判断
	   if((i!=1)&&(i!=4)&&(j!=4)&&(j!=1))

       {
            if(percept2[i-1][j].breeze==True)
            {
			   if(i-1==1)
               {
			      if(object[i-1][j-1]==Empty&&object[i-1][j+1]==Empty)
					  object[i][j]=Pit;
			   }
			   else
               {
			      if(object[i-1][j-1]==Empty&&object[i-1][j+1]==Empty&&object[i-2][j]==Empty)
					  object[i][j]=Pit;   
			   }

			}
            if(percept2[i+1][j].breeze==True)
            {
			   if(i+1==4)
               {
			      if(object[i+1][j-1]==Empty&&object[i+1][j+1]==Empty)
					  object[i][j]=Pit;
			   }
			   else
               {
			      if(object[i+1][j-1]==Empty&&object[i+1][j+1]==Empty&&object[i+2][j]==Empty)
					  object[i][j]=Pit;   
			   }

			}
            if(percept2[i][j-1].breeze==True)
            {
			   if(j-1==1)
               {
			      if(object[i-1][j-1]==Empty&&object[i+1][j-1]==Empty)
					  object[i][j]=Pit;
			   }
			   else
               {
			      if(object[i-1][j-1]==Empty&&object[i+1][j-1]==Empty&&object[i][j-2]==Empty)
					  object[i][j]=Pit;   
			   }

			}
            if(percept2[i][j+1].breeze==True)
            {
			   if(j+1==4)
               {
			      if(object[i-1][j+1]==Empty&&object[i+1][j+1]==Empty)
					  object[i][j]=Pit;
			   }
			   else
               {
			      if(object[i-1][j+1]==Empty&&object[i+1][j+1]==Empty&&object[i][j+2]==Empty)
					  object[i][j]=Pit;   
			   }

			}
	   }		 		 

	 }	 
  }
}
void Control_Agent::LW(Percept percept2[5][5])
{

 


  //下面的程序是判断object是否有wumpus
  for(int  i=1;i<=4;i++)
  {
     for(int j=1;j<=4;j++)
	 {
     //这里下面的程序是用来判断图四个角的方格Pit  
         if(i==1&&j==4)
		 { 
			 if(percept2[i+1][j].stench==True)
                 if(object[i+2][j]==Empty&&object[i+1][j-1]==Empty)
					 object[i][j]=Living_Wumpus;
 			 if(percept2[i][j-1].stench==True)
                 if(object[i][j-2]==Empty&&object[i+1][j-1]==Empty)
					 object[i][j]=Living_Wumpus;             
		 }
         if(i==4&&j==4)
		 { 
			 if(percept2[i-1][j].stench==True)
                 if(object[i-2][j]==Empty&&object[i-1][j-1]==Empty)
					 object[i][j]=Living_Wumpus;
			 if(percept2[i][j-1].stench==True)
                 if(object[i][j-2]==Empty&&object[i-1][j-1]==Empty)
					 object[i][j]=Living_Wumpus;
		 }
         if(i==4&&j==1)
		 { 
			 if(percept2[i-1][j].stench==True)
                 if(object[i-2][j]==Empty&&object[i-1][j+1]==Empty)
					 object[i][j]=Living_Wumpus;
			 if(percept2[i][j+1].stench==True)
                 if(object[i][j+2]==Empty&&object[i-1][j+1]==Empty)
					 object[i][j]=Living_Wumpus;
		 }
	     //这里是边界的方格的判断
	    if(i==1&&j!=4&&j!=1)
		{
            if(percept2[i][j-1].stench==True)
			{	if((j-1)==1)
					if(object[i+1][j-1]==Empty)
						object[i][j]=Living_Wumpus;
                else
				    if(object[i+1][j-1]==Empty&&object[i][j-2]==Empty)
						object[i][j]=Living_Wumpus;
            } 
			if(percept2[i][j+1].stench==True)
			{	if((j+1)==4)
					if(object[i+1][j+1]==Empty)
                       object[i][j]=Living_Wumpus;    
                else
				    if(object[i+1][j+1]==Empty&&object[i][j+2]==Empty)
						object[i][j]=Living_Wumpus;
            }
			if(percept2[i+1][j].stench==True)
				if(object[i+1][j-1]==Empty&&object[i+1][j+1]==Empty&&object[i+2][j]==Empty)
					object[i][j]=Living_Wumpus;
		}
	    if(i==4&&j!=4&&j!=1)
		{ 
            if(percept2[i][j-1].stench==True)
			{	if((j-1)==1)
					if(object[i-1][j-1]==Empty)
						object[i][j]=Living_Wumpus;
                else
				    if(object[i-1][j-1]==Empty&&object[i][j-2]==Empty)
						object[i][j]=Living_Wumpus;
            } 
			if(percept2[i][j+1].stench==True)
			{	if((j+1)==4)
					if(object[i-1][j+1]==Empty)
                       object[i][j]=Living_Wumpus;    
                else
				    if(object[i-1][j+1]==Empty&&object[i][j+2]==Empty)
						object[i][j]=Living_Wumpus;
            }
			if(percept2[i-1][j].stench==True)
				if(object[i-1][j-1]==Empty&&object[i-1][j+1]==Empty&&object[i-2][j]==Empty)
					object[i][j]=Living_Wumpus;
		}
	    if(j==1&&i!=4&&i!=1)
		{
            if(percept2[i-1][j].stench==True)
			{	if((i-1)==1)
					if(object[i-1][j+1]==Empty)
						object[i][j]=Living_Wumpus;
                else
				    if(object[i-1][j+1]==Empty&&object[i-2][j]==Empty)
						object[i][j]=Living_Wumpus;
            } 
			if(percept2[i+1][j].stench==True)
			{	if((i+1)==4)
					if(object[i+1][j+1]==Empty)
                       object[i][j]=Living_Wumpus;    
                else
				    if(object[i+1][j+1]==Empty&&object[i+2][j]==Empty)
						object[i][j]=Living_Wumpus;
            }
			if(percept2[i][j+1].stench==True)
				if(object[i+1][j+1]==Empty&&object[i+1][j+1]==Empty&&object[i][j+2]==Empty)
					object[i][j]=Living_Wumpus;
		}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -