?? chessman.h
字號:
#ifndef CHESSMAN_H_
#define CHESSMAN_H_
#include "resource.h"
#include "stdafx.h"
#include "paper.h"
//#include "chessmap.h"
enum {A_LEFT_SOLDIER=1,A_MID_LEFT_SOLDIER,A_MID_SOLDIER,A_MID_RIGHT_SOLDIER,A_RIGHT_SOLDIER,A_LEFT_CANNON,A_RIGHT_CANNON,A_LEFT_CAR,A_RIGHT_CAR,A_LEFT_HORSE,A_RIGHT_HORSE,A_LEFT_XIANG,A_RIGHT_XIANG,A_LEFT_GUARD,A_RIGHT_GUARD,A_HEAD,B_LEFT_SOLIDER,B_MID_LEFT_SOLIDER,B_MID_SOLDIER,B_MID_RIGHT_SOLDIER,B_RIGHT_SOLDIER,B_LEFT_CANNON,B_RIGHT_CANNON,B_LEFT_CAR,B_RIGHT_CAR,B_LEFT_HORSE,B_RIGHT_HORSE,B_LEFT_XIANG,B_RIGHT_XIANG,B_LEFT_GUARD,B_RIGHT_GUARD,B_HEAD};
/////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
class CChessMan
{
public:
CChessMan(){};
void Create(UINT roleID,UINT nID,POINT initPos,int eachX,int eachY,int chessPaperBeginX,int chessPaperBeginY);
void Create(UINT roleID,UINT nID,int iIndex,int jIndex,int eachX,int eachY,int chessPaperBeginX,int chessPaperBeginY);
void ResetPos(POINT newPos);//重新設置棋子的物理位置
void ResetPos(int ni,int nj);//重新設置棋子的邏輯位置
void DPTOLP();//物理位置向邏輯位置的轉換
void LPTODP();//;邏輯位置向物理位置的轉換
void Draw(CDC *pDC);//顯示棋子
void ShowIAmHere(CDC *pDC);
bool IfThisPosMe(POINT thisPos);////判斷鼠標點擊的當前位置是不是棋子所在位置
//virtual bool NextStep(POINT nextPos,CDC *pDC,CChessMap*chessMap)=0;//下一步的發展情況
void InvalidateMyRect(CDC *pDC);//重新繪制自己的區域,是小范圍的 防止發生閃爍的情況
void InvalidateMyRect(CDC *pDC,UINT uRow,UINT uCol);
//void GetRect(CRect &rect);//得到位圖的rect
bool NextStep(CChessMan*nextChessMan,int nNewRow,int nNewCol);//下一步的發展情況
virtual bool IfNextPosLegal(POINT nextPos)=0;
public:
static int m_stcChosenID;
UINT m_uRoleID;//棋子的角色
UINT m_BTIDD;//位圖ID
POINT m_ptNowPos;//棋子位置,指棋子中心點在棋盤上的位置
UINT uRow,uCol;//指棋子的邏輯位置
int m_nEachX,m_nEachY;//將棋子的物理坐標位置轉化成邏輯坐標位置的單位
int m_nChessPaperBeginX,m_nChessPaperBeginY;//記錄棋紙的左上角的位置
CBitmap m_btMapRole;//位圖
BITMAP m_btBM;//記錄位圖的長寬
};
/////下面是兵
class CSoldier:public CChessMan
{
public:
CSoldier(){};
void Create(UINT roleID,UINT nID,POINT initPos,int eachX,int eachY,int chessPaperBeginX,int chessPaperBeginY){CChessMan::Create(roleID,nID, initPos, eachX, eachY, chessPaperBeginX, chessPaperBeginY);};
void Create(UINT roleID,UINT nID,int iIndex,int jIndex,int eachX,int eachY,int chessPaperBeginX,int chessPaperBeginY){CChessMan::Create(roleID,nID, iIndex, jIndex, eachX, eachY, chessPaperBeginX, chessPaperBeginY);};
//bool NextStep(POINT nextPos,CDC *pDC,CChessMap*chessMap);
//bool NextStep(CChessMan*nextChessMan,int nNewRow,int nNewCol);
bool IfNextPosLegal(POINT nextPos);
};
/////下面是馬
class CHorse:public CChessMan
{
public:
CHorse(){};
void Create(UINT roleID,UINT nID,POINT initPos,int eachX,int eachY,int chessPaperBeginX,int chessPaperBeginY){CChessMan::Create(roleID,nID, initPos, eachX, eachY, chessPaperBeginX, chessPaperBeginY);};
void Create(UINT roleID,UINT nID,int iIndex,int jIndex,int eachX,int eachY,int chessPaperBeginX,int chessPaperBeginY){CChessMan::Create(roleID,nID, iIndex, jIndex, eachX, eachY, chessPaperBeginX, chessPaperBeginY);};
bool IfNextPosLegal(POINT nextPos);
};
////下面是炮
class CCannon:public CChessMan
{
public:
CCannon(){};
void Create(UINT roleID,UINT nID,POINT initPos,int eachX,int eachY,int chessPaperBeginX,int chessPaperBeginY){CChessMan::Create(roleID,nID, initPos, eachX, eachY, chessPaperBeginX, chessPaperBeginY);};
void Create(UINT roleID,UINT nID,int iIndex,int jIndex,int eachX,int eachY,int chessPaperBeginX,int chessPaperBeginY){CChessMan::Create(roleID,nID, iIndex, jIndex, eachX, eachY, chessPaperBeginX, chessPaperBeginY);};
bool IfNextPosLegal(POINT nextPos);
};
///下面是將
class CHead:public CChessMan
{
public:
CHead(){};
void Create(UINT roleID,UINT nID,POINT initPos,int eachX,int eachY,int chessPaperBeginX,int chessPaperBeginY){CChessMan::Create(roleID,nID, initPos, eachX, eachY, chessPaperBeginX, chessPaperBeginY);};
void Create(UINT roleID,UINT nID,int iIndex,int jIndex,int eachX,int eachY,int chessPaperBeginX,int chessPaperBeginY){CChessMan::Create(roleID,nID, iIndex, jIndex, eachX, eachY, chessPaperBeginX, chessPaperBeginY);};
bool IfNextPosLegal(POINT nextPos);
};
////下面是車
class CVehicle:public CChessMan
{
public:
CVehicle(){}
void Create(UINT roleID,UINT nID,POINT CenterPos,int eachX,int eachY,int ChessPaperBeginX,int ChessPaperBeginY){CChessMan::Create(roleID,nID,CenterPos,eachX,eachY,ChessPaperBeginX,ChessPaperBeginY);};
void Create (UINT roleID,UINT nID,int iIndex,int jIndex,int eachX,int eachY,int ChessPaperBeginX,int ChessPaperBeginY){CChessMan::Create(roleID,nID,iIndex,jIndex,eachX,eachY,ChessPaperBeginX,ChessPaperBeginY);};
bool IfNextPosLegal(POINT nextPos); //判斷下一步的目標地是否是有效位置
};
class COfficial:public CChessMan
{
public:
COfficial(){}
void Create(UINT roleID,UINT nID,POINT CenterPos,int eachX,int eachY,int ChessPaperBeginX,int ChessPaperBeginY){CChessMan::Create(roleID,nID,CenterPos,eachX,eachY,ChessPaperBeginX,ChessPaperBeginY);};
void Create (UINT roleID,UINT nID,int iIndex,int jIndex,int eachX,int eachY,int ChessPaperBeginX,int ChessPaperBeginY){CChessMan::Create(roleID,nID,iIndex,jIndex,eachX,eachY,ChessPaperBeginX,ChessPaperBeginY);};
bool IfNextPosLegal(POINT nextPos);
};
class CXiang:public CChessMan
{
public:
CXiang(){};
void Create(UINT roleID,UINT nID,POINT initPos,int eachX,int eachY,int chessPaperBeginX,int chessPaperBeginY){CChessMan::Create(roleID,nID, initPos, eachX, eachY, chessPaperBeginX, chessPaperBeginY);};
void Create(UINT roleID,UINT nID,int iIndex,int jIndex,int eachX,int eachY,int chessPaperBeginX,int chessPaperBeginY){CChessMan::Create(roleID,nID, iIndex, jIndex, eachX, eachY, chessPaperBeginX, chessPaperBeginY);};
bool IfNextPosLegal(POINT nextPos);
};
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -