⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hammal_driver.c

📁 Haier2016芯片的SDK开发包,在2016开发板上面验证过.
💻 C
📖 第 1 页 / 共 2 页
字号:
/*****************************************************************************
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  : 搬运工搬运函数
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);
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -