资源简介
人机对战,解压既能运行,使用版本python3.6需要使用PyQt5的模块
代码片段和文件信息
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# evaluation: 棋盘评估类,给当前棋盘打分用
# ----------------------------------------------------------------------
class evaluation(object):
def __init__(self):
self.POS = []
for i in range(15):
row = [(7 - max(abs(i - 7) abs(j - 7))) for j in range(15)]
self.POS.append(tuple(row))
self.POS = tuple(self.POS)
self.STWO = 1 # 冲二
self.STHREE = 2 # 冲三
self.SFOUR = 3 # 冲四
self.TWO = 4 # 活二
self.THREE = 5 # 活三
self.FOUR = 6 # 活四
self.FIVE = 7 # 活五
self.DFOUR = 8 # 双四
self.FOURT = 9 # 四三
self.DTHREE = 10 # 双三
self.NOTYPE = 11
self.ANALYSED = 255 # 已经分析过
self.TODO = 0 # 没有分析过
self.result = [0 for i in range(30)] # 保存当前直线分析值
self.line = [0 for i in range(30)] # 当前直线数据
self.record = [] # 全盘分析结果 [row][col][方向]
for i in range(15):
self.record.append([])
self.record[i] = []
for j in range(15):
self.record[i].append([0 0 0 0])
self.count = [] # 每种棋局的个数:count[黑棋/白棋][模式]
for i in range(3):
data = [0 for i in range(20)]
self.count.append(data)
self.reset()
# 复位数据
def reset(self):
TODO = self.TODO
count = self.count
for i in range(15):
line = self.record[i]
for j in range(15):
line[j][0] = TODO
line[j][1] = TODO
line[j][2] = TODO
line[j][3] = TODO
for i in range(20):
count[0][i] = 0
count[1][i] = 0
count[2][i] = 0
return 0
# 四个方向(水平,垂直,左斜,右斜)分析评估棋盘,再根据结果打分
def evaluate(self board turn):
score = self.__evaluate(board turn)
count = self.count
if score < -9000:
stone = turn == 1 and 2 or 1
for i in range(20):
if count[stone][i] > 0:
score -= i
elif score > 9000:
stone = turn == 1 and 2 or 1
for i in range(20):
if count[turn][i] > 0:
score += i
return score
# 四个方向(水平,垂直,左斜,右斜)分析评估棋盘,再根据结果打分
def __evaluate(self board turn):
record count = self.record self.count
TODO ANALYSED = self.TODO self.ANALYSED
self.reset()
# 四个方向分析
for i in range(15):
boardrow = board[i]
recordrow = record[i]
for j in range(15):
if boardrow[j] != 0:
if recordrow[j][0] == TODO: # 水平没有分析过?
self.__analysis_horizon(board i j)
if recordrow[j][1] == TODO: # 垂直没有分析过?
self.__analysis_vertical(board i j)
if recordrow[j][2] == TODO: # 左斜没有分析过?
self.__analysis_left(board i j
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-05-28 10:09 GoBang\
文件 65 2017-12-23 16:31 GoBang\.gitattributes
文件 18452 2017-12-23 16:31 GoBang\ai.py
文件 2483 2017-12-23 16:31 GoBang\chessboard.py
文件 7610 2017-12-23 16:31 GoBang\gobangGUI.py
目录 0 2018-05-28 10:09 GoBang\img\
文件 1173 2017-12-23 16:31 GoBang\img\black.png
文件 49712 2017-12-23 16:31 GoBang\img\chessboard.jpg
文件 1268 2017-12-23 16:31 GoBang\img\white.png
文件 57 2017-12-23 16:31 GoBang\README.md
目录 0 2018-05-28 10:09 GoBang\sound\
文件 12632 2017-12-23 16:31 GoBang\sound\defeated.wav
文件 15590 2017-12-23 16:31 GoBang\sound\move.wav
文件 27150 2017-12-23 16:31 GoBang\sound\win.wav
- 上一篇:Python-利用keras模仿汪峰生成歌词
- 下一篇:爬取百度poi数据.py
相关资源
- python实现SGBM图像匹配算法
- python实现灰度直方图均衡化
- scrapy_qunar_one
- Python学习全系列教程永久可用
- python简明教程.chm
- 抽奖大转盘python的图形化界面
- 双边滤波器实验报告及代码python
- python +MYSQL+HTML实现21蛋糕网上商城
- Python-直播答题助手自动检测出题搜索
- OpenCV入门教程+OpenCV官方教程中文版
- Python 串口工具源码+.exe文件
- Python开发的全栈股票系统.zip
- Python操作Excel表格并将其中部分数据写
- python书籍 PDF
- 利用python绘制散点图
- python+labview+No1.vi
- 老男孩python项目实战
- python源码制作whl文件.rar
- python3.5可用的scipy
- PYTHON3 经典50案例.pptx
- 计算机科学导论-python.pdf
- python模拟鼠标点击屏幕
- windows鼠标自动点击py脚本
- 鱼c小甲鱼零基础学python全套课后题和
- Python 练习题100道
- Practical Programming 2nd Edition
- wxPython Application Development Cookbook
- python 3.6
- Python 3.5.2 中文文档 互联网唯一CHM版本
- python3.5.2.chm官方文档
评论
共有 条评论