www.pudn.com > linkfive.rar > Wzq.cpp
// Wzq.cpp: implementation of the CWzq class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "LinkF.h"
#include "Wzq.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CWzq::CWzq()
{
m_nOver = 0;
}
CWzq::~CWzq()
{
delete [] PlayerScore;
delete [] ComputerScore;
for (int i = 0;i < m_nWidth;i++)
delete [] Board[i];
delete [] Board;
for (i = 0;i < m_nWidth;i++)
{
for (int j = 0;j < m_nHeight;j++)
{
delete [] PlayerTable[i][j];
delete [] ComputerTable[i][j];
}
delete [] PlayerTable[i];
delete [] ComputerTable[i];
}
delete [] PlayerTable;
delete [] ComputerTable;
}
void CWzq::ComputerThinking(int &o_nX, int &o_nY)
{
int PlayerGrade=0;
int ComputerGrade=0;
int ComputerX;
int ComputerY;
int i,j,k,mat,nat,mde,nde;
int** PlayerGrades;//[NUM][NUM],[NUM][NUM];
int** ComputerGrades;
PlayerGrades = (int**) new int*[m_nWidth];
for ( i = 0; i < m_nWidth;i++)
PlayerGrades[i] = new int[m_nHeight];
ComputerGrades = (int**) new int*[m_nWidth];
for (i = 0; i < m_nWidth;i++)
ComputerGrades[i] = new int[m_nHeight];
for (i = 0;i < m_nWidth;i++)
for ( j = 0;j < m_nHeight;j++)
ComputerGrades[i][j] = PlayerGrades[i][j] = 0;
for(i=0;i<19;i++)
for(j=0;j<19;j++)
{
PlayerGrades[i][j]=0;
if(Board[i][j]==0)
for(k=0;k<1020;k++)
if(PlayerTable[i][j][k])
{
switch(PlayerScore[k])
{
case 1:
PlayerGrades[i][j]+=5;
break;
case 2:
PlayerGrades[i][j]+=50;
break;
case 3:
PlayerGrades[i][j]+=500;
break;
case 4:
PlayerGrades[i][j]+=5000;
break;
}
}
}
for(i=0;i<19;i++)
for(j=0;j<19;j++)
{
ComputerGrades[i][j]=0;
if(Board[i][j]==0)
for(k=0;k<1020;k++)
if(ComputerTable[i][j][k])
{
switch(ComputerScore[k])
{
case 1:
ComputerGrades[i][j]+=5;
break;
case 2:
ComputerGrades[i][j]+=50;
break;
case 3:
ComputerGrades[i][j]+=500;
break;
case 4:
ComputerGrades[i][j]+=500000;
break;
}
}
}
for(i=0;i<19;i++)
for(j=0;j<19;j++)
if(Board[i][j]==0)
{
if(ComputerGrades[i][j]>=ComputerGrade)
{
ComputerGrade=ComputerGrades[i][j];
mat=i;
nat=j;
}
if(PlayerGrades[i][j]>=PlayerGrade)
{
PlayerGrade=PlayerGrades[i][j];
mde=i;
nde=j;
}
}
if(ComputerGrade>=PlayerGrade)
{
ComputerX=mat;
ComputerY=nat;
}
else
{
ComputerX=mde;
ComputerY=nde;
}
o_nX = ComputerX;
o_nY = ComputerY;
for (i = 0;i < m_nWidth;i++)
{
delete [] PlayerGrades[i];
delete [] ComputerGrades[i];
}
delete [] PlayerGrades;
delete [] ComputerGrades;
}
void CWzq::PlayerDo(const int &i_nX, const int i_nY)
{
int PlayerX = i_nX;
int PlayerY = i_nY;
Board[PlayerX][PlayerY]=1;
int i;
for(i=0;i