暑假写了一个点格棋的程序,今天重新回顾了一下,简单了画了一下流程图(不太规范),方便以后查阅。
首先介绍一下点格棋的知识:
一、
棋局元素包括:死格、C型格、长链、短链、环、双交等。
格的属性包括:自由度、邻居、开阔度等。
1.死格(dead box):自由度为1的格子
2.C型格(C box) :由三个边构成的格子。
3.大C型格
4.自由度(liberties) :构成格子尚缺的边数
5.邻居(neighbor) :公用边未被占领的相邻(adjacent)的格子
6.开阔度 (openess) = 自由度 - 邻居个数
7.链(chain):彼此相邻的多个自由度为2的一串格子
8.短链(shortchain):2个格子构成的链
9.长链(longchain):3个及3个以上格子构成的链
10.环(circle):首尾相接的长链。多由4格构成。
11.双交(doublecross):两个交互连接的C型格
二、重要定理
•定理1:Dots+doublecrosses=Turns
•通常情况下,最后捕获格子的一方获胜。
•于是,对于先手而言,总换手次数为奇数时获胜;
•对于后手而言,总换手次数为偶数时获胜。
•开局记一次换手。
定理1用以计算结束前的换手次数。定理2(长链法则):
1. 换手数为偶数时,先手方应力图形成偶数条长链,而后手方应力图形成奇数条长链;
2. 换手数为奇数时,先手方应力图形成奇数条长链,而后手方应力图形成偶数条长链。
•可能形成双交数目的计算公式
•doublecrosses=longchain-1+2*circle
•引理1 在点点连格对弈过程中,最后一轮的走棋方是强迫对手率先进入长链或者环中走棋的一方。
开局:棋盘划分,板块规划,目标是保证板块的奇偶性, 符合长链定理。
注意:每个长链需要两个开口的边界
中局:以长链定理为核心,让格、短链及环配合
残局:贪婪还是让格走法的考虑。
程序主流程图:根据对弈平台协议编写的程序。