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

📄 gamemain.cpp

📁 mfc设计编程
💻 CPP
字号:
// GameMain.cpp: implementation of the GameMain class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "res.h"
#include "GameMain.h"

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

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

GameMain::GameMain()
{
	init();

}

GameMain::~GameMain()
{

}
//==============================================================
//返回战况
//玩家
//AI
//平局
int GameMain::winner()
{
	const int WINNING_ROWS[8][3]={
		{0,1,2},
		{3,4,5},
		{6,7,8},
		{0,3,6},
		{1,4,7},
		{2,5,8},
		{0,4,8},
		{2,4,6},
	};

	const int TOLAL_ROWS=8;


	for (int row=0;row<TOLAL_ROWS;++row)
	{
		if ((m_room[WINNING_ROWS[row][0]] != D_NONE) &&
			(m_room[WINNING_ROWS[row][0]] == m_room[WINNING_ROWS[row][1]])&&
			(m_room[WINNING_ROWS[row][1]] == m_room[WINNING_ROWS[row][2]]))
		{
			return m_room[WINNING_ROWS[row][0]];
		}
	}



	int i;
	for (i=0;i!=10;i++)
	{   

		if (i==9)
		{
			return D_TIE;
		}

		if (m_room[i]==D_NONE)
		{
			return D_NONE;
		}

	}

	return D_NONE;

}
//====================================================
//玩家移动
bool GameMain::humanMove(int input_x)
{
	if (winner()!=D_NONE)
	{
		return false;
	}


	if (m_room[input_x]==D_NONE)
	{
		m_room[input_x]=D_ME;
		return true;

	}

	return false;

}

bool GameMain::computerMove()
{
	int i;

	if (winner() != D_NONE)
	{
		return false;
	}


	//-------------------------------------------------------
	//如果放一个棋子就能赢的话,就放那里。
	for ( i = 0;i < 9;++i)
	{
		if (m_room[i] == D_NONE)
		{
			m_room[i] = D_AI;
			if (winner() == D_AI)
			{
				return true;

			}

			m_room[i] = D_NONE;
		}
	}
	//-------------------------------------------------------
	//阻止玩家胜利
	for ( i = 0;i < 9;++i)
	{
		if (m_room[i] == D_NONE)
		{
			m_room[i] = D_ME;
			if (winner() == D_ME)
			{
				m_room[i] = D_AI;
				return true;

			}

			m_room[i] = D_NONE;
		}
	}
	//-------------------------------------------------------
	//最优点
	const int BEST_MOVE[] = {4,0,2,6,8,1,3,5,7};

	
	for (i = 0;i < 9;++i)
	{
	
		if (m_room[BEST_MOVE[i]]==D_NONE)
		{
			m_room[BEST_MOVE[i]]=D_AI;
			return true;
		}
	}

	return false;
	

}

void GameMain::init()
{
	memset(m_room, 0, sizeof(m_room));

}

⌨️ 快捷键说明

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