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 ạ ? , 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. , em cảm ơn trước.
Lập trình Game đánh cờ vua trên Console
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
Bằng C anh ạ… em thì định làm như thế này
- làm Menu.
- vẽ bàn cờ vua.
- Xác định thuật toán.
- bắt phím
làm bước 4 trước bước 3 đi Em tính cho 2 người đánh hay đánh với máy
Cho 2 người đánh ạ, 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ờ
E có code của anh bên Pháp nhưng là 1 ngừoi đánh và bằng Pascal
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 Còn về thuật toán tìm đường đi thì nên tự nghĩ ra.
Em đang làm đây 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ờ.
Ko biết chơi cờ vua thì sao ko làm game khác bạn nhỉ, như cờ tướng ấy.
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.
Nhứng mà vấn đề là em chưa học tới class :’( cơ mà cũng cảm ơn anh đã giúp để em tìm hiểu Class.
Nếu bạn làm game cờ vua 2 người chơi thì OK 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ạ
Đồng cảm… :’( thiết kế menu với lại vẽ bàn cờ ra nữa…
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)
Thanks bác, cơ mà đang mò mẫm cũng làm được chút rồi nên chắc không cần đâu
KHTN phải không? Năm nhất mình làm là cờ caro.
=))) dạ vâng ạ… 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
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.