FIVECHESSDLG.H
上传用户:gt3658
上传日期:2022-07-09
资源大小:97k
文件大小:5k
源码类别:

棋牌游戏

开发平台:

Visual C++

  1. // FiveChessDlg.h : header file
  2. //
  3. #if !defined(AFX_FIVECHESSDLG_H__F888AC17_7D22_4BB3_820D_75A90E080BE3__INCLUDED_)
  4. #define AFX_FIVECHESSDLG_H__F888AC17_7D22_4BB3_820D_75A90E080BE3__INCLUDED_
  5. #if _MSC_VER > 1000
  6. #pragma once
  7. #endif // _MSC_VER > 1000
  8. #define WM_LIBEN WM_USER + 31
  9. #include <Afxtempl.h> 
  10. #include "WinXPButtonST.h"
  11. ////////////////////////////////////////////////////////////////////
  12. //  Author: 楚天追梦
  13. //  Date: 2004.6.30
  14. //  Description: 五子棋人机对战的简单实现
  15. //  Email: lcd5@163.com
  16. //   评分标准:
  17. //             成5:                  100000
  18. //             活4、双死4、死4活3:   10000
  19. //             双活3、活3双活2:      5000
  20. //             活3死3:               1000
  21. //             死4:                  500
  22. //             单活3:                200
  23. //             双活2:                100
  24. //             双死3:                50
  25. //             单活2:                10
  26. //             单死3:                 5
  27. ////////////////////////////////////////////////////////////////////
  28. class Step
  29. {
  30. public:
  31. Step():x(0),y(0),side(0),deep(0)
  32. {
  33. }
  34. //x,y表示在数组中的位置
  35. int x; 
  36. int y;
  37. //side表示下子方
  38. int side; 
  39. int deep ;
  40. };
  41. class GameStatus
  42. {
  43. public:
  44. GameStatus():deep(0),score(0),is_machine(false)
  45. {
  46. }
  47. int deep;
  48. int score;
  49. bool is_machine;
  50. Step st;//当前走步
  51. int  fivearray[20][20];
  52. };
  53. /////////////////////////////////////////////////////////////////////////////
  54. // CFiveChessDlg dialog
  55. class CFiveChessDlg : public CDialog
  56. {
  57. // Construction
  58. public:
  59. CFiveChessDlg(CWnd* pParent = NULL); // standard constructor
  60. // Dialog Data
  61. //{{AFX_DATA(CFiveChessDlg)
  62. enum { IDD = IDD_FIVECHESS_DIALOG };
  63. CWinXPButtonST m_bt_newbegin;
  64. CWinXPButtonST m_bt_regrete;
  65. CWinXPButtonST m_bt_begin;
  66. CComboBox m_combox;
  67. CButton m_mainboard;
  68. //}}AFX_DATA
  69. // ClassWizard generated virtual function overrides
  70. //{{AFX_VIRTUAL(CFiveChessDlg)
  71. public:
  72. virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
  73. protected:
  74. virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
  75. virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
  76. virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
  77. //}}AFX_VIRTUAL
  78. private:
  79. //画网格
  80. void DrawGrid();
  81. //画棋子
  82. void DrawChess(CPoint point);
  83. void DrawChess(int x,int y,bool is_current);
  84. void DrawAllChess();
  85. int step_x;
  86. int step_y;
  87. //当前走步
  88. Step m_currentstep;
  89. //上个走步
  90. Step oldstep;
  91. bool flag;
  92. bool is_myturn;
  93. bool closeflag;
  94. //存储棋子布局数组
  95. int  Fivearray[20][20];
  96.     //走步序列
  97. CList<Step,Step&>StepList;
  98. NOTIFYICONDATA tnd;
  99. //判断是否已获胜
  100. bool IsSuccess();
  101.     //从左到右相同棋子数
  102. int LeftRight(int i, int j,int side);
  103. //从上到下相同棋子数
  104. int UpDown(int i, int j,int side);
  105. //从左上到右下相同的棋子数
  106. int LupToRdown(int i, int j,int side);
  107. //从右上到左下的相同棋子数
  108. int RuptoLdown(int i, int j,int side);
  109. //搜索左到右棋子的状态
  110. int LeftToRight_Status(int i, int j ,int arrray[][20]);
  111. //搜索出上到下的状态
  112. int UpToDown_Status(int i, int j ,int arrray[][20]);
  113. //搜索出左上到右下的状态
  114. int LeftUpToRightDown_Status(int i, int j ,int arrray[][20]);
  115. //搜索出左下到右上的状态
  116. int LeftDownToRightUp_Status(int i, int j ,int array[][20]);
  117. //返回当前状态的分数
  118. int SearchValue(int array[][20],Step &st,bool machine);
  119. //返回当前棋盘的分数
  120. void GetCurrentScore( GameStatus &board_situation);
  121. //返回对仅当前棋盘分析得出的最好走步
  122. int  SearchMaxValue(Step &st,int array[][20]);
  123. //递归搜索最好走步
  124. int DeepSearch(GameStatus ts,Step &st,bool machine,int value);
  125. // Implementation
  126. protected:
  127. HICON m_hIcon;
  128. // Generated message map functions
  129. //{{AFX_MSG(CFiveChessDlg)
  130. virtual BOOL OnInitDialog();
  131. afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
  132. afx_msg void OnPaint();
  133. afx_msg HCURSOR OnQueryDragIcon();
  134. afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
  135. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  136. afx_msg void OnBegin();
  137. afx_msg void OnRegret();
  138. afx_msg void OnNewBegin();
  139. afx_msg void OnTimer(UINT nIDEvent);
  140. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  141. afx_msg void OnDestroy();
  142. afx_msg LRESULT OnLiben(WPARAM wParam,LPARAM lParam);
  143. afx_msg void OnClose();
  144. afx_msg void OnMenucancel();
  145. afx_msg void OnMenuOPen();
  146. //}}AFX_MSG
  147. DECLARE_MESSAGE_MAP()
  148. };
  149. //{{AFX_INSERT_LOCATION}}
  150. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  151. #endif // !defined(AFX_FIVECHESSDLG_H__F888AC17_7D22_4BB3_820D_75A90E080BE3__INCLUDED_)