📄 eightnum.cpp
字号:
#include ".\eightnum.h"
CEightNum::CEightNum(void)
{
}
CEightNum::~CEightNum(void)
{
}
void CEightNum::SetDefaultInitState()
{
m_byBoard[0][0]=2;
m_byBoard[0][1]=8;
m_byBoard[0][2]=3;
m_byBoard[1][0]=1;
m_byBoard[1][1]=6;
m_byBoard[1][2]=4;
m_byBoard[2][0]=7;
m_byBoard[2][1]=0;
m_byBoard[2][2]=5;
//for test
PrintState(m_byBoard);
}
void CEightNum::GetSpacePos(int& x,int& y)
{
for(x=0;x<3;x++)
for(y=0;y<3;y++)
if(m_byBoard[x][y]==0)
return;
}
void CEightNum::PrintState(BYTE byBoard[][3])
{
int i,j;
for(i=0;i<3;i++)
{
cout<<" ";
for(j=0;j<3;j++)
{
cout<<byBoard[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
}
void CEightNum::AutoSolve()
{
m_pSearchEngine=new CGSESearchEngine;
m_pSearchEngine->SearchAGoodMove(m_byBoard);
while(!m_pSearchEngine->m_stackBestMove.empty())
{
PrintState(m_pSearchEngine->m_stackBestMove.top().byBoard);
m_pSearchEngine->m_stackBestMove.pop();
if(!m_pSearchEngine->m_stackBestMove.empty())
{
cout<<"press enter to continue the next step:"<<endl;
getchar();
}
else
{
cout<<"You've have the solution!"<<endl;
}
}
}
void CEightNum::CreateRandomInitState()
{
// TODO: Add your control notification handler code here
int i,j,k=0;
BYTE a[9];
srand((unsigned)time(NULL));
for(i=0;i<9;i++)
{
a[i]=rand()%9;
do
a[i]=rand()%9;
while(IsIn(a,i));
}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
m_byBoard[i][j]=a[k];
k++;
}
PrintState(m_byBoard);
}
bool CEightNum::IsIn(BYTE a[],int i)
{
for(int j=0;j<i;j++)
if(a[j]==a[i])
return 1;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -