📄 cbombgame.cpp
字号:
// CBombGame.cpp: implementation of the CBombGame class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ClearBomb.h"
#include "CBombGame.h"
#include "stdlib.h"
#include "time.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CBombGame::CBombGame()
{
}
CBombGame::~CBombGame()
{
}
void CBombGame::InitBombArray()
{
srand((int)time(NULL));
int i=0,j=0,tmp;
int BombPos[BombNum];
BombPos[0] = rand()%(NXN*NXN);
for(i=1;i<BombNum;i++)
{
tmp = rand()%(NXN*NXN);
for(j=0;j<i;j++)
if(tmp == BombPos[j])
tmp++;
if(tmp<BombPos[i-1])
{
for(j=i;j>=0;j--)
{
BombPos[j] = BombPos[j-1];
if(tmp>BombPos[j])
{
BombPos[j] = tmp;
break;
}
}
}
else
BombPos[i] = tmp;
}
for(i=0;i<NXN;i++)
{
for(j=0;j<NXN;j++)
{
m_ArrayBomb[i][j].state = 0;
m_ArrayBomb[i][j].selected = false;
}
}
for(tmp=0;tmp<BombNum;tmp++)
{
i = (BombPos[tmp]+NXN)/NXN -1;
j = BombPos[tmp]%NXN;
m_ArrayBomb[i][j].state = 9;
}
}
void CBombGame::CalcBombArray()
{
int i=0,j=0;
for(i=0;i<NXN;i++)
for(j=0;j<NXN;j++)
{
if(m_ArrayBomb[i][j].state == 9)
continue;
if(i-1>=0&&i-1<NXN&&j-1>=0&&j-1<NXN)
{
if(m_ArrayBomb[i-1][j-1].state==9)
m_ArrayBomb[i][j].state += 1;
}
if(i-1>=0&&i-1<NXN)
{
if(m_ArrayBomb[i-1][j].state == 9)
m_ArrayBomb[i][j].state += 1;
}
if(i-1>=0&&i-1<NXN&&j+1>=0&&j+1<NXN)
{
if(m_ArrayBomb[i-1][j+1].state == 9)
m_ArrayBomb[i][j].state += 1;
}
if(j-1>=0&&j-1<NXN)
{
if(m_ArrayBomb[i][j-1].state == 9)
m_ArrayBomb[i][j].state += 1;
}
if(j+1>=0&&j+1<NXN)
{
if(m_ArrayBomb[i][j+1].state == 9)
m_ArrayBomb[i][j].state += 1;
}
if(i+1>=0&&i+1<NXN&&j-1>=0&&j-1<NXN)
{
if(m_ArrayBomb[i+1][j-1].state == 9)
m_ArrayBomb[i][j].state += 1;
}
if(i+1>=0&&i+1<NXN)
{
if(m_ArrayBomb[i+1][j].state == 9)
m_ArrayBomb[i][j].state += 1;
}
if(i+1>=0&&i+1<NXN&&j+1>=0&&j+1<NXN)
{
if(m_ArrayBomb[i+1][j+1].state == 9)
m_ArrayBomb[i][j].state += 1;
}
}
}
BOOL CBombGame::SelectXY(int x,int y)
{
int i = x;
int j = y;
m_ArrayBomb[i][j].selected = true;
if(9 == m_ArrayBomb[i][j].state)
return FALSE;
if(0 == m_ArrayBomb[i][j].state)
BrowseNoBomb(i,j);
return TRUE;
}
void CBombGame::BrowseNoBomb(int x,int y)
{
int i = x;
int j = y;
CString str;
// str.Format("%d,%d",i,j);
// AfxMessageBox(str);
if(i-1>=0&&j-1>=0)
{
if(m_ArrayBomb[i-1][j-1].selected == false)
{
m_ArrayBomb[i-1][j-1].selected = true;
if(m_ArrayBomb[i-1][j-1].state == 0)
BrowseNoBomb(i-1,j-1);
}
}
if(i-1>=0)
{
if(m_ArrayBomb[i-1][j].selected == false)
{
m_ArrayBomb[i-1][j].selected = true;
if(m_ArrayBomb[i-1][j].state == 0)
BrowseNoBomb(i-1,j);
}
}
if(i-1>=0&&j+1<NXN)
{
if(m_ArrayBomb[i-1][j+1].selected == false)
{
m_ArrayBomb[i-1][j+1].selected = true;
if(m_ArrayBomb[i-1][j+1].state == 0)
BrowseNoBomb(i-1,j+1);
}
}
if(j-1>=0)
{
if(m_ArrayBomb[i][j-1].selected == false)
{
m_ArrayBomb[i][j-1].selected = true;
if(m_ArrayBomb[i][j-1].state == 0)
BrowseNoBomb(i,j-1);
}
}
if(j+1<NXN)
{
if(m_ArrayBomb[i][j+1].selected == false)
{
m_ArrayBomb[i][j+1].selected = true;
if(m_ArrayBomb[i][j+1].state == 0)
BrowseNoBomb(i,j+1);
}
}
if(i+1<NXN&&j-1>=0)
{
if(m_ArrayBomb[i+1][j-1].selected == false)
{
m_ArrayBomb[i+1][j-1].selected = true;
if(m_ArrayBomb[i+1][j-1].state == 0)
BrowseNoBomb(i+1,j-1);
}
}
if(i+1<NXN)
{
if(m_ArrayBomb[i+1][j].selected == false)
{
m_ArrayBomb[i+1][j].selected = true;
if(m_ArrayBomb[i+1][j].state == 0)
BrowseNoBomb(i+1,j);
}
}
if(i+1<NXN&&j+1<NXN)
{
if(m_ArrayBomb[i+1][j+1].selected == false)
{
m_ArrayBomb[i+1][j+1].selected = true;
if(m_ArrayBomb[i+1][j+1].state == 0)
BrowseNoBomb(i+1,j+1);
}
}
}
bool CBombGame::GetXYSelect(int x,int y)
{
return m_ArrayBomb[x][y].selected;
}
int CBombGame::GetXYState(int x,int y)
{
return m_ArrayBomb[x][y].state;
}
void CBombGame::SetXYSelected(int x,int y)
{
m_ArrayBomb[x][y].selected = true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -