• 大小: 5KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-05-22
  • 语言: 其他
  • 标签: 禁手  五子棋  判赢  

资源简介

入口参数为当前棋盘状态,用char current[15][15]表示,0为空格,1为黑子,2为白子

资源截图

代码片段和文件信息

#include 

using namespace std;

char current[15][15];

int KeyForbid(char current[15][15]int xint yint adjacentint direction);

int Forbid(char current[15][15] int x int y)
{
    int NearBlack[8];     //(xy)相邻连续的黑子个数
int NearEmpty[8];     //黑子NearBlack后相邻的连续空格数
int EmptyBlack[8];    //空格NearEmpty后相邻的连续黑子数
int NextEmpty[8];     //黑子EmptyBlack后的相邻的连续空格数
int NextBlack[8];     //空格NextEmpty后相邻的连续的黑子数
    //Initialize
for(int k=0;k<8;k++)
NearBlack[k]=NearEmpty[k]=EmptyBlack[k]=NextEmpty[k]=NextBlack[k]=0;
    
current[x][y]=‘1‘;
int i=0j=0;
//Search Up
for(i=x-1; i>=0&¤t[i][y]==‘1‘; i-- NearBlack[0]++);
for(;i>=0&¤t[i][y]==‘0‘; i-- NearEmpty[0]++);
for(;i>=0&¤t[i][y]==‘1‘; i-- EmptyBlack[0]++);
for(;i>=0&¤t[i][y]==‘0‘; i-- NextEmpty[0]++);
for(;i>=0&¤t[i][y]==‘1‘; i-- NextBlack[0]++);

//Search Right Up
for(i=x-1j=y+1; i>=0&&j<15&¤t[i][j]==‘1‘; i--j++NearBlack[1]++);
for(;i>=0&&j<15&¤t[i][j]==‘0‘; i--j++ NearEmpty[1]++);
for(;i>=0&&j<15&¤t[i][j]==‘1‘; i--j++ EmptyBlack[1]++);
for(;i>=0&&j<15&¤t[i][j]==‘0‘; i--j++ NextEmpty[1]++);
for(;i>=0&&j<15&¤t[i][j]==‘1‘; i--j++ NextBlack[1]++);

//Search Right
for(j=y+1; j<15&¤t[x][j]==‘1‘; j++NearBlack[2]++);
for(;j<15&¤t[x][j]==‘0‘; j++ NearEmpty[2]++);
for(;j<15&¤t[x][j]==‘1‘; j++ EmptyBlack[2]++);
for(;j<15&¤t[x][j]==‘0‘; j++ NextEmpty[2]++);
for(;j<15&¤t[x][j]==‘1‘; j++ NextBlack[2]++);

//Search Right Down
for(i=x+1j=y+1; i<15&&j<15&¤t[i][j]==‘1‘; i++j++NearBlack[3]++);
for(;i<15&&j<15&¤t[i][j]==‘0‘; i++j++ NearEmpty[3]++);
for(;i<15&&j<15&¤t[i][j]==‘1‘; i++j++ EmptyBlack[3]++);
for(;i<15&&j<15&¤t[i][j]==‘0‘; i++j++ NextEmpty[3]++);
for(;i<15&&j<15&¤t[i][j]==‘1‘; i++j++ NextBlack[3]++);

//Search Down
for(i=x+1; i<15&¤t[i][y]==‘1‘; i++NearBlack[4]++);
for(;i<15&¤t[i][y]==‘0‘; i++ NearEmpty[4]++);
for(;i<15&¤t[i][y]==‘1‘; i++ EmptyBlack[4]++);
for(;i<15&¤t[i][y]==‘0‘; i++ NextEmpty[4]++);
for(;i<15&¤t[i][y]==‘1‘; i++ NextBlack[4]++);

//Search Left Down
for(i=x+1j=y-1; i<15&&j>=0&¤t[i][j]==‘1‘; i++j--NearBlack[5]++);
for(;i<15&&j>=0&¤t[i][j]==‘0‘; i++j--NearEmpty[5]++);
for(;i<15&&j>=0&¤t[i][j]==‘1‘; i++j-- EmptyBlack[5]++);
for(;i<15&&j>=0&¤t[i][j]==‘0‘; i++j-- NextEmpty[5]++);
for(;i<15&&j>=0&¤t[i][j]==‘1‘; i++j-- NextBlack[5]++);

//Search Left
for(j=y-1;j>=0&¤t[x][j]==‘1‘; j--NearBlack[6]++);
for(;j>=0&¤t[x][j]==‘0‘; j--NearEmpty[6]++);
for(;j>=0&¤t[x][j]==‘1‘; j-- EmptyBlack[6]++);
for(;j>=0&¤t[x][j]==‘0‘; j--NextEmpty[6]++);
for(;j>=0&¤t[x][j]==‘1‘; j-- NextBlack[6]++);

//Search Left Up
for(i=x-1j=y-1; i>=0&&j>=0&¤t[i][j]==‘1‘; i--j--NearBlack[7]++);
for(;i>=0&&j>=0&¤t[i][j]==‘0‘; i--

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       8060  2008-11-11 13:45  判赢+禁手\Forbid.cpp

     文件       1637  2008-11-11 13:48  判赢+禁手\win.cpp

     文件       7433  2008-11-13 23:35  判赢+禁手\Forbid.h

     文件       1127  2008-11-13 23:30  判赢+禁手\win.h

     文件        715  2008-11-13 23:34  判赢+禁手\使用说明.txt

     目录          0  2008-11-11 13:47  判赢+禁手

----------- ---------  ---------- -----  ----

                18972                    6


评论

共有 条评论