-

Gửi bởi
taipscode
Xin cho hỏi các bác cao thủ về lập trình cờ tướng , hiện nay có các engine GGchess.exe , xqms.exe ...; làm thế nào mình có thể viết chương trình để chạy các engine này không vậy , nếu được các bác có thể help được không ạ ....

Có phải ý bạn là viết một cái chess GUI, tức là một cái giao diện đồ hoạ chạy bao bên ngoài các chương trình cờ (engine)? Nếu đúng vậy thì tôi tóm tắt thế này:
- Các chương trình cờ (engine) là các chương trình ở dạng terminal/console, tức là các chương trình được điều khiển qua bàn phím và in ra màn hình dạng chữ. Chúng không có đồ hoạ
- Các chess GUI (Graphical User Interface) là các chương trình dạng đồ hoạ, hiện hình bàn cờ, điều khiển bằng chuột... như các chương trình bình thường trên Windows
- Các chess GUI này sẽ chạy các engine trong lòng của nó, bắt và phân tích tất cả những gì chúng in ra để hiểu chúng đang làm gì rồi hiện, hay đi quân cờ tương ứng. Khi người dùng dùng chuột đi quân, các chess GUI này sẽ chuyển thành đoạn text và chuyển cho engines để điều khiển chúng, giống như người ta bấm bàn phím
Viết chess GUI rất vất vả vì người viết phải biết, rành tạo chương trình đồ hoạ, lại phải biết cách điều khiển engine sao cho đúng. Nếu bạn thông thạo cách tạo các chương trình trên Windows và sẵn sàng bỏ nhiều thời gian vào đây thì mới nên bắt đầu.
-

Gửi bởi
chezz
Có phải ý bạn là viết một cái chess GUI, tức là một cái giao diện đồ hoạ chạy bao bên ngoài các chương trình cờ (engine)? Nếu đúng vậy thì tôi tóm tắt thế này:
- Các chương trình cờ (engine) là các chương trình ở dạng terminal/console, tức là các chương trình được điều khiển qua bàn phím và in ra màn hình dạng chữ. Chúng không có đồ hoạ
- Các chess GUI (Graphical User Interface) là các chương trình dạng đồ hoạ, hiện hình bàn cờ, điều khiển bằng chuột... như các chương trình bình thường trên Windows
- Các chess GUI này sẽ chạy các engine trong lòng của nó, bắt và phân tích tất cả những gì chúng in ra để hiểu chúng đang làm gì rồi hiện, hay đi quân cờ tương ứng. Khi người dùng dùng chuột đi quân, các chess GUI này sẽ chuyển thành đoạn text và chuyển cho engines để điều khiển chúng, giống như người ta bấm bàn phím
Viết chess GUI rất vất vả vì người viết phải biết, rành tạo chương trình đồ hoạ, lại phải biết cách điều khiển engine sao cho đúng. Nếu bạn thông thạo cách tạo các chương trình trên Windows và sẵn sàng bỏ nhiều thời gian vào đây thì mới nên bắt đầu.
Bác nói đúng rùi đấy ,vấn đề đồ họa thì không quan trọng (cái này dễ) ,chủ yếu là làm sao chạy được file engine.exe và nguyên lý hoạt động của file này .(có thể dùng c# hay vb.net,visual c++ ,hay ngôn ngữ nào thông dụng cũng được ..)
Lần sửa cuối bởi taipscode, ngày 23-04-2020 lúc 08:57 AM.
-

Gửi bởi
taipscode
Bác nói đúng rùi đấy ,vấn đề đồ họa thì không quan trọng (cái này dễ) ,chủ yếu là làm sao chạy được file engine.exe và nguyên lý hoạt động của file này .(có thể dùng c# hay vb.net,visual c++ ,hay ngôn ngữ nào thông dụng cũng được ..)
Nếu bạn viết được các GUI dễ thì đã được 50% rồi đó. Giờ chỉ còn bỏ công bỏ sức vào nữa thôi 
1) Cần phải chạy được các engine cờ và phải bắt được chúng in ra cái gì, đồng thời ta phải đưa được các lệnh điều khiển (dạng text) cho các engine đó. Cái kỹ thuật chạy chương trình này trong lòng chương trình kia gọi là chạy pipe
2) Các engine cờ không in "lung tung" ra màn hình, lệnh điều khiển đưa vào cho chúng cũng không "lung tung". Thực chất chúng theo các quy định của cờ máy. Tập hợp các lệnh/quy định đó gọi là Protocol. Hiện có hai protocol phổ biến, có tên là Winboard protocol và UCI protocol. Người viết GUI phải nắm được các protocol này
Nắm được 2 cái trên, rồi viết chương trình đồ hoạ cho chúng nữa là xong 
Ngày xưa việc 1) là rất khó vì phải nắm sâu hệ thống và có nhiều thứ rất tỷ mỷ. Bây giờ dễ hơn nhiều bởi vì có khá nhiều thư viện, open source giúp cho việc này.
Còn dễ hơn nữa, chess GUI dạng open source giờ trên Internet cũng rất nhiều. Đủ loại ngôn ngữ lập trình: C, C++, C#, Pascal, Python, JavaScript... Giờ chỉ cần bạn tìm hiểu rồi chọn một cái phù hợp, sau đó sửa theo ý mình là xong. Nhiều GUI không có phần Cờ tướng thì có thể thêm vào => 30% công việc nữa 
Bản thân tôi cũng đã viết và cho trên github một chương trình cờ dùng để quản lý và thi đấu cho các engine. Chương trình này cho cờ Vua, không có đồ hoạ nhưng thực hiện được các công việc quan trọng nhất: chạy được các engine trong lòng nó, hiểu được cả Winboard và UCI protocol, cho các engine này thi đấu với nhau và lấy kết quả. Tôi cũng không tự viết cái việc (1) mà dùng một thư viện mở có tên là TinyProcess.
Chương trình của tôi có tên là Banksia. Mã nguồn ở đây:
https://github.com/nguyenpham/Banksia
Good luck!
Lần sửa cuối bởi chezz, ngày 23-04-2020 lúc 10:09 AM.
-

Gửi bởi
chezz
Nếu bạn viết được các GUI dễ thì đã được 50% rồi đó. Giờ chỉ còn bỏ công bỏ sức vào nữa thôi
1) Cần phải chạy được các engine cờ và phải bắt được chúng in ra cái gì, đồng thời ta phải đưa được các lệnh điều khiển (dạng text) cho các engine đó. Cái kỹ thuật chạy chương trình này trong lòng chương trình kia gọi là chạy pipe
2) Các engine cờ không in "lung tung" ra màn hình, lệnh điều khiển đưa vào cho chúng cũng không "lung tung". Thực chất chúng theo các quy định của cờ máy. Tập hợp các lệnh/quy định đó gọi là Protocol. Hiện có hai protocol phổ biến, có tên là Winboard protocol và UCI protocol. Người viết GUI phải nắm được các protocol này
Nắm được 2 cái trên, rồi viết chương trình đồ hoạ cho chúng nữa là xong
Ngày xưa việc 1) là rất khó vì phải nắm sâu hệ thống và có nhiều thứ rất tỷ mỷ. Bây giờ dễ hơn nhiều bởi vì có khá nhiều thư viện, open source giúp cho việc này.
Còn dễ hơn nữa, chess GUI dạng open source giờ trên Internet cũng rất nhiều. Đủ loại ngôn ngữ lập trình: C, C++, C#, Pascal, Python, JavaScript... Giờ chỉ cần bạn tìm hiểu rồi chọn một cái phù hợp, sau đó sửa theo ý mình là xong. Nhiều GUI không có phần Cờ tướng thì có thể thêm vào => 30% công việc nữa
Bản thân tôi cũng đã viết và cho trên github một chương trình cờ dùng để quản lý và thi đấu cho các engine. Chương trình này cho cờ Vua, không có đồ hoạ nhưng thực hiện được các công việc quan trọng nhất: chạy được các engine trong lòng nó, hiểu được cả Winboard và UCI protocol, cho các engine này thi đấu với nhau và lấy kết quả. Tôi cũng không tự viết cái việc (1) mà dùng một thư viện mở có tên là TinyProcess.
Chương trình của tôi có tên là Banksia. Mã nguồn ở đây:
https://github.com/nguyenpham/Banksia
Good luck!
Cái tui mún biết là :
nguyên lý hoạt động của file engine ggchess.exe hay xqms.exe .
1. input thông tin(có thể là tọa độ các quân cờ runtimes )
2. output thông tin (tọa độ của nước đi hay nhất ,ví dụ (b2,e2):pháo 2 bình 5)
Còn các thứ linh ta linh tinh , như bác nói là lung tung đó ,có lẽ không cần thiết ,vì không phù hợp mục đích . Ví dụ như làm robot đánh cờ thì không cần đồ họa làm gì(goi là form thì đúng hơn) ,sourcecode cờ vua có sẵn trên planetsourcecode.com từ 20 năm nay rùi ,tui cũng có .
Cuối cùng là chém gió thời nào cũng có
Lần sửa cuối bởi taipscode, ngày 23-04-2020 lúc 04:53 PM.
-

Gửi bởi
taipscode
Cái tui mún biết là :
nguyên lý hoạt động của file engine ggchess.exe hay xqms.exe .
1. input thông tin(có thể là tọa độ các quân cờ runtimes )
2. output thông tin (tọa độ của nước đi hay nhất ,ví dụ (b2,e2):pháo 2 bình 5)
Còn các thứ linh ta linh tinh , như bác nói là lung tung đó ,có lẽ không cần thiết ,vì không phù hợp mục đích . Ví dụ như làm robot đánh cờ thì không cần đồ họa làm gì(goi là form thì đúng hơn) ,sourcecode cờ vua có sẵn trên planetsourcecode.com từ 20 năm nay rùi ,tui cũng có .
Cuối cùng là chém gió thời nào cũng có

tôi vừa quay lại đọc những thành tích của bác này. Thấy bác ấy là người khá là có trình độ. Ông chắc gì đã hơn người ta mà kêu là chém gió ? Tôi thấy ông chỉ gây war trên diễn đàn là giỏi
-

Gửi bởi
oogwayx
tôi vừa quay lại đọc những thành tích của bác này. Thấy bác ấy là người khá là có trình độ. Ông chắc gì đã hơn người ta mà kêu là chém gió ? Tôi thấy ông chỉ gây war trên diễn đàn là giỏi
Tui thấy ở đây toàn là dân lập trình ,nên người ta cần hỏi gì thì trả lời cái nấy ,còn không thì thui ,chứ nói linh tinh làm gì
-

Gửi bởi
taipscode
Cái tui mún biết là :
nguyên lý hoạt động của file engine ggchess.exe hay xqms.exe .
1. input thông tin(có thể là tọa độ các quân cờ runtimes )
2. output thông tin (tọa độ của nước đi hay nhất ,ví dụ (b2,e2):pháo 2 bình 5)
Còn các thứ linh ta linh tinh , như bác nói là lung tung đó ,có lẽ không cần thiết ,vì không phù hợp mục đích . Ví dụ như làm robot đánh cờ thì không cần đồ họa làm gì(goi là form thì đúng hơn) ,sourcecode cờ vua có sẵn trên planetsourcecode.com từ 20 năm nay rùi ,tui cũng có .
Cuối cùng là chém gió thời nào cũng có

Tôi đã trả lời các câu hỏi của bạn theo cái hiểu của tôi. Bình thường nếu có chỗ nào không hiểu thì chúng ta đều có thể trao đổi lại và nói rõ ý mình. Đó là cách các diễn đàn dựa trên tình bạn và tri thức hoạt động.
Điều đáng tiếc là bạn là bạn đã tỏ ra thiếu tôn trọng và khiêu khích người khác một cách không cần thiết. Chả lẽ làm người lịch sự lại khó thế sao???
Felicity - sự trở lại của Saola, hay Ký sự phiêu lưu tại Giải cờ máy Thế giới Đài Loan
Đánh dấu