对对碰 MFC实现 有源码


模拟腾讯的对对碰游戏,基本功能已经实现.有声音效果,可以按F1 F2 F3 F4 F5来运行各功能或右键菜单来体验各种功能
资源截图
代码片段和文件信息
#include “StdAfx.h“
#include “DDP.h“

DDP::DDP(void)
{
   m_side=32;//边长设置为32.
   m_Score=0;//得分初始化为0;
}

DDP::~DDP(void)
{
}
void DDP::InitDDP()
{
  m_Score=0;
  srand(time(NULL));//随机种子设置.
  memset(m_Bn016);
  memset(m_hp04);//置0提示可交换的存储空间.

  for (int i=0;i < 8;i++)
  {
  for (int j=0;j < 8;j++)
  {//从左到右从上到下初始化.对对碰矩阵
 m_Block[i][j].type = rand()%6;
 m_Block[i][j].flag=0;
  if (i-2 >= 0 || j-2 >= 0)
  {//以赋值了的方块为参考每一个新产生的方块要向左和上两个方面检测有没有三个一样的样式方块.
  CheckAble(ijtrue);
  }
  }
   }
}
bool DDP::CheckAble(int iint jbool init)
{
if (i-2 >= 0)
{
while(m_Block[i-2][j].type == m_Block[i][j].type && m_Block[i][j].type == m_Block[i-1][j].type)

if (init)//如果是在初始化.
{   //如果有一样的方块则重新赋值样式并再检测.
m_Block[i][j].type = rand()%6;
CheckAble(ijtrue);
}
else
{//如果是在玩的过程中.
            m_Block[i-2][j].flag = m_Block[i-1][j].flag = m_Block[i][j].flag = 1;
m_Bn[j][1]=m_Bn[j][1]>i?m_Bn[j][1]:i;//记录消去时最大的行数.
m_Bn[j][0]+=48;//每消去一个方块值加16此列消3个就加48以后可以据些值平滑显示方块下落的过程.
}
            return true;
}
}

if (j-2 >= 0)
{
while(m_Block[i][j-2].type == m_Block[i][j].type && m_Block[i][j].type == m_Block[i][j-1].type)
{
if (init)
{
m_Block[i][j].type = rand()%6;
CheckAble(ijtrue);
}
else
{
m_Block[i][j-2].flag = m_Block[i][j-1].flag = m_Block[i][j].flag = 1;
  m_Bn[j][1]=m_Bn[j][1]>i?m_Bn[j][1]:i; //记录各列消去时的最大行数  
  m_Bn[j-1][1]=m_Bn[j-1][1]>i?m_Bn[j-1][1]:i;
  m_Bn[j-2][1]=m_Bn[j-2][1]>i?m_Bn[j-2][1]:i;
m_Bn[j][0]+=16;m_Bn[j-1][0]+=16;m_Bn[j-2][0]+=16;//在对应各可消去的列上累加16;
}
 return true;
}
}
return false;
}

bool DDP::CanDispeled()
{
//像初始化的过程一样检测玩的过程是否有可以消去的.
bool result=false;
for (int i=0;i < 8;i++)
for (int j=0;j < 8;j++)
if (i-2 >= 0 || j-2 >= 0)
result=CheckAble(ij)||result;
for (int j=0;j<8;j++)
 if(m_Bn[j][0]>48)
 m_Bn[j][0]=(m_Bn[j][0]+96)/3;
    return result;
}

void DDP::Dispeling()
{
int ijt;
for (j=0;j<8;j++)
{
for (i=0t=0;i<8;i++)
{
if (m_Block[i][j].flag==1)
{
m_Block[i][j].flag=0;
for (int k=i;k>t;k--)
m_Block[k][j].type=m_Block[k-1][j].type;
m_Block[t++][j].type=rand()%6;
}//下落方块时就是把所有标记即将消去的方块移到最最上面同时再产生新的样式来替代它.
}
m_Score+=t;
}
}
bool DDP::ContinueAble()
{
//检验各种存在的能交换后消去的情况.
for (int i=0;i<8;i++)
{
for (int j=0;j<8;j++)
{
if ((i>0&&i<7)||(j>0&&j<7))
{
if(RALDU(ij))
return true; 
}
            if(ROLDU(ij)) return true;
}
}
  return false;
}

bool DDP::RALDU(int iint j)
{
if (i>0&&i<7)
{
if (m_Block[i-1][j].type==m_Block[i+1][j].type)
{

if (i>2)
if (m_Block[i-2][j].type==m_Block[i-1][j].type)
{
m_hp[0][0]=(byte)i; m_hp[0][1]=(byte)j;
                    m_hp[1][0]=(byte)(i+1); m_hp[1][1]=(byte)j;
return true;
}
if(i<6)
if (m_Block[i+2][j].type==m_Block[i+1]

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件    1818088  2011-03-26 19:36  对对碰Releaseddp.wav

     文件      24330  2011-03-26 19:46  对对碰Releasefaild.wav

     文件      41610  2011-03-26 19:46  对对碰Releasesucess.wav

     文件    1746944  2011-04-17 16:07  对对碰Release对对碰.exe

     文件    6310912  2011-04-17 16:07  对对碰Release对对碰.pdb

     文件       6984  2011-04-17 16:07  对对碰对对碰DDP.cpp

     文件        782  2011-03-24 15:05  对对碰对对碰DDP.h

     文件       2741  2011-03-17 15:45  对对碰对对碰ReadMe.txt

     文件       6736  2011-04-17 16:07  对对碰对对碰ReleaseBuildLog.htm

     文件      41858  2011-04-17 16:07  对对碰对对碰ReleaseDDP.obj

     文件         67  2011-04-17 16:07  对对碰对对碰Releasemt.dep

     文件    2549269  2011-03-30 08:57  对对碰对对碰Releasestdafx.obj

     文件     502784  2011-04-17 16:07  对对碰对对碰Releasevc90.idb

     文件    1978368  2011-04-17 16:07  对对碰对对碰Releasevc90.pdb

     文件        381  2011-04-17 16:07  对对碰对对碰Release对对碰.exe.intermediate.manifest

     文件      35415  2011-03-30 08:59  对对碰对对碰Release对对碰.obj

     文件   25624576  2011-03-30 08:57  对对碰对对碰Release对对碰.pch

     文件    1434820  2011-03-30 08:57  对对碰对对碰Release对对碰.res

     文件      91015  2011-03-30 09:00  对对碰对对碰Release对对碰Dlg.obj

     文件       6262  2011-03-21 09:34  对对碰对对碰
esitmap0.bmp

     文件     291654  2011-03-21 15:25  对对碰对对碰
esitmap1.bmp

     文件      22654  2011-03-21 12:02  对对碰对对碰
esitmap2.bmp

     文件     823414  2011-03-21 09:34  对对碰对对碰
esk.bmp

     文件       1998  2011-03-21 10:48  对对碰对对碰
esclose.bmp

     文件    1818088  2011-03-26 19:36  对对碰对对碰
esddp.wav

     文件       6126  2011-03-21 13:15  对对碰对对碰
esdrag.bmp

     文件      24330  2011-03-26 19:46  对对碰对对碰
esfaild.wav

     文件       2106  2011-03-21 11:10  对对碰对对碰
esmin.bmp

     文件        358  2011-03-17 15:45  对对碰对对碰
esMy.rc2

     文件      89094  2011-03-21 09:34  对对碰对对碰
esperson0.bmp

............此处省略28个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)