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. Текущая версия доступна для использования в браузере.

Использование

  1. После открытия браузера по умолчанию начинается игра. Можно сразу приступать к игре.
  2. Можно отменить последний ход.
  3. Можно скачать запись партии. В данный момент загружается весь контент из журнала ниже.
  4. Панель здоровья игры является журналом. Можно сохранить его, используя кнопку «Скачать запись партии». Справа от неё отображается общее время работы страницы и текущий игрок. Данные обновляются каждые 5 секунд, поэтому могут отображаться с задержкой. Однако данные, сохранённые на сервере, не зависят от времени.
  5. На панели файлов есть три области для загрузки: партия, файлы TensorFlow.js (модели и веса). После изменения партии автоматически начинается анализ.
  6. После игры или анализа можно просмотреть партию в ускоренном или замедленном режиме. Ускоренный просмотр осуществляется нажатием кнопок «<<» и «>>» по бокам или перемещением ползунка посередине. Замедленный просмотр запускается кнопкой после установки скорости в правом верхнем углу. Скорость измеряется в секундах. Во время замедленного просмотра можно изменять скорость и просматривать партию в ускоренном режиме.
  7. Кнопка справа вверху используется для создания модели TensorFlow.js. Можно использовать одну из них. Обе функции перекрывают друг друга.
  8. Чтобы использовать функцию «Загрузить», необходимо сначала выбрать модель и файл весов в нижней части панели файлов. Иначе будет выдана ошибка.
  9. Создание и загрузка моделей в настоящее время включают обучение и прогнозирование. Также можно обучать и предсказывать во время игры.
  10. Цвет фона страницы можно изменить в левом верхнем углу.
  11. Программа выдаёт предупреждающие сообщения через равные промежутки времени.

Логика игры в го (Go) на 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']) {
                            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 )

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

Введение

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

Обновления

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

Участники

все

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

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