Tôi nên thực hiện giao thức giao diện nào cho động cơ cờ vua của mình?


8

Tôi đang viết một công cụ cờ vua trong C ++ https://github.com/RomainGoussault/Deepov .

Tôi biết có một số giao thức giao diện ngoài kia (UCI, giao thức Winboard, v.v.) và tôi không biết nên thực hiện giao thức nào. Tôi muốn một điều rằng:

  • cho phép động cơ của tôi chơi các giải đấu trực tuyến
  • có một số GUI cho Linux, Windows và iOS
  • có một số loại tài liệu

Cảm ơn


2
Tại sao lại là Java? Tin tôi đi, bạn sẽ hối hận khi tối ưu hóa động cơ của mình.
Rafiek

Vì tôi biết rõ về Java. Tôi cũng biết rằng Java thực sự chậm so với các ngôn ngữ khác. Tôi có thể chuyển nó sang C ++ sau đó.
Romain

Ok, nhưng tôi khuyên bạn nên chuyển càng sớm càng tốt;)
Rafiek

1
Chuyển sang C ++ đã hoàn tất;)
Romain

Câu trả lời:


9

Chỉ có hai giao thức - UCI và Winboard. Winboard là một giao thức cũ và không thực sự được sử dụng ngày nay. Crafty là công cụ chính duy nhất vẫn hỗ trợ giao thức Winboard, nhưng đó chỉ là do công cụ này cũng rất cũ. UCI là một giao thức mới hơn được phát triển bởi Shredder và được sử dụng ở mọi nơi - Windows, Mac, Linux, Android, iOS, v.v ... UCI thực sự là giao thức duy nhất bạn nên xem xét.

  1. UCI được hỗ trợ ở mọi nơi
  2. Mọi GUI cờ khác ngoài xboard đều hỗ trợ UCI, chẳng hạn như Chessbase, Scid, Arena, v.v. Ngay cả xboard cũng có thể kết nối với động cơ UCI bằng một thứ gọi là Polyglot.
  3. Tài liệu UCI có tại http://wbec-ridderkerk.nl/html/UCIProtocol.html

Winboard đã ít nhiều bị lỗi thời vì giao thức phức tạp hơn UCI sạch hơn. Winboard là một giao thức đã nêu, nó có nghĩa là trạng thái động cơ phụ thuộc vào các lần lặp trước đó, trong khi UCI dễ xử lý hơn khi bạn chỉ phải cung cấp với FEN hiện tại hoặc danh sách di chuyển.


1
Một sửa chữa nhỏ ở trên - GUI cờ như Arena thường không sử dụng FEN để liên lạc các trạng thái trò chơi với UCI. Họ sử dụng danh sách di chuyển từ đầu trò chơi. Điều này cho phép động cơ xử lý chính xác quy tắc di chuyển năm mươi và các tính năng trò chơi khác thường không được giao tiếp đầy đủ với FEN. Giao thức sử dụng FEN tuy nhiên để thiết lập các vị trí trò chơi tùy ý và các vị trí không xác định được toàn bộ danh sách di chuyển. Tuy nhiên, áp phích là chính xác trong tất cả các chi tiết khác.
johnwbyrd

1
@johnwbyrd Tôi đã chỉnh sửa câu trả lời của mình. Cảm ơn.
SmallChess

1
FEN hoạt động tốt cho quy tắc di chuyển năm mươi. Đó là quy tắc lặp lại ba lần gây ra vấn đề.
Kef Schecter

1

Tôi không nghĩ có thể tạo GUI hoặc công cụ như các ứng dụng riêng biệt trong iOS. iOS ngăn không cho một ứng dụng gọi ứng dụng khác như một phần của thiết lập bảo mật. Một tác giả công cụ phải viết GUI và tích hợp nó với công cụ trước khi ông có thể nộp đơn xin Apple phê duyệt để phát hành trên App Store. Điều này cũng có thể đúng với Windows RT. Android có GUI và công cụ.

Ngoài UCI và CECP (Giao thức truyền thông của Chess Engine, tức là winboard / xboard), Chessbase có giao thức độc quyền của riêng mình. Nhiều động cơ mạnh nhất sử dụng UCI, trong khi các lập trình viên khởi đầu khá thường sử dụng CECP.


Điều đó cũng đúng với điện thoại Windows.
SmallChess

-3

Hầu hết các công cụ hỗ trợ GUI trong UCI hoặc Winboard, UCI ngày càng trở thành một tiêu chuẩn và phổ biến hiện nay. Nhưng, thông thường nếu bạn muốn công cụ của mình có thể dễ dàng cắm vào bất kỳ GUI nào (trong Windows hoặc Linux), thì bạn nên có một "exe" hoặc thực thi có thể được chỉ ra bởi các chương trình GUI này. Nếu bạn đang xây dựng công cụ bằng Java, thì tôi không chắc làm thế nào bạn có thể chuyển đổi nó thành một tệp thực thi được GUI sử dụng. Điều tương tự áp dụng để có thể chơi các giải đấu trực tuyến. Ngay cả khi bạn đang dự định cung cấp một loại giao diện dịch vụ web cho công cụ của mình, tôi không nghĩ rằng nó có thể tham gia vào các cuộc thi về động cơ.


Số Java có thể được xây dựng nguyên bản cho .exe. Java không phải luôn luôn chạy trên máy ảo.
SmallChess

Tệp .exe mà bạn đang nói đến là một tệp công cụ. Công cụ phải hỗ trợ UCI hoặc Winboard. Mặt khác, không có GUI cờ nào có thể đọc được từ nó. Tuyên bố của bạn không có ý nghĩa.
SmallChess

Tôi không thể cười trước ý kiến ​​của bạn. Hãy thử chạy một chương trình java mà không cài đặt JRE.
Keshav

1
Nếu bạn đã làm một số chương trình, bạn sẽ tự cười mình. Java có thể được biên dịch thành chương trình gốc.
SmallChess
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.