主要源代码:
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
人生在于攀登! 阅读(198)
评论(0) 编辑 收藏 引用