资源简介
点点连格棋全国二等奖源代码,aloha-beta剪枝,评估,效能还行,二等奖水平。
代码片段和文件信息
#include “Dots and Boxes.h“
/////////////////////////////////////////////////////
//
//
// 函数主体,无平台,负责读取对方下子,更新棋局,
// 生成我方招法
//
//
//////////////////////////////////////////////////////
//全局声明
NODE Square[7][7];
EDGE Horizon[6][6]; //实际中的横边[6][5]
EDGE Vertical[6][6]; //实际中的竖边[5][6]
int myturn;
int xy;
int Search(int deepint alphaint betaint turn);
void Final_Occupy();
LIST Bestmove;
void printdegree();
int mboxes=0yboxes=0;
int undo_type;
void undoit(int type int x int y);
//悔棋函数
void undoit(int type int x int y)
{
if(type==0)
{
Horizon[x][y].ismove=1;
Square[x+1][y+1].degree++;
if(Square[x+1][y+1].owner!=-1)
{
Square[x+1][y+1].owner=-1;
}
Square[x][y+1].degree++;
if(Square[x][y+1].owner!=-1)
{
Square[x][y+1].owner=-1;
}
}
else
{
Vertical[x][y].ismove=1;
Square[x+1][y+1].degree++;
if(Square[x+1][y+1].owner!=-1)
{
Square[x+1][y+1].owner=-1;
}
Square[x+1][y].degree++;
if(Square[x+1][y].owner!=-1)
{
Square[x+1][y].owner=-1;
}
}
}
int FoundC()
{
int ijk;
for(i=1;i<6;i++)
{
for(j=1;j<6;j++)
{
if(Square[i][j].degree==1)
{
for(k=0;k<=3;k++)
{
if(Square[i][j].edge[k]->ismove==1)
{
Square[i][j].edge[k]->ismove=0;
Square[i][j].degree=0;
Square[i][j].owner=myturn;
mboxes++;
if(k==0)
{
Square[i][j-1].degree--;
if(Square[i][j-1].degree==0)
{
Square[i][j-1].owner=myturn;
mboxes++;
}
}
else if(k==1)
{
Square[i-1][j].degree--;
if(Square[i-1][j].degree==0)
{
Square[i-1][j].owner=myturn;
mboxes++;
}
}
else if(k==2)
{
Square[i][j+1].degree--;
if(Square[i][j+1].degree==0)
{
Square[i][j+1].owner=myturn;
mboxes++;
}
}
else if(k==3)
{
Square[i+1][j].degree--;
if(Square[i+1][j].degree==0)
{
Square[i+1][j].owner=myturn;
mboxes++;
}
}
return 1;
}
}
}
}
}
return 0;
}
int randmove()
{
int i j k;
int etype x y; //etpye边的类型,xy坐标
//判断是否已经有C格,有就封上
for(i=1;i<=6;i++)
{
for(j=1;j<=6;j++)
{
if(Square[i][j].degree==1)
{
for(k=0;k<=3;k++)
{
if(Square[i][j].edge[k]->ismove==1)
{
Square[i][j].edge[k]->ismove=0;
Square[i][j].degree=0;
Square[i][j].owner=myturn;
mboxes++;
if(k==0)
{
Square[i][j-1].degree--;
if(Square[i][j-1].degree==0)
{
Square[i][j-1].owner=myturn;
mboxes++;
}
}
else if(k==1)
{
Square[i-1][j].degree--;
if(Square[i-1][j].degree==0)
{
Square[i-1][j].owner=myturn;
mboxes++;
}
}
else if(k==2)
{
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-02-18 20:23 点点连格棋9月\
目录 0 2012-02-18 20:23 点点连格棋9月\Debug\
文件 20150 2011-09-11 22:49 点点连格棋9月\Debug\Dots and Boxes.obj
文件 0 2011-09-11 22:49 点点连格棋9月\Debug\Dots and Boxes.sbr
文件 25771 2011-09-11 22:49 点点连格棋9月\Debug\Evaluate.obj
文件 0 2011-09-11 22:49 点点连格棋9月\Debug\Evaluate.sbr
文件 40343 2011-09-11 22:49 点点连格棋9月\Debug\Final_Occupy.obj
文件 0 2011-09-11 22:49 点点连格棋9月\Debug\Final_Occupy.sbr
文件 2990 2011-09-11 22:49 点点连格棋9月\Debug\Move.obj
文件 0 2011-09-11 22:49 点点连格棋9月\Debug\Move.sbr
文件 6505 2011-09-11 23:27 点点连格棋9月\Debug\Search.obj
文件 0 2011-09-11 23:27 点点连格棋9月\Debug\Search.sbr
文件 50176 2011-09-11 23:27 点点连格棋9月\Debug\vc60.idb
文件 53248 2011-09-11 23:27 点点连格棋9月\Debug\vc60.pdb
文件 132096 2011-09-11 23:27 点点连格棋9月\Debug\点点连格棋.bsc
文件 249931 2011-09-11 23:27 点点连格棋9月\Debug\点点连格棋.exe
文件 244812 2011-09-11 23:27 点点连格棋9月\Debug\点点连格棋.ilk
文件 247172 2011-09-11 22:49 点点连格棋9月\Debug\点点连格棋.pch
文件 541696 2011-09-11 23:27 点点连格棋9月\Debug\点点连格棋.pdb
文件 11132 2011-09-09 00:08 点点连格棋9月\Dots and Boxes.cpp
文件 1707 2011-09-11 21:53 点点连格棋9月\Dots and Boxes.h
文件 21530 2011-09-11 20:26 点点连格棋9月\Evaluate.cpp
文件 285 2011-08-30 22:39 点点连格棋9月\Evaluate.h
文件 36204 2011-09-11 22:38 点点连格棋9月\Final_Occupy.cpp
文件 554 2011-09-06 17:06 点点连格棋9月\Final_Occupy.h
文件 832 2011-09-04 20:34 点点连格棋9月\Move.cpp
文件 113 2011-09-05 19:20 点点连格棋9月\Move.h
文件 4513 2011-09-12 06:27 点点连格棋9月\Search.cpp
文件 262 2011-09-11 22:49 点点连格棋9月\Search.h
文件 4915 2011-08-30 22:39 点点连格棋9月\点点连格棋.dsp
文件 528 2011-08-30 22:39 点点连格棋9月\点点连格棋.dsw
............此处省略4个文件信息
- 上一篇:序列优化算法改写
- 下一篇:HTTP500修复脚本
评论
共有 条评论