资源说明:简易推箱子
#include "Map.h"
#include
int XDest = 4;
int YDest = 4;
void CMap::Init()
{
int i,j;
CPoint cPoint;
CSprite *pSphte;
CPlayer cPlay;
CBox cBox;
CDest cDest;
int XPlayer = 4;
int YPlayer = 6;
int XBox = 4;
int YBox = 5;
for (i = 0; i < 10; i++)
{
for (j =0; j < 10; j++)
{
if (i == 0 || j == 0 || i == 9 || j == 9)
{
cPoint.SetPoint(i, j);
pSphte = new CWall(cPoint);
m_nMap[i][j] = pSphte;
}
else if (i == XPlayer && j == YPlayer)
{
cPoint.SetPoint(i,j);
pSphte = new CPlayer(cPoint);
m_nMap[i][j] = pSphte;
}
else if (i == XBox && j == YBox)
{
cPoint.SetPoint(i,j);
pSphte = new CBox(cPoint);
m_nMap[i][j] = pSphte;
}
else if (i == XDest && j == YDest)
{
cPoint.SetPoint(i,j);
pSphte = new CDest(cPoint);
m_nMap[i][j] = pSphte;
}
else
{
cPoint.SetPoint(i, j);
pSphte = new CSpace(cPoint);
m_nMap[i][j] = pSphte;
}
}
cout<GetSprite();
}
cout<GetX();
int YPlayer = pPlayer->GetY();
CBox *pBox = GetBox();
int XBox = pBox->GetX();
int YBox = pBox->GetY();
CDest *pDest = GetDest();
switch(ch)
{
case 'a':
{
int yPlayer = pPlayer->GetY();
YPlayer--;
if ("※" == m_nMap[XPlayer][YPlayer]->GetSprite())
{
YPlayer++;
}
else if (m_nMap[XPlayer][YPlayer]->GetSprite() == "■" || m_nMap[XPlayer][YPlayer]->GetSprite() == "●")
{
int yBox = pBox->GetY();
YBox--;
if (m_nMap[XBox][YBox]->GetSprite() == "※")
{
YPlayer++;
YBox++;
}
CSprite *pB = m_nMap[pBox->GetX()][yBox];
m_nMap[pBox->GetX()][yBox] = m_nMap[XBox][YBox];
m_nMap[XBox][YBox] = pB;
pBox->SetY(YBox);
m_nMap[pBox->GetX()][yBox]->SetY(yBox);
}
CSprite *pP = m_nMap[pPlayer->GetX()][yPlayer];
m_nMap[pPlayer->GetX()][yPlayer] = m_nMap[XPlayer][YPlayer];
m_nMap[XPlayer][YPlayer] = pP;
pPlayer->SetY(YPlayer);
m_nMap[pPlayer->GetX()][yPlayer]->SetY(yPlayer);
}
break;
case 'd':
{
int yPlayer = pPlayer->GetY();
YPlayer++;
if ("※" == m_nMap[XPlayer][YPlayer]->GetSprite())
{
YPlayer--;
}
else if (m_nMap[XPlayer][YPlayer]->GetSprite() == "■" || m_nMap[XPlayer][YPlayer]->GetSprite() == "●")
{
int yBox = pBox->GetY();
YBox++;
if (m_nMap[XBox][YBox]->GetSprite() == "※")
{
YPlayer--;
YBox--;
}
CSprite *pB = m_nMap[pBox->GetX()][yBox];
m_nMap[pBox->GetX()][yBox] = m_nMap[XBox][YBox];
m_nMap[XBox][YBox] = pB;
pBox->SetY(YBox);
m_nMap[pBox->GetX()][yBox]->SetY(yBox);
}
CSprite *pP = m_nMap[pPlayer->GetX()][yPlayer];
m_nMap[pPlayer->GetX()][yPlayer] = m_nMap[XPlayer][YPlayer];
m_nMap[XPlayer][YPlayer] = pP;
pPlayer->SetY(YPlayer);
m_nMap[pPlayer->GetX()][yPlayer]->SetY(yPlayer);
}
break;
case 'w':
{
int xPlayer = pPlayer->GetX();
XPlayer--;
if ("※" == m_nMap[XPlayer][YPlayer]->GetSprite())
{
XPlayer++;
}
else if (m_nMap[XPlayer][YPlayer]->GetSprite() == "■" || m_nMap[XPlayer][YPlayer]->GetSprite() == "●")
{
int xBox = pBox->GetX();
XBox--;
if (m_nMap[XBox][YBox]->GetSprite() == "※")
{
XPlayer++;
XBox++;
}
CSprite *pB = m_nMap[xBox][pBox->GetY()];
m_nMap[xBox][pBox->GetY()] = m_nMap[XBox][YBox];
m_nMap[XBox][YBox] = pB;
pBox->SetX(XBox);
m_nMap[xBox][pBox->GetY()]->SetX(xBox);
}
CSprite *pP = m_nMap[xPlayer][pPlayer->GetY()];
m_nMap[xPlayer][pPlayer->GetY()] = m_nMap[XPlayer][YPlayer];
m_nMap[XPlayer][YPlayer] = pP;
pPlayer->SetX(XPlayer);
m_nMap[xPlayer][pPlayer->GetY()]->SetX(xPlayer);
}
break;
case 's':
{
int xPlayer = pPlayer->GetX();
XPlayer++;
if ("※" == m_nMap[XPlayer][YPlayer]->GetSprite())
{
XPlayer--;
}
else if (m_nMap[XPlayer][YPlayer]->GetSprite() == "■" || m_nMap[XPlayer][YPlayer]->GetSprite() == "●")
{
int xBox = pBox->GetX();
XBox++;
if (m_nMap[XBox][YBox]->GetSprite() == "※")
{
XPlayer--;
XBox--;
}
CSprite *pB = m_nMap[xBox][pBox->GetY()];
m_nMap[xBox][pBox->GetY()] = m_nMap[XBox][YBox];
m_nMap[XBox][YBox] = pB;
pBox->SetX(XBox);
m_nMap[xBox][pBox->GetY()]->SetX(xBox);
}
CSprite *pP = m_nMap[xPlayer][pPlayer->GetY()];
m_nMap[xPlayer][pPlayer->GetY()] = m_nMap[XPlayer][YPlayer];
m_nMap[XPlayer][YPlayer] = pP;
pPlayer->SetX(XPlayer);
m_nMap[xPlayer][pPlayer->GetY()]->SetX(xPlayer);
}
break;
default:
break;
}
if ((pPlayer->GetX() == XDest && pPlayer->GetY() == YDest) || (pBox->GetX() == XDest && pBox->GetY() == YDest))
{
int i,j;
for (i = 0; i < 10; i++)
{
for (j =0; j < 10; j++)
{
if (m_nMap[i][j]->GetSprite() == "◎")
{
m_nMap[i][j]->SetSprite(" ");
}
}
}
}
else if (m_nMap[XDest][YDest]->GetSprite() == " ")
{
m_nMap[XDest][YDest]->SetSprite("◎");
}
if (m_nMap[XDest][YDest]->GetSprite() == "■")
{
m_nMap[XDest][YDest]->SetSprite("●");
// cout<<"游戏结束"<GetX() != XDest || pBox->GetY() != YDest)
{
pBox->SetSprite("■");
}
}
CPlayer *CMap::GetPlayer(void)
{
int i, j;
for (i = 0; i < 10; i++)
{
for (j =0; j < 10; j++)
{
if (m_nMap[i][j]->GetSprite() == "♀")
{
return (CPlayer *)m_nMap[i][j];
}
}
}
}
CBox *CMap::GetBox(void)
{
int i, j;
for (i = 0; i < 10; i++)
{
for (j =0; j < 10; j++)
{
if (m_nMap[i][j]->GetSprite() == "■" || m_nMap[i][j]->GetSprite() == "●")
{
return (CBox *)m_nMap[i][j];
}
}
}
}
CDest *CMap::GetDest(void)
{
int i, j;
for (i = 0; i < 10; i++)
{
for (j =0; j < 10; j++)
{
if (m_nMap[i][j]->GetSprite() == "◎")
{
return (CDest *)m_nMap[i][j];
}
}
}
}
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。