分享
 
 
 

VC++游戏开发:五子棋

王朝vc·作者佚名  2006-01-17
窄屏简体版  字體: |||超大  

VC++游戏开发:五子棋

作者:吕鸿

下载源代码

一、程序运行时情况

二、本程序里的计算机具有自动判断的功能,能根据当前棋子的布局情况采用相关的走子方式。为了避免在走子时候出现屏幕闪烁,采用双缓冲进行绘图输出,以下是软件实现的部分代码:

#include "stdafx.h"

在CFiveChessView类中定义了如下的数据结构:

enum {MAX_X = 18, MAX_Y=18, MIN_X =1, MIN_Y =1};

// NONE :空位置:BLACK :黑 WHITE 白

enum{NONE = 0, BLACK = 1, WHITE = 2};

// ATTACK :进攻:DEFEND :防守

enum{ATTACK = 0, DEFEND = 1};

// MAN_FIRST :黑先:COMPUTER_FIRST :白先

enum{MAN_FIRST = 0, COMPUTER_FIRST = 1};

// BOTH_PEASE :和:BLACK_WIN :黑胜 WHITE_WIN: 白胜

enum{BOTH_PEASE=0, BLACK_WIN = 1, WHITE_WIN = 2};

// L_TO_R:左到右 T_TO_B :上到下: LB_TO_RT :左下到右上,LT_TO_RB左上到右下

enum{L_TO_R=0, T_TO_B = 1, LB_TO_RT = 2 , LT_TO_RB = 3};

CChess fiveChess;

int m_nLastBlackPos_x;

int m_nLastBlackPos_y;

int m_nCurrentWhitePos_x;

int m_nCurrentWhitePos_y;

在CMainFrame类中PreCreateWindow(CREATESTRUCT& cs)增加如下代码设置固定窗口大小:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)

{

if( !CFrameWnd::PreCreateWindow(cs) )

return FALSE;

cs.style = WS_OVERLAPPED | WS_SYSMENU | WS_MINIMIZEBOX;// | WS_THICKFRAME;

cs.style &= ~WS_BORDER;

cs.dwExStyle &= ~WS_EX_CLIENTEDGE;

int iWinBorderX = GetSystemMetrics(SM_CXBORDER);

int iWinBorderY = GetSystemMetrics(SM_CYBORDER);

int iCaptionY = GetSystemMetrics(SM_CYCAPTION);

int iMenuY = GetSystemMetrics(SM_CYMENU);

int iStausY = GetSystemMetrics(SM_CYMENU);

cs.cx = 510 + iWinBorderX ;

cs.cy = 530 + iWinBorderY + iCaptionY + iStausY + iMenuY;

return TRUE;

}

本软件还定义了CChess类,实现了走棋的数据结构和相关算法:

class CChess : public CObject

{

public:

enum {MAX_X = 18, MAX_Y=18, MIN_X =1, MIN_Y =1};

// NONE :空位置:BLACK :黑 WHITE 白

enum{NONE = 0, BLACK = 1, WHITE = 2};

// ATTACK :进攻:DEFEND :防守

enum{ATTACK = 0, DEFEND = 1};

// MAN_FIRST :人先:COMPUTER_FIRST:计算机先

enum{MAN_FIRST = 0, COMPUTER_FIRST = 1};

// BOTH_PEASE :和:BLACK_WIN :黑胜 WHITE_WIN: 白胜

enum{BOTH_PEASE=0, BLACK_WIN = 1, WHITE_WIN = 2};

// L_TO_R:左到右 T_TO_B :上到下: LB_TO_RT :左下到右上,LT_TO_RB左上到右下

// enum{L_TO_R=0, T_TO_B = 1, LB_TO_RT = 2 , LT_TO_RB = 3};

//const static int

public:

static int Start_X;

static int Start_Y;

static int Width_X;

static int Height_Y;

CObList pList;

CList <CNode,CNode&> List; // 热解二数据链表

public:

void Draw(CDC *pDC,int x, int y, int nState);

void Init();

inline void SetChessState (int x,

int y,

int nState)

{

if (x>=0 && x <MAX_X && y>=0 && y <MAX_Y )

m_chessman[x][y] = nState;

}

inline int GetChessState (int x, int y ){ return m_chessman[x][y];}

inline void SetWhoFirst(int nWhoFirst) {m_nWhoFirst = nWhoFirst;}

inline int GetWhoFirst() { return m_nWhoFirst;}

inline void SetGoStyle(int nGoStyle) {m_nGoStyle = nGoStyle;}

inline int GetGoStyle() { return m_nGoStyle;}

inline void SetResult(int nResult) {m_nResult = nResult;}

inline int GetResult() { return m_nResult;}

public:

BOOL GetSixComputerPos(int &col, int &row);

BOOL ScanTwo(int side);

int WhoWin(int state);

BOOL ScanLTtoRbFive(int side);

BOOL ScanLbtoRtFive(int side);

BOOL ScanTtoBFive(int side);

BOOL ScanLtoRFive(int side);

void ScanLTtoRbSix(int side);

void ScanLbtoRtSix(int side);

void ScanTtoBSix(int side);

void ScanLtoRSix(int side);

int m_nWhoFirst ; //谁先出

int m_nGoStyle ; //走棋方式;

int m_nResult ; //胜负结果

int m_chessman[MAX_X][MAX_Y]; //保存棋子状态

int m_nFNonePos_x; //空位置 x坐标

int m_nFNonePos_y; //空位置 y坐标

int m_nSNonePos_x; //空位置 x坐标

int m_nSNonePos_y; //空位置 y坐标

int m_nTNonePos_x; //空位置 x坐标

int m_nTNonePos_y; //空位置 y坐标

CChess();

virtual ~CChess();

};

三、本程序在windows 2000,visual c++ 6.0下编译通过。

四、由于时间匆忙,程序中的部分算法设计不够合理,欢迎各位大虾们多多指教,希望能与你们多多交流,联系方式:

ldh5118@sohu.com,

qq:36201365

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有