• 大小: 2.02MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-27
  • 语言: C/C++
  • 标签: C++Builder  

资源简介

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个文件信息

评论

共有 条评论