Exemple #1
0
bool Mazer::moveForward()              //声明可以进行主观判断如何前进的方法
{
	//检查右侧是否是墙,如果是墙,检查前方是否是墙,如果不是墙则前进,前进后检查是否是出口
	int rightX;
	int rightY;

	int forwardX;
	int forwardY;
	
	switch(forward)
	{
	case SOUTH: rightX = m_iPosX - 1; rightY = m_iPosY; 
		forwardX = m_iPosX; forwardY = m_iPosY + 1; break; 
	case NORTH: rightX = m_iPosX + 1; rightY = m_iPosY; 
	    forwardX = m_iPosX; forwardY = m_iPosY - 1;	break;
	case WEST:  rightX = m_iPosX; rightY = m_iPosY - 1; 
		forwardX = m_iPosX - 1; forwardY = m_iPosY;	break;
	case EAST:  rightX = m_iPosX; rightY = m_iPosY + 1; 
		forwardX = m_iPosX + 1; forwardY = m_iPosY;	break;
	}
	//如果右侧是墙

	//system("PAUSE");

	if(MazeMap::checkWallOrNot(rightX,rightY))
	{

		//检测前方也是墙壁
		if(MazeMap::checkWallOrNot(forwardX,forwardY))
		{
			//按逆时针换一个方向
			turnLeft();
			return NO;
		}
		//检测前方是通路
		else
		{
			//向前移动
			goAhead();
			return YES;
		}
	}
	//如果右侧是通路
	else
	{
		Sleep(3000);
		turnRight();
		goAhead();
		return YES;
	}

}
Exemple #2
0
/*
 * 函数名称:moveForward
 * 函数功能:人向前走一步
 * 返回内容:YES:移动一次  NO:没有移动
 */
bool MazePerson::moveForward()
{
	
	//检查当前位置是否合法
	if(MazeMap::checkWallOrNot(positionX,positionY))
	{
		//检测到当前位置是墙,提示用户设计非法并返回
		gotoxy(0,23);
		cout << "检测到当前设定的起始位置是墙壁,请重新设定。" << endl;
		outOrNot = true;
		return NO;
	}
	//判断如果前一个位置的坐标是10000,则直接在当前位置绘制人
	if(preX == 10000 || preY == 10000)
	{
		gotoxy(positionX,positionY);
		cout << personPic;
		Sleep(5000);
	}
	//检查右侧是否是墙,如果是墙,检查前方是否是墙,如果不是墙则前进,前进后检查是否是出口
	int rightX;
	int rightY;

	int forwardX;
	int forwardY;
	
	switch(forward)
	{
	case SOUTH: rightX = positionX - 1; rightY = positionY; 
		forwardX = positionX; forwardY = positionY + 1; break; 
	case NORTH: rightX = positionX + 1; rightY = positionY; 
	    forwardX = positionX; forwardY = positionY - 1;	break;
	case WEST:  rightX = positionX; rightY = positionY - 1; 
		forwardX = positionX - 1; forwardY = positionY;	break;
	case EAST:  rightX = positionX; rightY = positionY + 1; 
		forwardX = positionX + 1; forwardY = positionY;	break;
	}
	//如果右侧是墙

	//system("PAUSE");

	if(MazeMap::checkWallOrNot(rightX,rightY))
	{

		//检测前方也是墙壁
		if(MazeMap::checkWallOrNot(forwardX,forwardY))
		{
			//按逆时针换一个方向
			turnLeft();
			return NO;
		}
		//检测前方是通路
		else
		{
			//向前移动
			goAhead();
			return YES;
		}
	}
	//如果右侧是通路
	else
	{
		Sleep(3000);
		turnRight();
		goAhead();
		return YES;
	}

}