资源简介

提供一个小游戏————推箱子 的源代码 希望大家仔细研究代码 成为自己都东西

资源截图

代码片段和文件信息

/*++

Copyright (c) AFE(Active-Free-Elegance)

Module Name:

     BoxMan.cpp

Abstract:

BoxMan Game Class solve all the important movment of the man and box
and some thing refer to them

Author:

    Weijian Luo (Arthur Luo)   15-Jun-2005

E-mail: skybluehacker@yahoo.com.cn

Revision History:      1.0

--*/
#include “stdafx.h“
#include “skyblue_BoxMan.h“
#include “BoxMan.h“
#include    //音效  Winmm.lib


#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif


//地图状态
#define MAP_BACKGROUP  48  //‘0‘  对应字符‘0‘背景
#define MAP_WHITEWALL  49  //‘1‘  墙
#define MAP_BLUEWALL   50  //‘2‘  通道
#define MAP_BALL       51  //‘3‘  目的点
#define MAP_YELLOWBOX  52  //‘4‘  箱子
#define MAP_REDBOX     53  //‘5‘  安放好的箱子
#define MAP_MANWALL    54  //‘6‘  人在通道区域
#define MAP_MANBALL    55  //‘7‘  人在目的点区域


//声音状态
#define SOUND_STATE_START   0  //游戏开始
#define SOUND_STATE_MOVE    1  //工人行走移动
#define SOUND_STATE_PUSH    2  //行走并推动箱子
#define SOUND_STATE_VICTORY 3  //胜利

//游戏区域小方块大小 
#define BLOCK_WIDTH    20   //  宽度
#define BLOCK_HEIGHT    20  //  深度



//假宏定义
int MAX_MISSION_NUM  = 1;

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CBoxMan::CBoxMan()
{
    m_iMissionNum = 1;
::MAX_MISSION_NUM = LoadMaxMissionNum();
    LoadMap(m_iMissionNum);
    m_ptManPosition = GetManPosition();
}

CBoxMan::~CBoxMan()
{

}


void CBoxMan::LoadMap(int iMissionNum)
{
    CString str;
    str.Format(“[%d]“ iMissionNum);

FILE *pFile = fopen(“map.info“ “rb“);
if (pFile == NULL)
{
        AfxMessageBox(“载入地图文件失败“);
        return;
}

    char cTmp[M_TAB_WIDTH*2];
    fgets(cTmp M_TAB_WIDTH*2 pFile);
    while (strncmp(cTmp str 3) != 0)
    {
        fgets(cTmp M_TAB_WIDTH*2 pFile);
    }

    for (int i = 0; i < M_TAB_HEIGHT; i++)
        fgets(m_cMap[i]M_TAB_WIDTH*2 pFile);

    fclose(pFile);
}







int CBoxMan::LoadMaxMissionNum(void)
{
int iMissionNum = 1;
    CString str;
    str.Format(“[%d]“ iMissionNum);

FILE *pFile = fopen(“map.info“ “rb“);
if (pFile == NULL)
{
        AfxMessageBox(“载入地图文件失败“);
        return -1;
}

    char cTmp[M_TAB_WIDTH*2];
while( !feof(pFile) )//not end of file
{
fgets(cTmp M_TAB_WIDTH*2 pFile);
if(strncmp(cTmp str 3) == 0)
{
    str.Format(“[%d]“ ++iMissionNum);
}
}
    fclose(pFile);

return iMissionNum-1;
}

CPoint CBoxMan::GetManPosition()
{
    CPoint manPosition(0 0);
    for (int i = 0; i < M_TAB_HEIGHT; i++)
    {
        for (int j = 0; j < M_TAB_WIDTH; j++)
        {
            if (m_cMap[i][j]==MAP_MANWALL || m_cMap[i][j]==MAP_MANBALL)
            {
                manPosition.x = j;
                manPosition.y = i;
            }
        }
    }
    return manPosition;
}

vo

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

    I.A....     15145  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan.cpp

    I.A....      1936  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan.h

    I.A....      3633  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxManWnd.cpp

    I.A....      1844  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxManWnd.h

    I.A....     14162  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\BoxMan_Edit.cpp

    I.A....      1823  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\BoxMan_Edit.h

    I.A....     35588  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\BoxMan_Editer.aps

    I.A....      2418  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\BoxMan_Editer.clw

    I.A....      3029  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\BoxMan_Editer.cpp

    I.A....      4935  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\BoxMan_Editer.dsp

    I.A....       551  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\BoxMan_Editer.dsw

    I.A....      1626  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\BoxMan_Editer.h

    I.A....     74752  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\BoxMan_Editer.ncb

    I.A....     55808  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\BoxMan_Editer.opt

    I.A....      2198  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\BoxMan_Editer.plg

    I.A....     10381  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\BoxMan_Editer.rc

    I.A....      1882  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\BoxMan_EditerDoc.cpp

    I.A....      1552  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\BoxMan_EditerDoc.h

    I.A....      2085  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\BoxMan_EditerView.cpp

    I.A....      1830  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\BoxMan_EditerView.h

    I.A....      8231  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\Boxman_EditerWnd.cpp

    I.A....      2459  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\Boxman_EditerWnd.h

    I.A....   1405036  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\Debug\BoxMan_Editer.exe

    I.A....     11343  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\Debug\map.info

    I..D...         0  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\Debug

    I.A....      1488  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\LoadMapDlg.cpp

    I.A....      1542  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\LoadMapDlg.h

    I.A....      1504  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\MainFrm.cpp

    I.A....      1421  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\MainFrm.h

    I.A....     11083  2009-08-15 11:03  推箱子\skyblue_BoxMan\BoxMan_Editer\map.info

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

评论

共有 条评论