?? wzq.h
字號:
//////////////////////////
//五子棋人工智能,與操作//
//////////////////////////
//于一制作//
//本人初學(xué)vc++兩個月,有很多不足指出,望指出,請給我來信
//YIY@MAIL.WX88.NET
//程序閱讀聲名:
//凡是有/*++(...)++*/處就是可以擴展的地方
//棋局聲明在dim.h中
#if !defined(AFX_WZQ_H__211A6397_25EF_4A1B_8835_A743267879B1__INCLUDED_)
#define AFX_WZQ_H__211A6397_25EF_4A1B_8835_A743267879B1__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif
#include "CDC2.h"
struct wzwin//獲勝
{
int winner;//0 沒有獲勝 1 白 2 黑
int nx1;//五連的坐標(biāo)
int nx2;
int ny1;
int ny2;
};
struct wzsave//下棋記錄
{
bool used;//是否使用
bool color;//顏色
int ix;//坐標(biāo)
int iy;
};
class wzq
{
public:
wzq(CDC2*tqp,CDC2*tqzh,CDC2*tqzb,CDC2*tmask,CDC2*dead,CDC*dc);
wzq();
virtual ~wzq();
void NewGame();//新游戲
//初始化
void DrawQZ(int nx,int ny,bool style);//畫棋子
void SetDc(CDC2*tqp,CDC2*tqzh,CDC2*tqzb,CDC2*tmask,CDC2*dead,CDC*dc);//設(shè)置DC
void draw();//當(dāng)需要重畫時調(diào)用
//繪圖
private:
bool userAd(int nx,int ny);//黑色下子
bool userBd(int nx,int ny);//白色下子
public:
bool downzi(int nx,int ny);//外部調(diào)用此函數(shù)下子
bool bewinner2(bool style,int nx,int ny);//判斷勝敗
//下棋
bool goback();//悔棋
void setback(int nx,int ny,bool style);//記錄
bool getbackble(){return nowd2<=0?false:true;}//是否可以悔棋
//操作
CPoint AiGo(bool color);//人工智能外部控制
//------------------------------AI人工智能內(nèi)部函數(shù)------------------------------////
/**/private: /**/
/**/ void fillin(bool color,bool player,bool type); /**/
/**/ void setqx(int nx ,int ny,bool style,bool player,int st,bool type); /**/
/**/ void setall(); /**/
/**/ void clear(bool style); /**/
/**/ void checkgo(int x,int y,bool color,int nu,int inx,int iny);//預(yù)測函數(shù) /**/
/**/ bool bejs(int nx, int ny); /*++此處添加禁手控制++*/ /**/
/**/ //因為我不熟悉五子棋的規(guī)則,所以沒有設(shè)置禁手 /**/
/**/ bool bj2(int x1,int y1,int x2,int y2,bool style); /**/
/**/ char ntoc(char num,bool type,bool style); /**/
/**/ CPoint getmax(bool color); /**/
/**/ CPoint getbg(bool style); /**/
/**/ int getaitype(); /**/
//AI //請參見"五子棋算法" /**/
///-----------------------------------------------------------------------------////
public:
bool firstgo;//false:人true:機
bool secondgo;//false:人true:機
int nturn;
wzwin twinner;
int AItype;//0低預(yù)測6步 1中預(yù)測10步 2高預(yù)測16步
int Model;//0人->機 1機->人 2對翌
bool backable ;//是否悔棋 0=N 1=Y
protected:
private:
CDC2*qp;//棋盤dc
CDC2*qzh;//黑子dc
CDC2*qzb;//白子dc
CDC2*mask;//屏蔽dc
CDC2*dead;//紅子
CDC*dc;//窗口dc
unsigned char user[15][15][4];//儲存棋局
unsigned char pc[15][15][4];//儲存棋局
char map[15][15];//儲存棋盤地圖
unsigned char nicest2[15][15];
char trygo[15][15];
bool dcseted;
int nowd2;
int aitype2;
wzsave wzs[225];
};
#endif // !defined(AFX_WZQ_H__211A6397_25EF_4A1B_8835_A743267879B1__INCLUDED_)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -