Lập trình Game đánh cờ vua trên Console

Em là sv năm 1, và đồ án môn Kỹ thuật lập trình của em là làm Game đánh cờ vua trên Console, loay hoay nãy giờ nên quyết định lên đây nhờ mọi người tư vấn giúp là em là cần chuẩn bị kỹ thuật gì để làm ạ ? :smile:, em có coi cái topic trước thì cũng có người hỏi rồi cơ mà bên OOP còn em thì chưa học OOP. :slight_smile: , em cảm ơn trước.

1 Like

Em làm bằng ngôn ngữ gì? Nếu làm console thì em phải làm một số thứ liên quan đến xóa, vẽ lại console thôi. Anh nghĩ là em có thể bắt đầu với việc nghĩ ra cách vẽ một bàn cờ lên console trước

4 Likes

Bằng C anh ạ… :slight_smile: em thì định làm như thế này

  1. làm Menu.
  2. vẽ bàn cờ vua.
  3. Xác định thuật toán.
  4. bắt phím
1 Like

làm bước 4 trước bước 3 đi :slight_smile: Em tính cho 2 người đánh hay đánh với máy

2 Likes

Cho 2 người đánh ạ, :slight_smile: chứ cờ vua em còn chả biết chơi, bây giờ em đang Google để tìm các nước đi của mấy con cờ :slight_smile:

1 Like

E có code của anh bên Pháp nhưng là 1 ngừoi đánh và bằng Pascal :wink:

4 Likes

Làm cho 2 người chơi trước đi. Còn 1 người chơi với máy thì lên mạng tìm open source về gắn vào :smiley: Còn về thuật toán tìm đường đi thì nên tự nghĩ ra.

4 Likes

Em đang làm đây :slight_smile: em lên GG đọc cách chơi cờ vua gần 1 tiếng… bây giờ em đang vẽ bàn cờ.

1 Like

Ko biết chơi cờ vua thì sao ko làm game khác bạn nhỉ, như cờ tướng ấy. :wink:

1 Like

Trước hết là làm bàn cờ, và tạo hiệu ứng hình ảnh khi nhấn phím mũi tên di chuyển (Tới ô nào thì ô đó đổi màu chẳng hạn).
Bạn nên tạo một class cho mỗi loại quân cờ để mô phỏng quân cờ đó.
Có lẽ nên tự làm thêm một class Point và cho class quân cờ kế thừa class Point này, để quản lý vị trí của quân cờ trên bàn cờ.
Trong class mỗi loại quân có thể thêm 1 hàm như point_reachable là những vị trí mà khi quân cờ được chọn có thể di chuyển tới được. Và khi nhấn Enter để chọn quân cần đi thì sẽ có thêm hiệu ứng những ô mà quân cờ đó có thể đến đổi màu luôn …
Trong class quân cờ thì cho nó thêm một thuộc tính is_removed kiểu bool để check xem quân cờ đã bị luộc hay chưa.

Những thứ mình nói trên có thể gói gọn trong 1 class Player. Trong class Player vừa quản lý số quân cờ, và 1 trường có tên là my_turn kiểu bool. Một hàm setMyTurn quản lý lượt chơi. Sau khi đi 1 lượt thì

my_turn = !my_turn;

Sau đó thì tạo 2 đối tượng thuộc lớp Player rồi chơi thôi.


Góp ý chút về ý tưởng vậy thôi, chứ mình chưa từng làm cái này nên không biết.
7 Likes

Nhứng mà vấn đề là em chưa học tới class :’( cơ mà cũng cảm ơn anh đã giúp :slight_smile: để em tìm hiểu Class.

Nếu bạn làm game cờ vua 2 người chơi thì OK :slight_smile: còn làm game cờ vua 1 người chơi vs Máy tính thì phải chịu khó tìm hiểu về trí thông minh nhân tạo, cụ thể làm “thuật toán min-max cho tro chơi 2 người”.
Mà nói thật, hồi đó cũng làm game trên consolve vài lần, cực nhất phần đồ hoạ :cry:

2 Likes

Đồng cảm… :’( thiết kế menu với lại vẽ bàn cờ ra nữa…

Hình như trong này có hướng dẫn vẽ bàn cờ thì phải

https://helloacm.com/processing/

3 Likes

:smile: Cờ tướng nghe nói thuật còn phức tạp hơn cờ vua.

Em có code Pascal ko biết thớt lấy ko. (hồi trước assembly sau em dịch một số chỗ thành Pascal hết) :wink:

1 Like

Thanks bác, cơ mà đang mò mẫm cũng làm được chút rồi :slight_smile: nên chắc không cần đâu :smiley:

KHTN phải không? Năm nhất mình làm là cờ caro.

=))) dạ vâng ạ… :slight_smile: còn em thì cờ vua với cờ tướng

Tôi thấy có hướng dẫn ở YouTube để làm game đánh cờ vua với C++. Dùng thư viện SFML để tạo bàn cờ và tích hợp với một trong các chess engine có sẵn, 4 phút là xong chương trình cờ vua :slight_smile:

Tuy nhiên, nếu cho mục đích làm đồ án thì bạn vẫn phải tìm hiểu cách để tạo giải thuật cho game của bạn chứ không thể dùng các engine có sẵn. Còn phần đồ họa thì bạn có thể theo hướng dẫn trong YouTube vì cũng khá đơn giản.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?