推箱子游戏C++程序代码


推箱子游戏c++代码可以直接运行
资源截图
代码片段和文件信息
/*++

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

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-11-08 18:06  第3章 推箱子
     文件      385100  2015-11-08 18:06  第3章 推箱子MSVCRTD.DLL
     目录           0  2015-11-08 19:49  第3章 推箱子skyblue_BoxMan
     文件       15145  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan.cpp
     文件        1936  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan.h
     文件        3633  2015-11-08 18:05  第3章 推箱子skyblue_BoxManBoxManWnd.cpp
     文件        1844  2015-11-08 18:05  第3章 推箱子skyblue_BoxManBoxManWnd.h
     目录           0  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_Editer
     文件       14162  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_EditerBoxMan_Edit.cpp
     文件        1823  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_EditerBoxMan_Edit.h
     文件       35420  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_EditerBoxMan_Editer.aps
     文件        2534  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_EditerBoxMan_Editer.clw
     文件        3029  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_EditerBoxMan_Editer.cpp
     文件        4935  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_EditerBoxMan_Editer.dsp
     文件         551  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_EditerBoxMan_Editer.dsw
     文件        1626  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_EditerBoxMan_Editer.h
     文件       91136  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_EditerBoxMan_Editer.ncb
     文件       50688  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_EditerBoxMan_Editer.opt
     文件        1225  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_EditerBoxMan_Editer.plg
     文件       10381  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_EditerBoxMan_Editer.rc
     文件        1882  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_EditerBoxMan_EditerDoc.cpp
     文件        1552  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_EditerBoxMan_EditerDoc.h
     文件        2085  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_EditerBoxMan_EditerView.cpp
     文件        1830  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_EditerBoxMan_EditerView.h
     文件        8231  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_EditerBoxman_EditerWnd.cpp
     文件        2459  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_EditerBoxman_EditerWnd.h
     目录           0  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_EditerDebug
     文件       33302  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_EditerDebugBoxMan_Edit.obj
     文件     1405031  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_EditerDebugBoxMan_Editer.exe
     文件     1764892  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_EditerDebugBoxMan_Editer.ilk
     文件       16703  2015-11-08 18:06  第3章 推箱子skyblue_BoxManBoxMan_EditerDebugBoxMan_Editer.obj
............此处省略112个文件信息

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

发表评论

评论列表(条)