wzq.h
上传用户:sjsmail
上传日期:2009-08-28
资源大小:260k
文件大小:3k
源码类别:

棋牌游戏

开发平台:

Visual C++

  1. //////////////////////////
  2. //五子棋人工智能,与操作//
  3. //////////////////////////
  4. //于一制作//
  5. //本人初学vc++两个月,有很多不足指出,望指出,请给我来信
  6. //YIY@MAIL.WX88.NET
  7. //程序阅读声名:
  8. //凡是有/*++(...)++*/处就是可以扩展的地方
  9. //棋局声明在dim.h中
  10. #if !defined(AFX_WZQ_H__211A6397_25EF_4A1B_8835_A743267879B1__INCLUDED_)
  11. #define AFX_WZQ_H__211A6397_25EF_4A1B_8835_A743267879B1__INCLUDED_
  12. #if _MSC_VER > 1000
  13. #pragma once
  14. #endif 
  15. #include "CDC2.h"
  16. struct wzwin//获胜
  17. {
  18. int winner;//0 没有获胜 1 白 2 黑
  19. int nx1;//五连的坐标
  20. int nx2;
  21. int ny1;
  22. int ny2;
  23. };
  24. struct wzsave//下棋记录
  25. {
  26. bool used;//是否使用
  27. bool color;//颜色
  28. int ix;//坐标
  29. int iy;
  30. };
  31. class wzq  
  32. {
  33. public:
  34. wzq(CDC2*tqp,CDC2*tqzh,CDC2*tqzb,CDC2*tmask,CDC2*dead,CDC*dc);
  35. wzq();
  36. virtual ~wzq();
  37. void NewGame();//新游戏
  38. //初始化
  39. void DrawQZ(int nx,int ny,bool style);//画棋子
  40. void SetDc(CDC2*tqp,CDC2*tqzh,CDC2*tqzb,CDC2*tmask,CDC2*dead,CDC*dc);//设置DC
  41. void draw();//当需要重画时调用
  42. //绘图
  43. private:
  44. bool userAd(int nx,int ny);//黑色下子
  45. bool userBd(int nx,int ny);//白色下子
  46. public:
  47. bool downzi(int nx,int ny);//外部调用此函数下子
  48. bool bewinner2(bool style,int nx,int ny);//判断胜败
  49. //下棋
  50. bool goback();//悔棋
  51. void setback(int nx,int ny,bool style);//记录
  52. bool getbackble(){return nowd2<=0?false:true;}//是否可以悔棋
  53. //操作
  54. CPoint AiGo(bool color);//人工智能外部控制
  55. //------------------------------AI人工智能内部函数------------------------------////
  56. /**/private: /**/
  57. /**/ void fillin(bool color,bool player,bool type); /**/
  58. /**/ void setqx(int nx ,int ny,bool style,bool player,int st,bool type); /**/
  59. /**/ void setall(); /**/
  60. /**/ void clear(bool style); /**/
  61. /**/ void checkgo(int x,int y,bool color,int nu,int inx,int iny);//预测函数 /**/
  62. /**/ bool bejs(int nx, int ny); /*++此处添加禁手控制++*/ /**/
  63. /**/ //因为我不熟悉五子棋的规则,所以没有设置禁手 /**/
  64. /**/ bool bj2(int x1,int y1,int x2,int y2,bool style); /**/
  65. /**/ char ntoc(char num,bool type,bool style); /**/
  66. /**/ CPoint getmax(bool color); /**/
  67. /**/ CPoint getbg(bool style); /**/
  68. /**/ int getaitype(); /**/
  69. //AI //请参见"五子棋算法" /**/
  70. ///-----------------------------------------------------------------------------////
  71. public:
  72. bool firstgo;//false:人true:机
  73. bool secondgo;//false:人true:机
  74. int nturn;
  75. wzwin twinner;
  76. int AItype;//0低预测6步 1中预测10步 2高预测16步
  77. int Model;//0人->机 1机->人 2对翌
  78. bool backable ;//是否悔棋 0=N 1=Y
  79. protected:
  80. private:
  81. CDC2*qp;//棋盘dc
  82. CDC2*qzh;//黑子dc
  83. CDC2*qzb;//白子dc
  84. CDC2*mask;//屏蔽dc
  85. CDC2*dead;//红子
  86. CDC*dc;//窗口dc
  87. unsigned char user[15][15][4];//储存棋局
  88. unsigned char pc[15][15][4];//储存棋局
  89. char map[15][15];//储存棋盘地图
  90. unsigned char nicest2[15][15];
  91. char trygo[15][15];
  92. bool dcseted;
  93. int nowd2;
  94. int aitype2;
  95. wzsave wzs[225];
  96. };
  97. #endif // !defined(AFX_WZQ_H__211A6397_25EF_4A1B_8835_A743267879B1__INCLUDED_)