• 大小: 256KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: C/C++
  • 标签: C++源代码  

资源简介

自动推箱子 C++源代码,遇到不能过关,可以用这块自动推箱子,自动寻路! 附件包含源代码!

资源截图

代码片段和文件信息

// dllmain.cpp : Defines the entry point for the DLL application.
#include “stdafx.h“
#include “ABEngine.h“
#include 
#include 
#include 
#include “assert.h“
using namespace std;

BOOL APIENTRY DllMain( HMODULE hModule
                       DWORD  ul_reason_for_call
                       LPVOID lpReserved
 )
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}

typedef struct _BOX_NODE
{
ABEngine engine;
int iCurManX;
int iCurManY;
_BOX_NODE *pParent;
BOOL bDone;
}BOX_NODE *LPBOX_NODE;

map  g_map;
LPBOX_NODE g_RootNode = NULL;
vector  g_vPoints;//dst points
string g_strLine;

//主处理线程
DWORD __stdcall EngineThread(LPVOID lParam);
LPBOX_NODE AllocOneNode(LPBOX_NODE lpBoxNode);
void ReleaseOneNode(LPBOX_NODE lpBoxNode);
BOOL SolveNode(LPBOX_NODE lpBoxNode);

BOOL CheckUp(LPBOX_NODE lpBoxNode);
BOOL CheckDown(LPBOX_NODE lpBoxNode);
BOOL CheckLeft(LPBOX_NODE lpBoxNode);
BOOL CheckRight(LPBOX_NODE lpBoxNode);
BOOL CheckStatus(LPBOX_NODE lpBoxNode);
BOOL UpGo(LPBOX_NODE lpBoxNode);
BOOL DownGo(LPBOX_NODE lpBoxNode);
BOOL LeftGo(LPBOX_NODE lpBoxNode);
BOOL RightGo(LPBOX_NODE lpBoxNode);
string GetRealRoutine(LPBOX_NODE lpBoxNode);
void CheckLine(LPBOX_NODE lpBoxNode BOOL bCheckBoxPosition);
BOOL bInVector(int x int y);
BOOL IsFour(LPBOX_NODE lpBoxNode int x int y);

/*
0 表示 请耐心等待执结果
1 表示 参数错误
2 表示 我很忙(本dll用了一些全局变量 一次只能算一个)
*/

int DoEngine(LPABEngine lpABEngine)
{
//我很忙。。。
if (g_RootNode)
{
return RET_ABENGINE_BUSY;
}

//0.参数检查,先不检查了,蹦就蹦吧

//1.检查2维数组数据是否正确
int iManCount = 0;
int iBoxCount = 0;
int iDstCount = 0;

int iCurManX = 0;
int iCurManY = 0;

for (int i=0; iixMax; i++)
{
for (int j=0; jiyMax; j++)
{
if (lpABEngine->pucData[i*lpABEngine->iyMax + j] == BOX_MAN || lpABEngine->pucData[i*lpABEngine->iyMax + j] == BOX_MAN_EX)
{
iCurManX = i;
iCurManY = j;
iManCount++;
}
if (lpABEngine->pucData[i*lpABEngine->iyMax + j] == BOX_BOX)
{
iBoxCount++;
}
if (lpABEngine->pucData[i*lpABEngine->iyMax + j] == BOX_DST)
{
iDstCount++;
}
if (lpABEngine->pucData[i*lpABEngine->iyMax + j] == BOX_Bingo)
{
iBoxCount++;
iDstCount++;
}
if (lpABEngine->pucData[i*lpABEngine->iyMax + j] == BOX_MAN_EX)
{
iDstCount++;
}
}
}
//a.必须且仅有一个人物(BOX_MAN)或者超人(BOX_MAN_EX)
//b.箱子数 和 目标数必须相等
if (iManCount != 1 || iDstCount != iBoxCount)
{
return RET_ABENGINE_INVALID_PARAM;
}

//2.把数据先拷贝出来
POINT pt = {0};
unsigned char *pBuf = new unsigned char[lpABEngine->ixMax * lpABEngine->iyMax];
memcpy(pBuf lpABEngine->pucData lpABEngine->ixMax * lpABEngine->iyMax);
for (int i=0; iixMax; i++)
{
for (int j=0; jiy

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

     文件         83  2012-04-01 02:11  ABEngine\ABEngine.def

     文件        647  2012-04-01 03:16  ABEngine\ABEngine.h

     文件        881  2012-04-01 02:07  ABEngine\ABEngine.sln

    ..A..H.     29696  2012-04-06 12:17  ABEngine\ABEngine.suo

     文件       4804  2012-04-01 02:12  ABEngine\ABEngine.vcproj

     文件       1445  2012-04-06 12:17  ABEngine\ABEngine.vcproj.Kyle-PC.Kyle.user

     文件        100  2012-04-05 13:45  ABEngine\AutoBox.map

     文件      18686  2012-04-06 12:08  ABEngine\dllmain.cpp

     文件       1761  2012-04-01 01:54  ABEngine\ReadMe.txt

     文件        419  2012-04-01 01:54  ABEngine\stdafx.h

     文件       1428  2012-04-01 01:54  ABEngine\targetver.h

     文件        647  2012-04-01 03:16  AutoBox\ABEngine.h

     文件       1816  2012-04-01 04:46  AutoBox\ABEngine.lib

     文件     128212  2012-04-06 12:20  AutoBox\AutoBox.aps

     文件       2092  2012-03-31 22:00  AutoBox\AutoBox.cpp

     文件       1335  2012-03-31 10:56  AutoBox\AutoBox.h

     文件      48640  2012-03-31 17:23  AutoBox\AutoBox.opt

     文件       1592  2012-03-31 17:23  AutoBox\AutoBox.plg

     文件       7206  2012-04-06 12:20  AutoBox\AutoBox.rc

     文件        879  2012-04-01 02:08  AutoBox\AutoBox.sln

    ..A..H.     30208  2012-04-06 12:20  AutoBox\AutoBox.suo

     文件       8051  2012-04-01 02:10  AutoBox\AutoBox.vcproj

     文件       1411  2012-04-06 12:20  AutoBox\AutoBox.vcproj.Kyle-PC.Kyle.user

     文件      10599  2012-04-05 13:25  AutoBox\AutoBoxDlg.cpp

     文件       1853  2012-04-01 02:28  AutoBox\AutoBoxDlg.h

     文件        325  2012-03-31 22:40  AutoBox\Gameobject.cpp

     文件        258  2012-03-31 22:39  AutoBox\Gameobject.h

     文件       3597  2012-03-31 10:56  AutoBox\ReadMe.txt

     文件      67646  2012-03-31 22:12  AutoBox\res\AutoBox.ico

     文件        399  2012-03-31 10:56  AutoBox\res\AutoBox.rc2

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

评论

共有 条评论