目前,我正在用python做一个失败的“ia”,它给了我一个最小最大成功率(使用lichess数据库的大师级部分)最好的开场,并且只采取至少已经打了100个位置的动作,这样就不会在一场比赛中落在100%的黑人成功率上。我设法用lichess api做到了这一点,问题是当我请求超过3个深度时,lichess会因为api上生成的垃圾邮件而阻止我。
我告诉自己,我要做同样的事情,但不是使用无衣api,我要使用一个. pgns的大师部分和库"国际象棋",我可以做类似的事情,但目前我被阻止如何通过示例"e2-e4"过滤这个文件,并有每一步的成功率,并有一个递归函数来探索这个文件。
我找不到一个征集通过国际象棋-py文档和我的谷歌搜索没有拿出任何东西。
有人有主意吗?
api lichess:https://lichess.org/api#tag/Opening-探险家
png文件:https://odysee.com/@Toadofsky:b/巫妖精英数据库:b
下面是一个@fougueux的例子(我没有想过用这个文件创建一个数据库,我错过了“erd”代码,这正是我需要的)
填写数据库(dbname=“game”、行id、行fen、行结果)
import json
import requests
import chess
import chess.pgn
import chess.polyglot
import pymysql
pgn = open('C:/Users/pierr/OneDrive/Bureau/lichess_elite_2020-05.pgn')
result = []
while True:
game = chess.pgn.read_game(pgn)
if game is not None:
board = game.board()
for move in game.mainline_moves():
board.push(move)
result.append([board.epd(), game.headers["Result"]])
else:
break
connection = pymysql.connect(host='localhost',
user='root',
password='',
database='chess-master',
cursorclass=pymysql.cursors.DictCursor)
with connection:
with connection.cursor() as cursor:
# Create a new record
for i in result:
sql = "INSERT INTO `game` (`fen`, `result`) VALUES (%s, %s)"
cursor.execute(sql, (i[0], i[1]))
以及搜索最小最大分数的算法(分数=%winrate white*1,%winrate black*0,%winrate draw*0.5),他用100多个移动游戏进行移动
import json
import requests
import chess
import chess.pgn
import chess.polyglot
board = chess.Board()
def parcourir(board, depth, traitblanc):
scorelist = []
for move in board.legal_moves:
board.push(move)
url = 'http://localhost/chess-master/?fen='
url += board.epd() # fen
r = requests.get(url)
data = json.loads(r.text)
somme = int(data[0]['COUNT(result)']) + int(data[1]['COUNT(result)']) + int(data[2]['COUNT(result)'])
if(somme > 100):
score = (int(data[0]['COUNT(result)']) * 1) + (int(data[1]['COUNT(result)']) * 0) + (int(data[2]['COUNT(result)']) * 0.5)
scorelist.append(score)
board.pop()
if(depth != 0):
score = []
for move in board.legal_moves:
board.push(move)
score.append(parcourir(board, depth-1, not traitblanc))
board.pop()
if(traitblanc):
if(not scorelist):
return -100
return max(scorelist)
else:
if(not scorelist):
return 100
return min(scorelist)
print (parcourir(board, 1, True))
与php比python更舒适,我通过以下代码选择了fen:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "chess-master";
$doCount = array("1-0","0-1","1/2-1/2");
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
$results = array();
foreach($doCount as $c) {
$sql = "SELECT COUNT(result) FROM `game` WHERE fen = '".$_GET['fen']."' and result = '".$c."'";
$result = $conn->query($sql);
while($row = $result->fetch_assoc()) {
$results[] = $row;
#print_r($row);
}
}
echo json_encode($results)
?>
谢谢你的帮助:)
一种方法是建立一个类似mongoDB的数据库。
1. Read each game in the pgn file.
2. Record the epd after every move in the game.
3. Get the result of this game.
4. Record white_win, white_loss, white_draw, black_win, black_loss, black_draw, num_game.
5. Save/update to database the following info.
{
"epd": <epd>
"white_win": ...,
"white_loss": ...,
"...": ...
}
现在,你可以通过环保署查询数据库,得到其中的信息。
例如,可以使用python国际象棋库解析pgn文件中的每一个游戏。
首先将其保存到数据库的优点是,当您稍后进行查询时,会很快得到结果。
如果你不喜欢把它保存在数据库中,你可以这样做,但是如果文件很大,可能会很贵。你仍然可以使用上面的算法。
我试图完全清理资源组在Azure。 删除资源组不是选项(访问权限:参与者,而不是所有者) 做到这一点的最优雅和明显的方法(也在一些文章中描述)是使用“空”部署模板执行完整的部署: 删除SQL Server开始“...”接受“...”失败“...”开始“...”接受“...”失败“... 你想到主意了。 其他时候效果很好。 您将得到数据库删除的无限循环“开始..接受..失败..开始..接受..失败.
资源管理器 是我们用来访问和管理项目资源的工作区域。在开始制作游戏时,添加资源到这里通常是必须的步骤。您可以使用 HelloWorld 模板新建一个项目,就可以看到 资源管理器 中包含了一些基本资源类型。 界面介绍 资源管理器 将项目资源文件夹中的内容以树状结构展示出来,注意只有放在项目文件夹的 assets 目录下的资源才会显示在这里。关于项目文件夹结构说明请阅读 项目结构 一节。下面我们介绍各
资源管理器 面板是我们用来访问和管理项目资源的重要工具。 在开始制作游戏时,导入资源 通常是必须的步骤。您可以在新建项目时使用模板项目,新建步骤完成后会自动打开项目,默认布局中包含了 资源管理器 面板,里面有两个资源库,简称 DB,assets 和 internal, internal 属于默认的内置资源,内置资源可以复制出来,但不能直接修改。 面板操作预览 面板介绍 资源管理器 面板上主要有 头
我正在使用Drowpizard 0.7.1,但也许我会很快升级到0.8.4。 是否有人知道如何向dropwizard添加管理员资源,如下面示例中的操作菜单所示?
问题内容: 我正在尝试为xlib窗口创建游戏循环,但是无法正确绘制该窗口。现在,我正在使用XCreateSimpleWindow(…)创建一个窗口,并使用for循环一次绘制所有像素。(这些像素的颜色是从一个大的整数数组中读取的,现在,我将所有像素设置为蓝色。)现在,实际的游戏循环如下: 全局定义了变量dsp,win,pixels,gc。 现在,当我编译并执行二进制文件时,y坐标低的行主要是蓝色,而
问题内容: 我准备使用Java创建文件浏览器。目的是尽可能地模仿默认资源管理器的行为,无论底层操作系统是什么。 我没有用Java完成GUI编程。 我查找了Swing,SWT和JFace,并从本教程开始我的项目:http : //www.ibm.com/developerworks/opensource/library/os- ecgui1/ 我想知道您对解决此问题的最佳方法的看法。如果您可以评论编