//mmishopping_chess_export.h
#include "mmishopping_chess_image.h"
PUBLIC BOOLEAN MMISHOPPING_OpenChessWin(void);
//mmishopping_chess_id.def
WIN_ID_DEF(MMISHOPPING_CHESS_WIN_ID, "MMISHOPPING_CHESS_WIN_ID")
//mmishopping_chess_id.h
/****************************************************************************
** File Name: mmigame_square_id.h *
** Author: *
** Date: 03/29/2006 *
** Copyright: 2003 Spreadtrum, Incoporated. All Rights Reserved. *
** Description: This file is used to describe the data struct of *
** system, applicaiton, window and control *
****************************************************************************
** Important Edit History *
** ------------------------------------------------------------------------*
** DATE NAME DESCRIPTION *
** 03/2006 Annie.an Create
**
****************************************************************************/
/**--------------------------------------------------------------------------*
** Include Files *
**--------------------------------------------------------------------------*/
#include "sci_types.h"
#include "os_api.h"
#include "mmk_type.h"
#include "mmi_module.h"
/**---------------------------------------------------------------------------*
** Compiler Flag *
**---------------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C"
{
#endif
#define WIN_ID_DEF(win_id, win_id_name) win_id,
typedef enum
{
SHOPPING_CHESS_ID_START = (MMI_MODULE_SHOPPING_CHESS<< 16),
#include "mmishopping_chess_id.def"
SHOPPING_CHESS_MAX_WIN_ID
}SHOPPING_CHESS_WINDOW_ID_E;
#undef WIN_ID_DEF
// 命名规则: 模块名 + 窗口名 + WIN_ID , eg: CC_DIALING_WIN_ID (CC部分呼叫窗口ID)
/**---------------------------------------------------------------------------*
** Compiler Flag *
**---------------------------------------------------------------------------*/
#ifdef __cplusplus
}
#endif
//mmishopping_chess_image.h
#include "sci_types.h"
#include "mmi_imagefun.h"
#include "mmi_module.h"
#ifdef __cplusplus
extern "C" {
#endif
#define MACRO_MDU_TYPE MACRO_MDU_IMAGE
#include "macro_mdu_def.h"
typedef enum SHOPPING_CHESS_MMI_IMAGE_ID_E
{
SHOPPING_CHESS_IMAGE_ID_START = (MMI_MODULE_SHOPPING_CHESS << 16 ) | MMI_SYS_RES_FLAG,
#include "shopping_chess_mdu_def.h"
SHOPPING_CHESS_IMAGE_MAX_ID
} SHOPPING_CHESS_MMI_IMAGE_ID_E;
#undef MACRO_MDU_TYPE
#ifdef __cplusplus
}
#endif
//mmishopping_chess_internal.h
#define SHOPPING_CHESS_MAN_MOVE_MSG (MSG_USER_START + 100)
#define SHOPPING_CHESS_COM_MOVE_MSG (MSG_USER_START + 101)
#define NOCHESS 0 //没有棋子
#define B_KING 1 //黑帅
#define B_CAR 2 //黑车
#define B_HORSE 3 //黑马
#define B_CANON 4 //黑炮
#define B_BISHOP 5 //黑士
#define B_ELEPHANT 6 //黑象
#define B_PAWN 7 //黑卒
#define B_BEGIN B_KING
#define B_END B_PAWN
#define R_KING 8 //红帅
#define R_CAR 9 //红车
#define R_HORSE 10 //红马
#define R_CANON 11 //红炮
#define R_BISHOP 12 //红士
#define R_ELEPHANT 13 //红象
#define R_PAWN 14 //红兵
#define R_BEGIN R_KING
#define R_END R_PAWN
#define BASEVALUE_PAWN 100
#define BASEVALUE_BISHOP 250
#define BASEVALUE_ELEPHANT 250
#define BASEVALUE_CAR 500
#define BASEVALUE_HORSE 350
#define BASEVALUE_CANON 350
#define BASEVALUE_KING 10000
#define FLEXIBILITY_PAWN 15
#define FLEXIBILITY_BISHOP 1
#define FLEXIBILITY_ELEPHANT 1
#define FLEXIBILITY_CAR 6
#define FLEXIBILITY_HORSE 12
#define FLEXIBILITY_CANON 6
#define FLEXIBILITY_KING 0
#define IsBlack(x) (x>=B_BEGIN&&x<=B_END)
#define IsRed(x) (x>=R_BEGIN&&x<=R_END)
#define IsSameSide(x,y) ((IsBlack(x)&&IsBlack(y))||(IsRed(x)&&IsRed(y)))
#define MAN_WIN 1
#define COM_WIN 2
//const int MW=24,SW=1; //MW-棋子宽度;SW-棋子间隔的一半
//const int BWA=MW+SW*2; //BWA-棋格宽度
//const int XBW=BWA*9,YBW=BWA*10; //棋盘的长宽
const int MAN=0; //人
const int COM=1; //计算机
const int RED=0; //红方
const int BLACK=1; //黑方
uint8 *s_bg_img_buf_ptr = PNULL;
LOCAL uint8 is_show_num = 0;
typedef enum
{
LINKS_TILE_ID_0,
LINKS_TILE_ID_1,
LINKS_TILE_ID_2,
LINKS_TILE_ID_3,
LINKS_TILE_ID_4,
LINKS_TILE_ID_5,
LINKS_TILE_ID_6,
LINKS_TILE_ID_7,
LINKS_TILE_ID_8,
LINKS_TILE_ID_9,
LINKS_TILE_ID_10,
LINKS_TILE_ID_11,
LINKS_TILE_ID_12,
LINKS_TILE_ID_13,
LINKS_TILE_ID_14,
LINKS_TILE_ID_15,
LINKS_TILE_MAX_NUMBER, //子图片总数
LINKS_TILE_BLANK = 256, // #define LINKS_TILE_BLANK 256 // 无图片时的id
}LINKS_TILES_ID_E;
typedef enum
{
SHOPPING_CHESS_DIRECTION_LEFT=1, //向左
SHOPPING_CHESS_DIRECTION_RIGHT, //向右
SHOPPING_CHESS_DIRECTION_UP, //向上
SHOPPING_CHESS_DIRECTION_DOWN //向下
} SHOPPING_CHESS_DIRECTION_E;
typedef enum
{
SHOPPING_CHESS_ID_RED_K = 0, //红帅
SHOPPING_CHESS_ID_RED_S, //仕
SHOPPING_CHESS_ID_RED_X, //相
SHOPPING_CHESS_ID_RED_M, //马
SHOPPING_CHESS_ID_RED_J, //车
SHOPPING_CHESS_ID_RED_P, //炮
SHOPPING_CHESS_ID_RED_B, //兵
SHOPPING_CHESS_ID_BLACK_K, //黑将
SHOPPING_CHESS_ID_BLACK_S, //士
SHOPPING_CHESS_ID_BLACK_X, //象
SHOPPING_CHESS_ID_BLACK_M, //马
SHOPPING_CHESS_ID_BLACK_J, //车
SHOPPING_CHESS_ID_BLACK_P, //炮
SHOPPING_CHESS_ID_BLACK_B, //卒
}SHOPPING_CHESS_ID_E;
typedef struct
{
MMI_IMAGE_ID_T image_id; //image_id 可以与chess_id 统一起来
GUI_RECT_T original_rect;
GUI_RECT_T from_rect;
GUI_RECT_T to_rect;
GUI_POINT_T from_point;
GUI_POINT_T to_point;
BOOLEAN is_select;
BYTE m_ChessBoard[10][9];
BYTE m_BackupChessBoard[10][9];
}SHOPPING_CHESS_INFO_T;
typedef struct
{
BYTE ChessID; //
GUI_POINT_T From;
GUI_POINT_T To; //
int Score; //
}SHOPPING_CHESS_MOVE;
//LOCAL MMI_IMAGE_ID_T shopping_chess_bg[] = {IMAGE_SHOPPING_TESTWIN_BG};
LOCAL uint8 shopping_testwin_bg_timer_id = 0;
LOCAL uint8 shopping_testwin_pop_timer_id[8] = {0};
LOCAL GUI_LCD_DEV_INFO Shopping_Chesswin_Bg_Layer = {0};
LOCAL GUI_LCD_DEV_INFO Shopping_Chesswin_Fg_Layer = {0};
LOCAL GUI_LCD_DEV_INFO Shopping_Chesswin_TpMove_Layer = {0};
LOCAL CreateShoppingChesswinLayer(GUI_LCD_DEV_INFO *layer,BOOLEAN is_static_layer,BOOLEAN is_bg_layer);
LOCAL GUI_LCD_DEV_INFO CreateShoppingChesswinBgLayer(void);
LOCAL GUI_LCD_DEV_INFO CreateShoppingChesswinFgLayer(void);
LOCAL GUI_LCD_DEV_INFO CreateShoppingChesswinTpMoveLayer(void);
LOCAL void DisplayShoppingChesswinBgLayer(void);
LOCAL void RefreshShoppingChesswinFgLayer(MMI_WIN_ID_T win_id);
LOCAL void ShoppingChesswinInit(MMI_WIN_ID_T win_id);
LOCAL void HandleShoppingChessTpDownMSG(MMI_WIN_ID_T win_id, DPARAM param);
LOCAL void HandleShoppingChessTpUpMSG(MMI_WIN_ID_T win_id,DPARAM param);
LOCAL void HandleShoppingChessTpMoveMSG(MMI_WIN_ID_T win_id, DPARAM param,BOOLEAN is_first);
LOCAL void ShoppingChesswinAppendLayer(GUI_LCD_DEV_INFO *layer,UILAYER_LEVEL_E layer_level);
LOCAL void HandleShoppingChesswinTimerMsg(MMI_WIN_ID_T win_id,DPARAM param);
LOCAL MMI_IMAGE_ID_T ShoppingChesswinGetImgId(BYTE *m_ChessBoard);
LOCAL MMI_IMAGE_ID_T GetImageID(int index);
LOCAL BOOLEAN ShoppingChessIsValidMove(SHOPPING_CHESS_INFO_T *chessman,int nFromX, int nFromY, int nToX, int nToY);
LOCAL void ShoppingChessDisplayInfo(MMI_TEXT_ID_T text_id);
LOCAL void ShoppingChessSearchAGoodMove(BYTE position[10][9]);
LOCAL int ShoppingChessNegamaxEngine(int depth);
LOCAL int ShoppingChessCreatePossibleMove(BYTE position[10][9], int nPly, int nSide);
LOCAL int ShoppingChessAddToMoveList(int nFromX, int nFromY, int nToX, int nToY,int nPly);
LOCAL void ShoppingChessGen_KingMove(BYTE position[10][9], int i, int j, int nPly);
LOCAL void ShoppingChessGen_RBishopMove(BYTE position[10][9], int i, int j, int nPly);
LOCAL void ShoppingChessGen_BBishopMove(BYTE position[10][9], int i, int j, int nPly);
LOCAL void ShoppingChessGen_ElephantMove(BYTE position[10][9], int i, int j, int nPly);
LOCAL void ShoppingChessGen_HorseMove(BYTE position[10][9], int i, int j, int nPly);
LOCAL void ShoppingChessGen_RPawnMove(BYTE position[10][9], int i, int j, int nPly);
LOCAL void ShoppingChessGen_BPawnMove(BYTE position[10][9], int i, int j, int nPly);
LOCAL void ShoppingChessGen_CarMove(BYTE position[10][9], int i, int j, int nPly);
LOCAL void ShoppingChessGen_CanonMove(BYTE position[10][9], int i, int j, int nPly);
LOCAL BYTE ShoppingChessMakeMove(SHOPPING_CHESS_MOVE* move);
LOCAL void ShoppingChessUnMakeMove(SHOPPING_CHESS_MOVE* move,BYTE nChessID);
LOCAL int ShoppingChessIsGameOver(BYTE position[10][9], int nDepth);
LOCAL void ShoppingChessEveluationInit(void);
LOCAL int ShoppingChessEveluate(BYTE position[10][9], BOOL bIsRedTurn);
LOCAL int ShoppingChessGetRelatePiece(BYTE position[10][9], int j, int i);
LOCAL BOOLEAN ShoppingChessCanTouch(BYTE position[10][9], int nFromX, int nFromY, int nToX, int nToY);
LOCAL void ShoppingChessAddPoint(int x, int y);
LOCAL int ShoppingChessGetBingValue(int x, int y, BYTE CurSituation[][9]);
LOCAL int ShoppingChessWhoIsWin(BYTE position[10][9]);
//mmishopping_chess_position.h
#ifdef __cplusplus
extern "C"
{
#endif
#define MMI_SHOPPING_CHESS_WH 32
#define MMI_SHOPPING_CHESS_WHM 31
#define MMI_SHOPPING_CHESS_X0 15 //31
#define MMI_SHOPPING_CHESS_X1 (MMI_SHOPPING_CHESS_X0 + MMI_SHOPPING_CHESS_WH)
#define MMI_SHOPPING_CHESS_X2 (MMI_SHOPPING_CHESS_X1 + MMI_SHOPPING_CHESS_WH)
#define MMI_SHOPPING_CHESS_X3 (MMI_SHOPPING_CHESS_X2 + MMI_SHOPPING_CHESS_WH)
#define MMI_SHOPPING_CHESS_X4 (MMI_SHOPPING_CHESS_X3 + MMI_SHOPPING_CHESS_WH)
#define MMI_SHOPPING_CHESS_X5 (MMI_SHOPPING_CHESS_X4 + MMI_SHOPPING_CHESS_WH)
#define MMI_SHOPPING_CHESS_X6 (MMI_SHOPPING_CHESS_X5 + MMI_SHOPPING_CHESS_WH)
#define MMI_SHOPPING_CHESS_X7 (MMI_SHOPPING_CHESS_X6 + MMI_SHOPPING_CHESS_WH)
#define MMI_SHOPPING_CHESS_X8 (MMI_SHOPPING_CHESS_X7 + MMI_SHOPPING_CHESS_WH)
#define MMI_SHOPPING_CHESS_Y0 15 //31
#define MMI_SHOPPING_CHESS_Y1 (MMI_SHOPPING_CHESS_Y0 + MMI_SHOPPING_CHESS_WH)
#define MMI_SHOPPING_CHESS_Y2 (MMI_SHOPPING_CHESS_Y1 + MMI_SHOPPING_CHESS_WH)
#define MMI_SHOPPING_CHESS_Y3 (MMI_SHOPPING_CHESS_Y2 + MMI_SHOPPING_CHESS_WH)
#define MMI_SHOPPING_CHESS_Y4 (MMI_SHOPPING_CHESS_Y3 + MMI_SHOPPING_CHESS_WH)
#define MMI_SHOPPING_CHESS_Y5 (MMI_SHOPPING_CHESS_Y4 + MMI_SHOPPING_CHESS_WH)
#define MMI_SHOPPING_CHESS_Y6 (MMI_SHOPPING_CHESS_Y5 + MMI_SHOPPING_CHESS_WH)
#define MMI_SHOPPING_CHESS_Y7 (MMI_SHOPPING_CHESS_Y6 + MMI_SHOPPING_CHESS_WH)
#define MMI_SHOPPING_CHESS_Y8 (MMI_SHOPPING_CHESS_Y7 + MMI_SHOPPING_CHESS_WH)
#define MMI_SHOPPING_CHESS_Y9 (MMI_SHOPPING_CHESS_Y8 + MMI_SHOPPING_CHESS_WH)
#ifdef __cplusplus
}
#endif
//mmishopping_chess_text.h
#include "sci_types.h"
#include "mmi_module.h"
#ifdef __cplusplus
extern "C" {
#endif
#define MACRO_MDU_TYPE MACRO_MDU_TEXT
#include "macro_mdu_def.h"
typedef enum SHOPPING_CHESS_MMI_TEXT_ID_E
{
SHOPPING_CHESS_TXT_ID_START = (MMI_MODULE_SHOPPING_CHESS << 16 ) | MMI_SYS_RES_FLAG,
#include "shopping_chess_mdu_def.h"
SHOPPING_CHESS_TXT_MAX_ID
} SHOPPING_CHESS_MMI_TEXT_ID_E;
#undef MACRO_MDU_TYPE
#ifdef __cplusplus
}
#endif
//shopping_chess_mdu_def.h
RES_ADD_STRING(TXT_MAN_GO_NOW, "It's you turn now!")
RES_ADD_IMG(IMAGE_SHOPPING_CHESS_BLACK_B,"\\MMI_RES_##\\IMAG\\IMAGE_SHOPPING_CHESS_BLACK_B.png",IMG_CMP_DEFAULT, 0)
RES_ADD_IMG(IMAGE_SHOPPING_CHESS_BLACK_J,"\\MMI_RES_##\\IMAG\\IMAGE_SHOPPING_CHESS_BLACK_J.png",IMG_CMP_DEFAULT, 0)
RES_ADD_IMG(IMAGE_SHOPPING_CHESS_BLACK_K,"\\MMI_RES_##\\IMAG\\IMAGE_SHOPPING_CHESS_BLACK_K.png",IMG_CMP_DEFAULT, 0)
RES_ADD_IMG(IMAGE_SHOPPING_CHESS_BLACK_M,"\\MMI_RES_##\\IMAG\\IMAGE_SHOPPING_CHESS_BLACK_M.png",IMG_CMP_DEFAULT, 0)
RES_ADD_IMG(IMAGE_SHOPPING_CHESS_BLACK_P,"\\MMI_RES_##\\IMAG\\IMAGE_SHOPPING_CHESS_BLACK_P.png",IMG_CMP_DEFAULT, 0)
RES_ADD_IMG(IMAGE_SHOPPING_CHESS_BLACK_S,"\\MMI_RES_##\\IMAG\\IMAGE_SHOPPING_CHESS_BLACK_S.png",IMG_CMP_DEFAULT, 0)
RES_ADD_IMG(IMAGE_SHOPPING_CHESS_BLACK_X,"\\MMI_RES_##\\IMAG\\IMAGE_SHOPPING_CHESS_BLACK_X.png",IMG_CMP_DEFAULT, 0)
RES_ADD_IMG(IMAGE_SHOPPING_CHESS_RED_B,"\\MMI_RES_##\\IMAG\\IMAGE_SHOPPING_CHESS_RED_B.png",IMG_CMP_DEFAULT, 0)
RES_ADD_IMG(IMAGE_SHOPPING_CHESS_RED_J,"\\MMI_RES_##\\IMAG\\IMAGE_SHOPPING_CHESS_RED_J.png",IMG_CMP_DEFAULT, 0)
RES_ADD_IMG(IMAGE_SHOPPING_CHESS_RED_K,"\\MMI_RES_##\\IMAG\\IMAGE_SHOPPING_CHESS_RED_K.png",IMG_CMP_DEFAULT, 0)
RES_ADD_IMG(IMAGE_SHOPPING_CHESS_RED_M,"\\MMI_RES_##\\IMAG\\IMAGE_SHOPPING_CHESS_RED_M.png",IMG_CMP_DEFAULT, 0)
RES_ADD_IMG(IMAGE_SHOPPING_CHESS_RED_P,"\\MMI_RES_##\\IMAG\\IMAGE_SHOPPING_CHESS_RED_P.png",IMG_CMP_DEFAULT, 0)
RES_ADD_IMG(IMAGE_SHOPPING_CHESS_RED_S,"\\MMI_RES_##\\IMAG\\IMAGE_SHOPPING_CHESS_RED_S.png",IMG_CMP_DEFAULT, 0)
RES_ADD_IMG(IMAGE_SHOPPING_CHESS_RED_X,"\\MMI_RES_##\\IMAG\\IMAGE_SHOPPING_CHESS_RED_X.png",IMG_CMP_DEFAULT, 0)
RES_ADD_IMG(IMAGE_SHOPPING_CHESS_SELECT,"\\MMI_RES_##\\IMAG\\IMAGE_SHOPPING_CHESS_SELECT.png",IMG_CMP_DEFAULT, 0)
RES_ADD_IMG(IMAGE_SHOPPING_CHESS_SELECT1,"\\MMI_RES_##\\IMAG\\IMAGE_SHOPPING_CHESS_SELECT1.png",IMG_CMP_DEFAULT, 0)