?? hammal_driver.c
字號:
/*****************************************************************************
File Name : Hammal_driver.c
Description : game Manage for the System.
Copyright (C) 2005
Author(s) : Goudio
Mender :
Reference :
*****************************************************************************/
/*
* =======================
* IMPROVEMENTS THOUGHT OF
* =======================
*
* =====================
* MODIFICATION HISTORY:
* =====================
*
* Date Modification Initials
* ---- ------------ --------
* 05.24.2005 CREATED GOUDIO
*/
/****************************************************************************************/
/************************************** Includes
****************************************/
/****************************************************************************************/
#include "hammal.h"
/*****************************************************************************/
/******************************** User globals
*******************************/
/*****************************************************************************/
#define UNDO_MAX_STEP 5
#define MAX_ROW 11
#define MAX_COLUMN 13
#define MAX_LEVEL 11
typedef HM_BYTE MANPOS[2];//[UNDO_MAX_STEP];
typedef HM_BYTE UNDO_TYPE[UNDO_MAX_STEP][UNDO_MAX_STEP];
typedef HM_BYTE LEVEL_TYPE[MAX_COLUMN];
HM_STATIC HM_BYTE ucBackStep = 1;
HM_STATIC HM_BYTE ucManRow;
HM_STATIC HM_BYTE ucManColumn;
HM_STATIC HM_BOOLEAN bEnterAuto = FALSE;
HM_STATIC HM_WORD bCurStep;
HM_STATIC HM_BYTE ucClass;
HM_STATIC MANPOS *ucManPos = NULL;
HM_STATIC UNDO_TYPE *ucUndoTemp = NULL;
HM_STATIC LEVEL_TYPE *ucLevelTemp = NULL;
HM_STATIC HM_INT iXOffset = BOXXOFFSET;
HM_STATIC HM_INT iYOffset = BOXYOFFSET;
HM_BYTE HM_CONST_FAR ucLevel[11][11][13]=
{
{
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,1,1,1,0,0,0,0,0,0,0},
{0,0,0,1,3,1,0,0,0,0,0,0,0},
{0,0,0,1,2,1,1,1,1,0,0,0,0},
{0,1,1,1,4,2,4,3,1,0,0,0,0},
{0,1,3,2,4,6,1,1,1,0,0,0,0},
{0,1,1,1,1,4,1,0,0,0,0,0,0},
{0,0,0,0,1,3,1,0,0,0,0,0,0},
{0,0,0,0,1,1,1,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0}
},
{
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,1,1,1,1,1,0,0,0,0,0,0,0},
{0,1,6,2,2,1,0,0,0,0,0,0,0},
{0,1,2,4,4,1,0,1,1,1,0,0,0},
{0,1,2,4,2,1,0,1,3,1,0,0,0},
{0,1,1,1,2,1,1,1,3,1,0,0,0},
{0,0,1,1,2,2,2,2,3,1,0,0,0},
{0,0,1,2,2,2,1,2,2,1,0,0,0},
{0,0,1,2,2,2,1,1,1,1,0,0,0},
{0,0,1,1,1,1,1,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0}
},
{
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,1,1,1,1,1,1,0,0,0},
{0,0,0,0,1,2,2,2,2,1,0,0,0},
{0,0,1,1,1,4,4,4,2,1,0,0,0},
{0,0,1,6,2,4,3,3,2,1,0,0,0},
{0,0,1,2,4,3,3,3,1,1,0,0,0},
{0,0,1,1,1,1,2,2,1,0,0,0,0},
{0,0,0,0,0,1,1,1,1,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0}
},
{
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,1,1,1,1,0,0,1,1,1,1,1,0},
{1,1,2,2,1,0,0,1,2,2,2,1,0},
{1,2,4,2,1,1,1,1,4,2,2,1,0},
{1,2,2,4,3,3,3,3,2,4,2,1,0},
{1,1,2,2,2,2,1,2,6,2,1,1,0},
{0,1,1,1,1,1,1,1,1,1,1,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0}
},
{
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,1,1,1,1,1,0,0,0,0},
{0,0,1,1,1,2,2,6,1,0,0,0,0},
{0,0,1,2,2,4,3,2,1,1,0,0,0},
{0,0,1,2,2,3,4,3,2,1,0,0,0},
{0,0,1,1,1,2,5,4,2,1,0,0,0},
{0,0,0,0,1,2,2,2,1,1,0,0,0},
{0,0,0,0,1,1,1,1,1,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0}
},
{
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,1,1,1,1,0,0,0,0,0,0},
{0,0,0,1,3,3,1,0,0,0,0,0,0},
{0,0,1,1,2,3,1,1,0,0,0,0,0},
{0,0,1,2,2,4,3,1,0,0,0,0,0},
{0,1,1,2,4,2,2,1,1,0,0,0,0},
{0,1,2,2,1,4,4,2,1,0,0,0,0},
{0,1,2,2,6,2,2,2,1,0,0,0,0},
{0,1,1,1,1,1,1,1,1,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0}
},
{
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,1,1,1,1,1,1,1,1,0,0,0,0},
{0,1,2,2,1,2,2,2,1,0,0,0,0},
{0,1,2,4,3,3,4,2,1,0,0,0,0},
{0,1,6,4,3,5,2,1,1,0,0,0,0},
{0,1,2,4,3,3,4,2,1,0,0,0,0},
{0,1,2,2,1,2,2,2,1,0,0,0,0},
{0,1,1,1,1,1,1,1,1,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0}
},
{
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,1,1,1,1,1,1,1,1,0,0,0},
{0,0,1,1,2,2,2,2,1,1,0,0,0},
{0,0,1,2,4,2,4,4,2,1,0,0,0},
{0,0,1,3,3,3,3,3,3,1,0,0,0},
{0,0,1,2,4,4,2,4,2,1,0,0,0},
{0,0,1,1,1,2,6,1,1,1,0,0,0},
{0,0,0,0,1,1,1,1,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0}
},
{
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,1,1,1,1,1,1,0,0,0},
{0,0,0,0,1,2,2,2,2,1,1,1,0},
{0,0,0,0,1,2,4,2,2,2,2,1,0},
{0,0,1,1,1,2,4,2,1,1,2,1,0},
{0,0,1,3,3,3,2,4,2,2,2,1,0},
{0,0,1,3,3,3,4,1,4,2,1,1,0},
{0,0,1,1,1,1,2,1,2,4,2,1,0},
{0,0,0,0,0,1,2,2,6,2,2,1,0},
{0,0,0,0,0,1,1,1,1,1,1,1,0}
},
{
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,1,1,1,1,1,1,0,0,0,0,0},
{0,0,1,2,2,2,2,1,0,0,0,0,0},
{0,0,1,2,4,4,4,1,1,0,0,0,0},
{0,0,1,2,2,1,3,3,1,1,1,0,0},
{0,0,1,1,2,2,3,3,4,2,1,0,0},
{0,0,0,1,2,6,2,2,2,2,1,0,0},
{0,0,0,1,1,1,1,1,1,1,1,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0}
},
{
{0,0,0,0,0,0,0,0,0,1,1,1,0},
{0,0,0,0,0,0,0,0,1,2,2,2,1},
{0,1,1,1,1,1,1,1,1,2,1,2,1},
{1,2,4,2,4,2,4,2,4,2,2,2,1},
{1,2,1,3,1,3,1,3,1,6,4,1,0},
{1,3,3,3,3,3,3,3,2,2,2,1,1},
{1,2,1,2,1,2,1,2,1,4,1,1,0},
{1,2,4,2,4,2,4,2,4,2,2,2,1},
{0,1,1,1,1,1,1,1,1,2,1,2,1},
{0,0,0,0,0,0,0,0,1,2,2,2,1},
{0,0,0,0,0,0,0,0,0,1,1,1,0}
}
};
HM_BYTE HM_CONST_FAR Step1[11]={0,0,1,2,2,3,1,1,0,3,3};
HM_BYTE HM_CONST_FAR Step2[93]={1,1,3,3,3,3,1,3,3,0,0,2,1,3,1,2,0,2,1,1,
1,3,1,2,2,3,0,0,0,0,2,2,2,2,0,0,3,1,2,1,
3,3,3,3,1,3,3,0,0,2,1,3,1,2,0,2,1,1,1,3,
1,2,0,0,0,0,2,2,2,0,0,3,1,2,1,3,3,3,1,3,
3,0,0,2,1,3,1,2,0,2,1,1,1};
HM_BYTE HM_CONST_FAR Step3[34]={3,1,1,1,2,1,1,2,2,0,0,3,3,0,3,0,0,2,1,1,
1,2,2,1,1,3,0,2,0,3,2,0,3,3};
HM_BYTE HM_CONST_FAR Step4[65]={1,2,0,0,0,0,0,3,0,0,2,1,1,1,1,1,0,0,0,0,
0,0,2,1,2,1,3,0,3,1,3,1,1,2,1,1,3,1,1,2,0,
0,0,1,1,1,1,2,2,0,3,1,3,0,0,0,1,1,2,2,0,
3,1,3,0};
HM_BYTE HM_CONST_FAR Step5[43]={3,0,0,3,0,0,2,1,1,2,1,1,3,3,0,0,3,3,1,2,
0,2,2,2,1,1,3,3,1,3,0,3,0,0,2,2,1,0,2,0,
0,3,1};
HM_BYTE HM_CONST_FAR Step6[72]={0,2,2,1,1,2,2,3,3,0,0,3,3,1,1,2,3,1,1,2,
0,3,0,0,0,2,2,2,1,1,1,3,0,2,0,0,3,3,3,1,
1,2,2,1,2,0,3,3,3,0,0,2,2,1,2,2,3,3,0,3,
3,1,1,2,2,2,3,3,3,1,2,2};
HM_BYTE HM_CONST_FAR Step7[55]={2,1,0,3,3,1,2,1,1,3,0,1,3,1,1,2,0,0,2,2,
2,1,1,3,0,3,0,3,3,1,1,2,0,2,0,0,0,0,3,3,
1,2,0,2,1,1,0,0,2,2,1,3,0,3,1};
HM_BYTE HM_CONST_FAR Step8[100]={2,2,0,2,2,1,1,3,0,3,3,3,0,2,1,2,2,2,0,0,
3,0,3,3,1,1,3,1,2,0,0,0,2,2,1,1,0,0,3,3,
1,1,2,0,2,2,1,1,1,3,1,3,3,0,0,1,1,2,2,0,
2,0,0,3,2,1,1,3,0,1,1,3,3,0,0,2,0,1,1,3,
0,3,0,2,1,1,2,2,2,0,3,2,0,0,3,1,1,2,1,3};
HM_BYTE HM_CONST_FAR Step9[139]={0,0,2,2,0,2,2,1,0,3,3,1,2,0,2,2,2,1,1,3,
0,2,0,3,3,3,1,3,0,0,1,2,2,2,1,1,1,1,1,3,
3,0,0,0,0,1,1,1,1,2,2,0,0,0,0,0,3,3,1,3,
0,1,3,3,1,1,2,2,1,2,0,0,0,1,1,1,1,2,2,0,
0,0,0,0,3,3,1,3,3,3,1,1,1,1,2,0,3,0,2,2,
1,2,0,0,0,0,0,1,2,2,1,3,2,1,1,1,1,3,3,0,
0,0,0,0,2,2,1,1,3,2,1,1,1,3,3,0,0,0,0};
HM_BYTE HM_CONST_FAR Step10[90]={0,2,2,0,2,2,1,1,1,3,3,1,3,0,3,0,0,2,2,0,
2,2,1,3,1,2,1,3,3,1,3,3,0,0,0,2,2,0,2,2,
1,1,1,3,3,1,3,3,0,2,3,0,0,2,1,1,3,1,2,3,
1,1,2,0,3,0,0,0,0,2,2,0,2,2,1,1,1,3,3,2,
2,0,0,0,3,1,1,2,1,3};
HM_BYTE HM_CONST_FAR Step11[692]={3,1,2,0,2,2,2,1,1,3,3,0,3,0,2,3,3,3,3,1,
1,3,3,0,0,2,2,2,2,0,0,3,3,1,1,2,2,1,2,2,
0,3,1,3,0,2,2,1,1,2,2,0,0,3,3,1,3,3,0,3,
3,0,0,2,2,2,2,1,1,3,2,2,2,1,1,3,3,0,3,0,
2,0,0,3,3,3,3,1,1,2,2,0,1,3,3,0,0,2,2,1,
1,1,2,2,0,3,1,3,0,2,2,1,1,2,2,0,0,3,3,1,
3,3,0,3,3,0,0,2,2,0,0,2,2,1,1,1,1,3,2,2,
2,1,1,3,3,0,3,0,2,0,0,0,0,3,3,1,1,3,3,1,
1,2,2,0,0,1,1,1,2,2,0,3,1,3,0,3,3,3,3,1,
1,2,2,0,1,3,3,0,0,2,2,2,2,1,2,2,0,0,0,0,
0,3,3,3,3,1,1,1,1,0,0,2,2,0,1,3,3,0,0,2,
2,3,3,1,1,1,1,2,2,0,0,1,1,1,2,2,0,3,1,3,
0,2,2,1,1,2,2,0,0,3,3,1,3,3,0,3,3,0,0,0,
0,2,2,0,0,2,2,1,1,1,1,1,1,3,2,2,2,1,1,3,
3,0,3,0,2,0,0,0,0,0,0,3,3,1,1,3,3,1,1,1,
1,2,2,3,3,0,0,0,0,2,2,0,0,3,3,1,1,1,1,2,
2,0,0,3,3,0,0,2,2,2,2,1,1,1,1,1,1,1,3,3,
0,0,0,1,1,1,2,2,0,3,1,3,0,3,3,3,3,1,1,2,
2,0,1,3,3,0,0,2,2,2,2,1,2,2,0,0,0,0,0,0,
0,3,3,3,3,1,1,1,1,1,1,0,0,0,0,2,2,0,1,3,
3,0,0,2,2,3,3,1,1,1,1,2,2,0,0,3,3,1,1,1,
1,2,2,0,0,1,1,1,2,2,0,3,1,3,0,2,2,1,1,2,
2,0,0,3,3,1,3,3,0,3,3,0,0,0,0,0,0,2,2,0,
0,2,2,1,1,1,1,1,1,1,1,3,2,2,2,1,1,3,3,0,
3,0,2,0,0,0,0,0,0,0,0,3,3,1,1,3,3,1,1,1,
1,1,1,2,2,3,3,0,0,0,0,0,0,2,2,0,0,3,3,1,
1,1,1,1,1,0,0,2,2,0,0,1,1,3,3,1,1,2,2,0,
0,3,3,0,0,0,0,2,2,2,2,1,1,1,1,1,1,1,1,1,
3,3,0,0,0,3,3,0,0,0,0,2,2,0,1,3,3,1,1,2,
2,0,0,1,1,3,3,1,1,2,2,0,0,0,1,1,1,1,1,1,
2,2,0,3,1,3,0,0,0,0,0,1,1,1,1,3,3,3,3,1,
1,2,2,0,1,3,3,0,0,2,2,2,2,1,2,2,0,3,1,3,
0,0,0,0,1,3,3,1,1,3,3,1,1,2,2,0,1,3,3,0,
0,2,2,2,2,1,2,2,0,3,1,3,0,0,0,1,1,1,2,2,
1,2,2,0,0,3,3,3,1,3,0,0
};
/*****************************************************************************/
/******************************* Functions
***********************************/
/*****************************************************************************/
/****************************************************************************
Name : BoxMove()
Description : 搬運工搬運函數(shù)
Parameters : HROSD_RegionHandle_t Handle, HM_BYTE ucOpIndex
Return Value : void
****************************************************************************/
HM_VOID BoxMove(HM_BYTE ucOpIndex,HM_BYTE ucClass)// HAMMAL_POSTFIT
{
HM_BYTE row,line,row1,line1,row2,line2,i,j,k;
HM_BYTE data1,data2,data0;
if (ucOpIndex==0)
{
row = ucManRow;
row1 = ucManRow;
row2 = ucManRow;
line = ucManColumn;
line1 = ucManColumn - 1;
line2 = ucManColumn - 2;
}
else if (ucOpIndex==1)
{
row = ucManRow;
row1 = ucManRow;
row2 = ucManRow;
line = ucManColumn;
line1 = ucManColumn + 1;
line2 = ucManColumn + 2;
}
else if (ucOpIndex==2)
{
row = ucManRow;
row1 = ucManRow - 1;
row2 = ucManRow - 2;
line = ucManColumn;
line1 = ucManColumn;
line2 = ucManColumn;
}
else if (ucOpIndex==3)
{
row = ucManRow;
row1 = ucManRow + 1;
row2 = ucManRow + 2;
line = ucManColumn;
line1 = ucManColumn;
line2 = ucManColumn;
}
data1 = ucLevelTemp[row1][line1];
data2 = ucLevelTemp[row2][line2];
data0 = ucLevelTemp[row][line];
if (data1 == 2 || data1 == 3)
{
if (ucBackStep > 5)
{
ucBackStep = 5;
for (k=0;k<4;k++)
{
for (i=0; i<5; i++)
{
for(j=0;j<5;j++)
{
ucUndoTemp[k][i][j] = ucUndoTemp[k+1][i][j];
}
}
ucManPos[k][0] = ucManPos[k+1][0];
ucManPos[k][1] = ucManPos[k+1][1];
}
}
ucManPos[ucBackStep-1][0] = ucManRow;
ucManPos[ucBackStep-1][1] = ucManColumn;
for (i=ucManRow - 2; i <= ucManRow + 2; i++)
for (j=ucManColumn - 2; j<=ucManColumn + 2; j++)
ucUndoTemp[ucBackStep-1][i-ucManRow+2][j-ucManColumn+2] = ucLevelTemp[i][j];
ucBackStep++;
if ((ucLevel[ucClass-1][row][line] == 3) || (ucLevel[ucClass-1][row][line] == 5))
{
data0=3;
ucLevelTemp[row][line] = data0;
}
else
{
data0=2;
ucLevelTemp[row][line] = data0;
}
data1=6;
ucManRow = row1;
ucManColumn = line1;
ucLevelTemp[row1][line1] = data1;
HAMMAL_DrawBasicBoxBMP(row,line,data0);
HAMMAL_DrawBasicBoxBMP(row1,line1,data1);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -