资源简介
C++Builder的五子棋源代码(供参考学习用)
代码片段和文件信息
//---------------------------------------------------------------------------
// 描述:SK 五子棋 1.0 核心算法
// 作者:seeker
// 声明:本代码仅供学习,任何人可以修改复制,但必须注明原作者信息!
// 注意:版权所属:seeker
// 日期:2006-12-31
// 更新:2007-12-28
// 感谢:天地之灵
//---------------------------------------------------------------------------
#pragma hdrstop
#include “CH5.h“
#include “stdlib.h“
//---------------------------------------------------------------------------
#pragma package(smart_init)
//========================================================
MYCH5::MYCH5()
{
Reset();//初始化
srand((unsigned(time(0))));
}
//--------------------------------------------------
// 得到第 i 步的坐标值和颜色值,用于保存文件
void MYCH5::GetStepOfIndex(int iint &txint &tyint &tc)
{
tx=STEPS[i].x; ty=STEPS[i].y; tc=STEPS[i].color;
}
//--------------------------------------------------
// 设置第 i 步的坐标值和颜色值,
// 用于读取文件之后设置棋盘
void MYCH5::SetStepOfIndex(int iint txint tyint tc)
{
STEPS[i].x=tx; STEPS[i].y=ty; STEPS[i].color=tc;
}
//--------------------------------------------------
// 初始化(重置)棋盘和游戏状态
// 默认人机对战,人先下,人先执黑
void MYCH5::Reset()
{
int ij;
for(i=0;i<15;i++)
for(j=0;j<15;j++)
CH5[i][j]=0;
StepLen=0; // 开始
UserColor=BLACK; // 默认人先执黑
PlayState=MAN; //人机对战,人先下
}
//---------------------------------------------------------------------------
//设置谁先下棋
int MYCH5::SetFirst(int playstatebool read_PcFirst)
{
// 保证范围,可以不要
PlayState=(playstate<4&&playstate>0)?playstate:PC;
// read_PcFirst=true 表明从机器先下的文件读取数据
// 那么接下来就应该是用户下棋,且颜色为白色(2)!
if(read_PcFirst)
{
PlayState=MAN; //读完文件轮到人下,且颜色为白色
UserColor=WHITE; //白色
// return UserColor;
}
if(PlayState==PC) //如果是机器先下,则机器为白色
UserColor=WHITE;
return UserColor;
}
//---------------------------------------------------------------------------
// 定义一个宏,用来定位,将二维数组当作一维使用
#define GetBoardXY(xy) Board[(x)*15+(y)]
// 该函数判断是否有人赢,包括禁手。
int MYCH5::JudgeWin(int xint yint *Board) //判断是否有人胜利
{
int ij; // i 是循环变量, J 用来记录同颜色的连续棋子有多少个
int tt1;
int dxdy; // 用来控制坐标的变化!
int x1y1; // 搜索的开始位置
int Color=GetBoardXY(xy); // 返回xy棋格处的棋子颜色
for (i=0;i<4;i++) //i=0到3分别表示4个方向。
{
switch (i)
{
case 0:dx=0; dy=1; break; //向下---向上
case 1:dx=1; dy=0; break; //向右---向左
case 2:dx=1; dy=1; break; //右下---左上
case 3:dx=1; dy=-1; break; //右上---左下
default:dx=0; dy=0; break; //不变
}
j=1; //J 用来记录多少个同颜色棋子(己方)相邻,用于判断禁手或者输赢
x1=x; y1=y; //不用说也是从x,y位置开始判断
// 正向
while ((x1+dx<=14)&&(y1+dy<=14)&&(y1+dy>=0) //保证范围不会超过棋盘范围
&&(GetBoardXY(x1+=dxy1+=dy)==Color))//判断颜色是否相等
j++;
x1=x;
y1=y;
//反向
while ((x1-dx>=0)&&(y1-dy>=0)&&(y1-dy<=14)
&&(GetBoardXY(x1-=dxy1-=dy)==Color))
j++;
if ((Color==BLACK)&&(j>5))
return 2; //黑棋长连禁手的判断,白方赢
if (j>4)
return Color; // 如果5子相连,则返回赢方颜色
}// for
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 16706 2007-12-27 23:40 五子棋源代码\CH5.cpp
文件 2373 2007-12-27 23:42 五子棋源代码\CH5.h
文件 5718 2009-04-25 19:15 五子棋源代码\CH5.obj
文件 5992 2006-12-31 15:39 五子棋源代码\myFiveChess.bpr
文件 1130 2006-12-31 15:39 五子棋源代码\myFiveChess.cpp
文件 3415552 2009-04-25 19:15 五子棋源代码\myFiveChess.exe
文件 8802 2009-04-25 19:15 五子棋源代码\myFiveChess.obj
文件 876 2006-12-31 15:39 五子棋源代码\myFiveChess.res
文件 983040 2009-04-25 19:17 五子棋源代码\myFiveChess.tds
文件 12885 2006-12-24 21:06 五子棋源代码\res\loginpic.JPG
文件 11432 2006-12-31 12:51 五子棋源代码\res\lose.wav
文件 139752 2004-12-28 00:00 五子棋源代码\res\main.wav
文件 205 2006-12-31 00:01 五子棋源代码\res\picres.rc
文件 2502468 2007-12-27 23:43 五子棋源代码\res\picres.res
文件 2120 1998-04-17 00:37 五子棋源代码\res\put.wav
文件 3810 2006-12-31 12:50 五子棋源代码\res\undo.wav
文件 44718 1998-04-17 00:37 五子棋源代码\res\win.wav
文件 849126 2006-12-23 22:16 五子棋源代码\res\棋盘.bmp
文件 3590 2006-12-23 21:30 五子棋源代码\res\白棋.bmp
文件 1646022 2006-12-24 17:17 五子棋源代码\res\空.bmp
文件 3590 2006-12-23 21:30 五子棋源代码\res\黑棋.bmp
文件 650752 2007-12-27 23:47 五子棋源代码\SK五子棋.exe
文件 3483 2007-01-03 20:44 五子棋源代码\ulogin.cpp
文件 31047 2006-12-31 14:07 五子棋源代码\ulogin.dfm
文件 1496 2006-12-31 16:14 五子棋源代码\ulogin.h
文件 24082 2009-04-25 19:15 五子棋源代码\ulogin.obj
文件 15088 2007-12-27 23:38 五子棋源代码\uMain.cpp
文件 7542 2007-12-27 23:33 五子棋源代码\uMain.dfm
文件 3327 2007-12-27 23:38 五子棋源代码\uMain.h
文件 54160 2009-04-25 19:15 五子棋源代码\uMain.obj
............此处省略7个文件信息
- 上一篇:gtest1.6.0.zip
- 下一篇:C++实现A*算法十五数码问题
相关资源
- 水库优化调度c++builder程序
- c++builder6.0开发的信息管理系统
- 05年毕业设计-图像处理软件及源代码
- 基于C++Builder6.0的图书信息管理系统的
- C++ Builder 6程序设计教程.pdf c builder
- C++ Builder 6实用编程100例光盘、源代码
- C++ Builder 5高级编程精解光盘、源代码
- CnWizards_1.1.6.959.exe
- C++Builder案例开发集锦(第二版)
- C++Builder程序设计范例中国象棋.
- C++Builder6.0 Help帮助文档
- C++builder创建bpl库并调用
- C++builder直连MySQL
- c++builder 6技术大全
- 利用C++builder 6编写热舒适性评价指标
- c++builder2010 授权文件
- C++Builder下TTreeView 编程
- C++Builder6.0破解版安装包
- 学生信息查询系统c++builder
- C++ Builder + Access 学生管理系统数据库
- c++ builder实现文件粉碎机的源码
- C++builder编写的简单科学计算器
- 初学者学习C++ Builder第一个程序模拟聊
- 初学者学习C++ Builder第一个程序模拟聊
- VCLSkin 5.60.for.Delphi.C++Builder 5-2010 Full
- c++builder QQ登录界面源码
- c++builder6.0做的mscomm串口通讯
- C++ builder 网络传输程序含服务器和客
- c++builder做图像处理项目的核心代码
- Raize Components 6.1.12 for C++builder XE10的安
评论
共有 条评论