www.pudn.com > Chesssource.rar > Chess.h


#if !defined(_CHESS_H_) 
#define _CHESS_H_ 
 
enum APP_STATE 
{ 
	APPSTATE_SELF = 0, 
	APPSTATE_AI, 
	APPSTATE_GAMEOVER, 
	APPSTATE_ANIMATION, 
	APPSTATE_GAMEMENU 
}; 
 
 
 
class cChess 
{ 
public: 
	cGraphics		m_Graphics; 
 
	cSound			m_Sound; 
	cSoundChannel	m_SoundChannel; 
	cMusicChannel	m_MusicChannel; 
	cSoundData		m_SoundData; 
 
	cInput			m_Input; 
	cInputDevice	m_Mouse; 
	cInputDevice	m_Keyboard; 
 
	cFont			m_Font; 
	cFont			m_StateFont; 
 
	cCamera			m_Camera; 
	cLight			m_Light; 
	cLight			m_Light2; 
	cMesh			m_ChessMeshes[7]; 
	cMesh			m_PickMeshes[2]; 
	cObject			m_PickGreenObjects[30]; 
	cObject			m_PickRedObjects[8]; 
	cObject			m_ChessObjects[33]; 
 
	cTexture		m_Buttons[4]; 
 
	// 菜单变量 
	cVertexBuffer  m_MenuVB; 
	cTexture       m_MenuTexture; 
	cTexture       m_MenuSelect; 
	cTexture	   m_MenuButtons; 
	cCamera        m_MenuCam; 
	cTransform	   m_MenuPos; 
	cFont          m_MenuFont; 
 
	float			m_xPos, m_zPos; 
	long			m_xTarget, m_zTarget;	// 棋子要移动到的目标坐标 
	long			m_xSource, m_zSource;	// 棋子要移动前的坐标 
	float			m_CalcuateXMove, m_CalcuateZMove;	// 计算移到动画时所用的坐标 
	float			m_FPS; 
	int				m_Pick; 
	BOOL			m_PickGreenDisplay[30]; 
	BOOL			m_PickRedDisplay[8]; 
	int				m_CalcuateMoveChessman; 
	BOOL			m_IsPick; 
	int				m_AppState; 
 
	BOOL			m_IsFirstMove[33]; 
 
	BOOL			m_bEndGame; 
	BOOL			m_bMyWin; 
	int				m_Side; 
 
public: 
	cChess(); 
	~cChess(); 
 
	BOOL	Init(HWND hWnd, HINSTANCE hInstance); 
	BOOL	Shutdown(); 
	BOOL	Frame(); 
 
	BOOL	RenderFrame( float Elapsed ); 
	BOOL	RenderAnimationFrame( float Elapsed ); 
	BOOL	RenderThinkFrame( float Elapsed ); 
	BOOL	GameOver( float Elapsed ); 
	BOOL	GameMenu(); 
 
	void	OriginalPosition(); 
	BOOL	PickChessman(); 
	BOOL	PickMove(); 
	BOOL	CheckMove(); 
 
    BOOL	PlaySound(long Num); 
    BOOL	PlayMusic(long Num); 
    BOOL	StopMusic(); 
	BOOL	CalculateMove( float Elapsed ); 
	BOOL	GetMouseHitMesh(long Num, DWORD *Face ); 
	void	CalcuateSourceTarget( float xMove, float zMove ); 
	BOOL	Think( int &resultman, POINT &resultpoint ); 
	BOOL	EnumList(int map[8][8],POINT manposition[33],BOOL tisfirstmove[33], int &tside,int *chessman,POINT *move,int &count); 
	int		Search(int map[8][8],POINT manposition[33],BOOL tisfirstmove[33],int &tside,int man, POINT point,int upmax,int depth); 
	int		Envalue(int map[8][8],POINT manposition[33],BOOL tisfirstmove[33],int &tside); 
	void	QuickSort(int A[],int chessman[],POINT targetpoint[],int low,int high); 
	void	ContactV(int map[8][8],POINT manposition[33],BOOL tisfirstmove[33],int &tside,int activity[33],int contact[33][33]); 
}; 
 
#endif