主要源代码:
void CSpellGraphicDlg::OnUp()


{
// TODO: Add your control notification handler code here

if (p.currentPoint/3==0)

{
MessageBox("无法移动!");
}

else
{
p.beforePoint=p.currentPoint;
p.currentPoint-=3;
int temp=a[p.currentPoint/3][p.currentPoint-3*(p.currentPoint/3)];
a[p.currentPoint/3][p.currentPoint-3*(p.currentPoint/3)]=a[p.beforePoint/3][p.beforePoint-3*(p.beforePoint/3)];
a[p.beforePoint/3][p.beforePoint-3*(p.beforePoint/3)]=temp;
drawCurrentPoint();
drawBeforPoint();
}
if (isFinished())

{
if (MessageBox("恭喜你,成功了!","继续?",MB_YESNO)==IDOK)

{
inintial();
}

else
{
MessageBox("谢谢您的支持,欢迎再次使用!");
}
}
}

void CSpellGraphicDlg::OnDown()


{
// TODO: Add your control notification handler code here
if (p.currentPoint/3==2)

{
MessageBox("无法移动!");
}

else
{
p.beforePoint=p.currentPoint;
p.currentPoint+=3;
int temp=a[p.currentPoint/3][p.currentPoint-3*(p.currentPoint/3)];
a[p.currentPoint/3][p.currentPoint-3*(p.currentPoint/3)]=a[p.beforePoint/3][p.beforePoint-3*(p.beforePoint/3)];
a[p.beforePoint/3][p.beforePoint-3*(p.beforePoint/3)]=temp;
drawCurrentPoint();
drawBeforPoint();
}
if (isFinished())

{
if (MessageBox("恭喜你,成功了!","继续?",MB_YESNO)==IDOK)

{
inintial();
}

else
{
MessageBox("谢谢您的支持,欢迎再次使用!");
}
}
}

void CSpellGraphicDlg::OnLeft()


{
// TODO: Add your control notification handler code here
if (p.currentPoint%3==0)

{
MessageBox("无法移动!");
}

else
{
p.beforePoint=p.currentPoint;
p.currentPoint-=1;
int temp=a[p.currentPoint/3][p.currentPoint-3*(p.currentPoint/3)];
a[p.currentPoint/3][p.currentPoint-3*(p.currentPoint/3)]=a[p.beforePoint/3][p.beforePoint-3*(p.beforePoint/3)];
a[p.beforePoint/3][p.beforePoint-3*(p.beforePoint/3)]=temp;
drawCurrentPoint();
drawBeforPoint();
}
if (isFinished())

{
if (MessageBox("恭喜你,成功了!","继续?",MB_YESNO)==IDOK)

{
inintial();
}

else
{
MessageBox("谢谢您的支持,欢迎再次使用!");
}
}
}

void CSpellGraphicDlg::OnRight()


{
// TODO: Add your control notification handler code here
if (p.currentPoint%3==2)

{
MessageBox("无法移动!");
}

else
{
p.beforePoint=p.currentPoint;
p.currentPoint+=1;
int temp=a[p.currentPoint/3][p.currentPoint-3*(p.currentPoint/3)];
a[p.currentPoint/3][p.currentPoint-3*(p.currentPoint/3)]=a[p.beforePoint/3][p.beforePoint-3*(p.beforePoint/3)];
a[p.beforePoint/3][p.beforePoint-3*(p.beforePoint/3)]=temp;
drawCurrentPoint();
drawBeforPoint();
}
if (isFinished())

{
if (MessageBox("恭喜你,成功了!","继续?",MB_YESNO)==IDOK)

{
inintial();
}

else
{
MessageBox("谢谢您的支持,欢迎再次使用!");
}
}
}


bool CSpellGraphicDlg::isExit(int n)
{
bool exit=false;
for (int i=0;i<3;i++)

{
for (int j=0;j<3;j++)

{
if (a[i][j]==n)

{
exit=true;
break;
}
}
if (exit==true)

{
break;
}
}
return exit;
}


bool CSpellGraphicDlg::isFinished()
{
CString str;
CString strnum;
for (int i=1;i<9;i++)

{
switch(i)

{
case 1:
m_1.GetWindowText(str);
strnum=""+i;
if (strcmp(str,strnum)!=0)

{
goto returnfalse;
}
break;
case 2:
m_2.GetWindowText(str);
strnum=""+i;
if (strcmp(str,strnum)!=0)

{
goto returnfalse;
}
break;
case 3:
m_3.GetWindowText(str);
strnum=""+i;
if (strcmp(str,strnum)!=0)

{
goto returnfalse;
}
break;
case 4:
m_4.GetWindowText(str);
strnum=""+i;
if (strcmp(str,strnum)!=0)

{
goto returnfalse;
}
break;
case 5:
m_5.GetWindowText(str);
strnum=""+i;
if (strcmp(str,strnum)!=0)

{
goto returnfalse;
}
break;
case 6:
m_6.GetWindowText(str);
strnum=""+i;
if (strcmp(str,strnum)!=0)

{
goto returnfalse;
}
break;
case 7:
m_7.GetWindowText(str);
strnum=""+i;
if (strcmp(str,strnum)!=0)

{
goto returnfalse;
}
break;
case 8:
m_8.GetWindowText(str);
strnum=""+i;
if (strcmp(str,strnum)!=0)

{
goto returnfalse;
}
break;
}
}
return true;
returnfalse: return false;
}


void CSpellGraphicDlg::inintial()
{
for (int i=0;i<3;i++)

{
for (int j=0;j<3;j++)

{
a[i][j]=9;
}
}

int number=0;
srand( (unsigned)time( NULL ) );
while (true)

{
int num=rand()%9;
if (number==8)

{
break;
}

if (num!=0 && !isExit(num))

{
a[number/3][(number-3*(number/3))%3]=num;
number++;
}
}
CString str;
for(int m=0;m<3;m++)

{
for (int n=0;n<3;n++)

{
int point=3*m+n+1;
str.Format(_T("%d"),a[m][n]);
switch(point)

{
case 1:
if (a[m][n]==9)

{
m_1.SetWindowText("");
break;
}
m_1.SetWindowText(str);
break;
case 2:
if (a[m][n]==9)

{
m_2.SetWindowText("");
break;
}
m_2.SetWindowText(str);
break;
case 3:
if (a[m][n]==9)

{
m_3.SetWindowText("");
break;
}
m_3.SetWindowText(str);
break;
case 4:
if (a[m][n]==9)

{
m_4.SetWindowText("");
break;
}
m_4.SetWindowText(str);
break;
case 5:
if (a[m][n]==9)

{
m_5.SetWindowText("");
break;
}
m_5.SetWindowText(str);
break;
case 6:
if (a[m][n]==9)

{
m_6.SetWindowText("");
break;
}
m_6.SetWindowText(str);
break;
case 7:
if (a[m][n]==9)

{
m_7.SetWindowText("");
break;
}
m_7.SetWindowText(str);
break;
case 8:
if (a[m][n]==9)

{
m_8.SetWindowText("");
break;
}
m_8.SetWindowText(str);
break;
case 9:
if (a[m][n]==9)

{
m_9.SetWindowText("");
break;
}
m_9.SetWindowText(str);
break;
}
}
}
}


void CSpellGraphicDlg::drawCurrentPoint()
{
int pp=p.currentPoint+1;
switch(pp)

{
case 1:
m_1.SetWindowText("");
break;
case 2:
m_2.SetWindowText("");
break;
case 3:
m_3.SetWindowText("");
break;
case 4:
m_4.SetWindowText("");
break;
case 5:
m_5.SetWindowText("");
break;
case 6:
m_6.SetWindowText("");
break;
case 7:
m_7.SetWindowText("");
break;
case 8:
m_8.SetWindowText("");
break;
case 9:
m_9.SetWindowText("");
break;
}
}


void CSpellGraphicDlg::drawBeforPoint()
{
int pp=p.beforePoint+1;
CString str;
str.Format(_T("%d"),a[p.beforePoint/3][p.beforePoint-3*(p.beforePoint/3)]);
switch(pp)

{
case 1:
m_1.SetWindowText(str);
break;
case 2:
m_2.SetWindowText(str);
break;
case 3:
m_3.SetWindowText(str);
break;
case 4:
m_4.SetWindowText(str);
break;
case 5:
m_5.SetWindowText(str);
break;
case 6:
m_6.SetWindowText(str);
break;
case 7:
m_7.SetWindowText(str);
break;
case 8:
m_8.SetWindowText(str);
break;
case 9:
m_9.SetWindowText(str);
break;
}
}

void CSpellGraphicDlg::OnreStart()


{
// TODO: Add your control notification handler code here
if (MessageBox("确定开始吗?","确定",MB_OKCANCEL)==IDOK)

{
inintial();
}

else
{
}
}

void CSpellGraphicDlg::Onclose()


{
// TODO: Add your control notification handler code here
CDialog::OnCancel();
}

void CSpellGraphicDlg::OnTimer(UINT nIDEvent)


{
// TODO: Add your message handler code here and/or call default
CTime time=CTime::GetCurrentTime();
CString str=time.Format("%H:%M:%S");
m_time.SetWindowText(str);
CDialog::OnTimer(nIDEvent);
}

posted on 2009-08-03 15:37
人生在于攀登! 阅读(202)
评论(0) 编辑 收藏 引用