我的第一个小游戏!

我的第一个小游戏!

主要源代码:

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);
}

你可能感兴趣的:(我的第一个小游戏!)