Простой го реализует функции игры в го, записи партии и анализа. Программа автоматически делает ходы за игрока при игре или анализе. Для более простого использования с такими программами искусственного интеллекта, как TensorFlow.js, программа написана с учётом принципа простоты использования.
Программа использует html, bootstrap, jquery и TensorFlow.js в качестве архитектуры клиентского интерфейса. После доработки интерфейса планируется использовать Flask для бэкенда, а также numpy, scipy, scikit-learn для анализа ситуации на доске.
class simpleGo {
constructor() {
this.positions = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s"];
this.newWeiQi();
this.goString = { string: [], empty: [] };
}
go_handler(item="B[qd]") {
var position = item.slice(2, 4);
if (this.posColor.hasOwnProperty(position)) {
return false;
}else{
this.posColor[position] = item[0];
}
var del_pos = [];
var near_pos = this.near_positions(position);
for (var npn in near_pos) {
if (this.posColor.hasOwnProperty(near_pos[npn])) {
if (this.posColor[near_pos[npn]] != this.posColor[position]) {
this.goString = { 'string': [], 'empty': [] };
this.go_string(near_pos[npn]);
if (this.goString['empty'].length == 0) {
for (var spn in this.goString['string']) {
del_pos.includes(this.goString['string'][spn]) || del_pos.push(this.goString['string'][spn]);
}
}
}
}
}
if (del_pos.length == 0) {
this.goString = { 'string': [], 'empty': [] };
this.go_string(position);
if (this.goString['empty'].length == 0) {
delete this.posColor[position];
} else {
this.sgf.push(item);
this.posColorList.push(JSON.parse(JSON.stringify(this.posColor)));
return true;
}
} else {
for (var d_p in del_pos) {
delete this.posColor[del_pos[d_p]];
}
this.sgf.push(item);
this.posColorList.push(JSON.parse(JSON.stringify(this.posColor)));
return true;
}
return false;
}
go_string(position) {
this.goString['string'].push(position);
var nPos = this.near_positions(position);
for (var np in nPos) {
if (this.posColor.hasOwnProperty(nPos[np])) {
if (!this.goString['string'].includes(nPos[np]) && this.posColor[nPos[np]] == this.posColor[position]) {
this.go_string(nPos[np]);
}
} else {
this.goString['empty'].includes(nPos[np]) || this.goString['empty'].push(nPos[np]);
}
}
}
near_positions(position) {
var near_pos = [];
var row = this.near(position[0]);
var col = this.near(position[1]);
for (var r in row) {
near_pos.push(row[r] + position[1]);
}
for (var c in col) {
near_pos.push(position[0] + col[c]);
}
return near_pos;
}
near(char) {
switch (char) {
case "a":
return ["b"];
case "s":
return ["r"];
case "b": case "c": case "d": case "e": case "f": case "g":
case "h": case "i": case "j": case "k": case "l": case "m":
case "n": case "o": case "p": case "q": case "r":
default:
var pos =
``` **Этот текст представляет собой фрагмент программного кода на языке Python.**
В тексте описывается класс WeiQi, который реализует базовую логику игры в го (wei qi). Класс содержит методы для работы с игровым полем и правилами игры.
Также в тексте приводятся инструкции по внесению вклада в проект: как создать новую ветку, внести изменения и отправить запрос на включение изменений в основную ветку проекта.
Кроме того, в тексте упоминаются некоторые особенности использования платформы Gitee для разработки и публикации проектов.
**Текст не содержит перевода инструкций по работе с платформой Gitee**, так как они не являются частью исходного запроса.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )