Внедрение Stockfish в UnityC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Внедрение Stockfish в Unity

Сообщение Anonymous »

Я действительно изо всех сил пытаюсь реализовать stockfish в единстве с C #, я видел много людей, использующих стандартный ввод для чтения Stockfish. хотя моя программа зависнет, что бы я ни делал. (Сейчас я просто пытаюсь получить какую-либо информацию от вяленой рыбы, так что это довольно просто). Кто-нибудь может сказать мне, почему это зависает сразу после запуска? Большое спасибо. p.s. извините, если написал не туда.

Код: Выделить всё

using System.Collections.Generic;
using UnityEngine;
using System.Diagnostics;
using System.IO;
using System.Threading.Tasks;
using General;
using System.Threading;

public class UCIExtension : MonoBehaviour
{
private Process stockfishProcess = new Process();
private StreamWriter inputWriter;
private StreamReader outputReader;

private bool engineActive = false;

public int moveTime;

List feed = new List();

public void Start()
{
//prepare and sync engine

engineActive = true;

// Path to the Stockfish executable
string stockfishPath = Application.dataPath + "/Tools/Stockfish_17_x86-32.exe";
// Start Stockfish process
stockfishProcess.StartInfo.FileName = stockfishPath;
stockfishProcess.StartInfo.UseShellExecute = false;
stockfishProcess.StartInfo.RedirectStandardInput = true;
stockfishProcess.StartInfo.RedirectStandardOutput = true;
stockfishProcess.StartInfo.CreateNoWindow = true;

stockfishProcess.Start();
inputWriter = stockfishProcess.StandardInput;
outputReader = stockfishProcess.StandardOutput;

UnityEngine.Debug.Log(RunCommand("d", ""));
}

private void OnOutputReceived(object sender, DataReceivedEventArgs e)
{
if (e.Data != null)
{
feed.Add(e.Data);
}
}

public async Task RunCommand(string command, string conditional)
{
inputWriter.WriteLine(command);
feed.Clear();

while(true)
{
if(feed.Count == 0) continue;

UnityEngine.Debug.Log(feed[feed.Count - 1]);
return;

}
}
Я пробовал асинхронные функции, задачи и множество различных способов кодирования, readline, readtoend, readtoendasync, readlineasync, различные команды и модели stockfish, а также однажды попробовал переделать сценарий. Я ожидал, что Stockfish будет правильно общаться с Unity и возвращать выходные данные, которые пишет Stockfish, он просто зависает.

Подробнее здесь: https://stackoverflow.com/questions/790 ... into-unity
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Внедрение Stockfish в Unity
    Anonymous » » в форуме C#
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Невозможно запустить программу «/data/user/0/com.example.chess/files/stockfish-arm64-v8a»: ошибка = 13, разрешение откло
    Anonymous » » в форуме Android
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Stockfish играет очень плохо [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Как сгенерировать FEN-строку и отправить ее в Stockfish?
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Как запустить движок Stockfish в отдельном потоке в моем шахматном графическом интерфейсе Python?
    Anonymous » » в форуме Python
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»