1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/lwf808-simple-go

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Простой Го

Введение

Простой Го реализует функции игры в Го и восстановления партии. Во время игры или восстановления партии программа автоматически выполняет захват камней. Для лучшей совместимости с фреймворками искусственного интеллекта, такими как TensorFlow.js, программа была написана с учётом простоты использования.

Архитектура программного обеспечения

Программа использует архитектуру клиентского интерфейса, основанную на HTML, Bootstrap, jQuery и TensorFlow.js. После завершения работы над интерфейсом планируется использовать Flask для серверной части, добавив NumPy, SciPy и Scikit-Learn для анализа позиций игры.

Инструкция по установке

  1. Откройте браузер для запуска программы. #### Инструкция по использованию
  2. После открытия страницы игра начинается автоматически, и вы можете сразу приступить к игре.
  3. Для отмены хода удалите последний сделанный ход.
  4. Вы можете скачать протокол игры, который содержит все данные игры.
  5. Раздел с информационными сообщениями о состоянии здоровья пользователя является частью протокола игры. Его можно сохранить вместе с протоколом игры при помощи кнопки "Сохранить". В правой части этого раздела отображается общее время, проведенное на сайте, и текущий игрок. Обновление данных происходит каждые 5 секунд, поэтому информация может немного запаздывать. Сохранение данных на сервере не зависит от времени.
  6. В верхнем меню есть три области для загрузки файлов слева направо: протокол игры, файл модели TensorFlow.js и файл весов. При изменении файла протокола происходит автоматическое восстановление партии.
  7. После начала игры или восстановления партии доступны две функции просмотра: быстрый просмотр и управляемый просмотр. Быстрый просмотр позволяет перемещаться между ходами с помощью кнопок "<" и ">" или ползунка.
  8. Управляемый просмотр позволяет контролировать скорость воспроизведения с помощью регулятора скорости справа. Можно также изменять время воспроизведения и перемещаться между ходами.
  9. Верхнее правое меню предназначено для создания моделей TensorFlow.js.Можно выбрать одну из двух функций, они взаимно заменяют друг друга.
  10. Для использования функции "Загрузить" необходимо выбрать модель и файл весов в нижнем меню. В противном случае будет возникать ошибка.
  11. Функции создания и загрузки моделей TensorFlow.js автоматически выполняют обучение и прогнозирование. Эти операции также могут выполняться во время игры.
  12. В верхнем левом углу можно изменять цвет фона страницы.
  13. Программа отправляет уведомления каждые полчаса и час. #### Основные логические конструкции игры в го, JavaScript код
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']) {
                     if (!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]) {

Для завершения перевода и корректной работы кода, необходимо также перевести последнюю часть метода go_string:

                this.go_string(nPos[np]);
            }
        }
    }
}

Полностью:

  #### Основные логические конструкции игры в го, JavaScript код

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']) { if (!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]); } } } }

``````markdown
#### Моделирование базовой логики игры Го на Python, ветка "python3.tk"
```python
class WeiQi:
    def __init__(self):
        self.positions = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s"]
        self.newWeiQi()
        self.__goString = {'string': set(), 'empty': set()}

    def go_handler(self, item="B[pd]"):
        position = item[2:4]
        if position not in self.posColor:
            self.posColor[position] = item[0]
            delPositions = set()
            for nPos in self.near_positions(position):
                if nPos in self.posColor and self.posColor[nPos] != self.posColor[position]:
                    self.__goString = {'string': set(), 'empty': set()}
                    self.go_string(nPos)
                    if len(self.__goString['empty']) == 0:
                        delPositions.update(self.__goString['string'])

            if len(delPositions) == 0:
                self.__goString = {'string': set(), 'empty': set()}
                self.go_string(position)
                if len(self.__goString['empty']) == 0:
                    del self.posColor[position]
                else:
                    self.sgf.append(item)
                    self.posColorList.append(copy.deepcopy(self.posColor))
                    return True
            else:
                for dPos in delPositions:
                    del self.posColor[dPos]
## Участие в проекте
1. Создайте форк этого репозитория
2. Создайте новую ветку `Feat_xxx`
3. Подтвердите изменения
4. Создайте запрос на слияние
```### Функции
1. Используйте Readme_XXX.md для поддержки различных языков, например Readme_en.md, Readme_ru.md
2. Официальный блог Gitee [blog.gitee.com](https://blog.gitee.com)
3. Вы можете найти лучшие открытые проекты на Gitee по адресу [https://gitee.com/explore](https://gitee.com/explore)
4. [GVP](https://gitee.com/gvp) — это сокращение от "Gitee Most Valuable Open Source Projects", что означает лучшие открытые проекты на платформе Gitee
5. Официальная документация Gitee доступна по адресу [https://gitee.com/help](https://gitee.com/help)
6. Категория "Обложка Gitee" представляет собой раздел, где представлены участники Gitee [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Простой го, который реализует функции игры в го и анализа партий. В процессе игры или анализа программа автоматически делает ходы. Написан с учётом принципов простоты и удобства использования для таких программ искусственного интеллекта, как TensorFlow.js. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/lwf808-simple-go.git
git@api.gitlife.ru:oschina-mirror/lwf808-simple-go.git
oschina-mirror
lwf808-simple-go
lwf808-simple-go
master