eveluation2.cpp

来自「我做的的八数码游戏!!学人工智能的用vc编写的」· C++ 代码 · 共 152 行

CPP
152
字号
// Eveluation2.cpp: implementation of the CEveluation2 class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "eightnum.h"
#include "Eveluation2.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CEveluation2::CEveluation2()
{

}

CEveluation2::~CEveluation2()
{

}

int CEveluation2::Eveluate(BYTE byBoard[][3])
{
	int iScore=0;
	int iTotalDist=0;
	int iSeqScore=0;
	int i,j;

	//计算totdist
	for(i=0;i<3;i++)
		for(j=0;j<3;j++)
			switch(byBoard[i][j])
			{
			case 0:
				iScore+=abs(i-1)+abs(j-1);
				break;

			case 1:
				iScore+=i+j;
				break;

			case 2:
				iScore+=i+abs(j-1);
				break;

			case 3:
				iScore+=i+abs(j-2);
				break;

			case 4:
				iScore+=abs(i-1)+abs(j-2);
				break;

			case 5:
				iScore+=abs(i-2)+abs(j-2);
				break;

			case 6:
				iScore+=abs(i-2)+abs(j-1);
				break;

			case 7:
				iScore+=abs(i-2)+j;
				break;

			case 8:
				iScore+=abs(i-1)+j;
				break;
			}

	//计算seq
	if(byBoard[0][0]!=8)
	{
		if(byBoard[0][1]-byBoard[0][0]!=1)
			iScore+=2;
	}
	else
		if(byBoard[0][1]-byBoard[0][0]!=-7)
			iScore+=2;

	if(byBoard[0][1]!=8)
	{
		if(byBoard[0][2]-byBoard[0][1]!=1)
			iScore+=2;
	}
	else
		if(byBoard[0][2]-byBoard[0][1]!=-7)
			iScore+=2;

	if(byBoard[0][2]!=8)
	{
		if(byBoard[1][2]-byBoard[0][2]!=1)
			iScore+=2;
	}
	else
		if(byBoard[1][2]-byBoard[0][2]!=-7)
			iScore+=2;

	if(byBoard[1][2]!=8)
	{
		if(byBoard[2][2]-byBoard[1][2]!=1)
			iScore+=2;
	}
	else
		if(byBoard[2][2]-byBoard[1][2]!=-7)
			iScore+=2;

	if(byBoard[2][2]!=8)
	{
		if(byBoard[1][2]-byBoard[2][2]!=1)
			iScore+=2;
	}
	else
		if(byBoard[1][2]-byBoard[2][2]!=-7)
			iScore+=2;

	if(byBoard[1][2]!=8)
	{
		if(byBoard[0][2]-byBoard[1][2]!=1)
			iScore+=2;
	}
	else
		if(byBoard[0][2]-byBoard[1][2]!=-7)
			iScore+=2;

	if(byBoard[0][2]!=8)
	{
		if(byBoard[0][1]-byBoard[0][2]!=1)
			iScore+=2;
	}
	else
		if(byBoard[0][1]-byBoard[0][2]!=-7)
			iScore+=2;

	if(byBoard[0][1]!=8)
	{
		if(byBoard[0][0]-byBoard[0][1]!=1)
			iScore+=2;
	}
	else
		if(byBoard[0][0]-byBoard[0][1]!=-7)
			iScore+=2;

	return iScore;
}

⌨️ 快捷键说明

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