//mmishopping_chess_export.h#include "mmishopping_chess_image.h"PUBLIC BOOLEAN MMISHOPPING_OpenChessWin(void);
//mmishopping_chess_id.defWIN_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 __cplusplusextern "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 __cplusplusextern "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.hRES_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)