📄 mygame.cpp
字号:
// MyGame.cpp: implementation of the CMyGame class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "MyFirstGame.h"
#include "MyGame.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMyGame::CMyGame()
{
pData= NULL;
m_yc = 90 ;
m_dx = 40;
m_dy = 50;
}
CMyGame::~CMyGame()
{
}
void CMyGame::SetDataSize()
{
int i;
switch(m_Class) {
case sNone:
pData = NULL;
break;
case sSimple:
pData = new int*[14];
for(i=0; i<14;i++)
{
pData[i] = new int[9];
}
break;
case sMiddle:
pData = new int*[16];
for(i=0; i<14;i++)
{
pData[i] = new int[10];
}
break;
case sHard:
pData = new int*[18];
for(i=0; i<18;i++)
{
pData[i] = new int[11];
}
break;
}
}
void CMyGame::InitialData()
{
int i,j;
int count = m_Col * m_row/ 2;
int *a= new int[count*2];
GenerateRandomNum(a, count*2);
for(i=0;i<(m_Col + 2);i++)
{
for(j=0;j<(m_row + 2);j++)
{
pData[i][j] = 0;
}
}
for(i=1 ;i<(m_Col + 1);i++)
{
for(j=1;j<(m_row + 1);j++)
{
pData[i][j] = a[(i - 1)*m_row + j - 1]/4 + 1;
}
}
delete []a;
}
void CMyGame::SetClass()
{
switch(m_Class)
{
case sNone:
break;
case sSimple:
break;
case sMiddle:
break;
case sHard:
break;
}
}
//DEL void CMyGame::DrawCellBmp(CDC *pDc, CMyGame FMyGame)
//DEL {
//DEL
//DEL }
void CMyGame::SetClass(int ClassType)
{
ClearData();
m_Class=ClassType;
InitialInfo();
SetDataSize();
m_xc=(770-m_Col*m_dx)/2 ;
}
void CMyGame::InitialInfo()
{
switch(m_Class)
{
case sNone:
m_Col =0;
m_row =0;
break;
case sSimple:
m_Col =12;
m_row =7;
break;
case sMiddle:
m_Col =14;
m_row =8;
break;
case sHard:
m_Col =16;
m_row =9;
break;
}
}
void CMyGame::ClearData()
{
int i;
switch(m_Class) {
case sNone:
pData = NULL;
break;
case sSimple:
for(i=0; i<14;i++)
{
delete []pData[i];
}
delete []pData;
break;
case sMiddle:
for(i=0; i<16;i++)
{
delete []pData[i];
}
delete []pData;
break;
case sHard:
for(i=0; i<18;i++)
{
delete []pData[i];
}
delete []pData;
break;
}
}
void CMyGame::GenerateRandomNum(int x[], int count)
{
int i,j,xx;
for(i=0;i<count;i++)
{ do
{
xx= rand()%count;
for(j=0;(j<i)&&(xx!=x[j]);j++);
}while(i!=j);
x[i]=xx;
}
}
void CMyGame::TranToXY(int *x, int *y, int i, int j)
{
*x = m_xc+i*m_dx ;
*y = m_yc+j*m_dy ;
}
void CMyGame::TranXYToPosition(int *xpos, int *ypos, int x, int y)
{
*xpos = (x - m_xc)/m_dx;
*ypos = (y - m_yc)/m_dy;
}
bool CMyGame::TestLine(int x0, int y0, int x1, int y1 ,int &midx1, int &midy1, int &midx2, int &midy2)
{
bool testok;
testok = false;
int i= 0;
StartPoint.x = x0;
StartPoint.y = y0;
EndPoint.x = x1;
EndPoint.y = y1;
for(i=0; i<m_Col + 2 && !testok;i++)
{
testok =TestXLine(x1, i , y1) && TestXLine(x0, i, y0) && TestYLine(y0, y1, i) ;
if(testok)
{
midx1 = i;
midy1 = y1;
midx2 = i;
midy2 = y0;
}
}
for(i=0; i<m_row + 2 && !testok;i++)
{
testok = TestYLine(y1,i ,x1) && TestYLine(y0, i, x0) && TestXLine(x0, x1, i) ;
if(testok)
{
midx1 = x1;
midy1 = i;
midx2 = x0;
midy2 = i;
}
}
return testok;
}
bool CMyGame::TestXLine(int x0, int x1, int y1)
{
POINT pt;
bool result = true;
int i;
if (x1 >= x0)
{
for(i =x1; i>=x0;i--)
{
pt.x = i;
pt.y =y1;
if ((StartPoint.x == i && StartPoint.y == y1) || ((EndPoint.x == i) && (EndPoint.y == y1)))
continue;
if(pData[i][y1] != 0)
{
result = false;
break;
}
}
}
else
{
for(i=x1;i<=x0;i++)
{
pt.x = i;
pt.y =y1;
if ((StartPoint.x == i && StartPoint.y == y1) || ((EndPoint.x == i) && (EndPoint.y == y1)))
continue;
if(pData[i][y1] != 0)
{
result = false;
break;
}
}
}
return result;
}
bool CMyGame::TestYLine(int y0, int y1, int x0)
{
bool result = true;
POINT pt;
int i;
if(y1 >= y0)
{
for(i = y1; i>=y0;i--)
{
pt.x = x0;
pt.y = i;
if ((StartPoint.x == x0 && StartPoint.y == i) || ((EndPoint.x == x0) && (EndPoint.y == i)))
continue;
if(pData[x0][i] != 0)
{
result = false;
break;
}
}
}
else
{
for(i=y1;i<=y0;i++)
{
pt.x = x0;
pt.y = i;
if ((StartPoint.x == x0 && StartPoint.y == i) || ((EndPoint.x == x0) && (EndPoint.y == i)))
continue;
if(pData[x0][i] != 0)
{
result = false;
break;
}
}
}
return result;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -