C++推箱子小游戏
文件大小: 14k
源码售价: 10 个金币 积分规则     积分充值
资源说明:简易推箱子 #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]; } } } }
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。