?? gamemain.cpp
字號(hào):
// 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()
{
}
//==============================================================
//返回戰(zhàn)況
//玩家
//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;
}
//====================================================
//玩家移動(dòng)
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;
}
//-------------------------------------------------------
//如果放一個(gè)棋子就能贏的話,就放那里。
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;
}
}
//-------------------------------------------------------
//最優(yōu)點(diǎn)
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));
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -