1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo bài tập lớn Đề tài lập trình game cờ vua

16 2 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Lập trình game cờ vua
Tác giả Bùi Đức Đại, Nguyễn Thế Dương, Đỗ Mạnh Cường, Thái Đức Huy, Bùi Thiên Thái
Người hướng dẫn Nguyễn Quỳnh Chi
Trường học Học viện công nghệ bưu chính viễn thông
Chuyên ngành Lập trình Python
Thể loại báo cáo bài tập lớn
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 16
Dung lượng 1,62 MB

Nội dung

- Các thư viện GUI và đồ họa:  PyQt6 - Framework GUI để tạo giao diện người dùng  Pygame - Thư viện để tạo giao diện game và xử lý đồ họa - Các thư viện Python tiêu chuẩn:  random

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

BỘ MÔN LẬP TRÌNH PYTHON

BÁO CÁO BÀI TẬP LỚN

Đề tài : Lập trình game Cờ Vua

Giảng viên: Nguyễn Quỳnh Chi Nhóm môn học: 03

Nhóm Bài tập lớn: 02

Sinh viên thực hiện:

Hà Nội – 2024

Trang 2

Mục lục

I GIỚI THIỆU ĐỀ TÀI: 1

II CÔNG NGHỆ VÀ THƯ VIỆN SỬ DỤNG: 1

III CẤU TRÚC TRÒ CHƠI CÁC CLASS VÀ CHỨC NĂNG TRONG GAME: 1

1 Các file py chính 1

a ChessStart.py: 1

b LearnMode.py: 2

c ChessMain.py: 2

d ChessMainAI.py: 3

e ChessEngine.py: 3

f ChessTemp.py: 4

g FindAI1.py: 4

h Main.py 5

i login.py 5

j register.py 5

2 Các file.ui chính 5

a ChessStart.ui : 5

b LearnMode.ui : 5

c register.ui: 5

d login.ui : 5

IV GIAO DIỆN VÀ DEMO HỆ THỐNG: 6

3 Giao diện bắt đầu 6

4 Chế độ “Chơi với máy” và “Chơi 2 người” 9

5 Giao diện trò chơi khi ở chế độ “Learn Mode”: 13

V Phân chia công việc 14

Trang 3

I GIỚI THIỆU ĐỀ TÀI:

- Game cờ vua diễn ra trên một bàn cờ gồm 8x8 ô vuông, với mỗi người chơi điều khiển 16 quân cờ thuộc một trong hai màu (trắng hoặc đen) Mục tiêu của trò chơi

là chiếu hết (checkmate) vua của đối phương, khiến vua không thể thực hiện nước

đi hợp lệ nào để thoát khỏi bị chiếu

- Nhóm người chơi:

 Những người mới chơi - hướng dẫn cơ bản, chơi với AI dễ, gợi ý nước đi hợp

lệ

 Chế độ chơi 2 người giúp người chơi có thể giao lưu học hỏi với nhau dễ dàng

II CÔNG NGHỆ VÀ THƯ VIỆN SỬ DỤNG:

liệu MySQL Ứng dụng sử dụng MySQLdb để lưu trữ và truy xuất thông tin người dùng, bao gồm tên người dùng và mật khẩu

- Các thư viện GUI và đồ họa:

 PyQt6 - Framework GUI để tạo giao diện người dùng

 Pygame - Thư viện để tạo giao diện game và xử lý đồ họa

- Các thư viện Python tiêu chuẩn:

 random - Để tạo các nước đi ngẫu nhiên cho AI

 threading - Xử lý đa luồng

 subprocess - Thực thi và quản lý các tiến trình con

 sys - Cung cấp các biến và hàm liên quan đến hệ thống

III CẤU TRÚC TRÒ CHƠI CÁC CLASS VÀ CHỨC NĂNG

TRONG GAME:

1 Các file py chính

a ChessStart.py:

- Tạo màn hình khởi động với 3 chế độ: Play Computer, 2 People, Learn Mode

 class Ui_MainWindow: lớp chịu trách nhiệm thiết lập giao diện chính của ứng dụng Bao gồm hình nền, các nút điều khiển (QPushButton) và tiêu đề (QLabel)

Trang 4

 Phương thức setupUI: dùng để thiết lập giao diện và kết nối sự kiện

ChessMain.py và ChessMainAI.py

b LearnMode.py:

- Tạo 1 giao diện học tập với các bài học hướng dẫn về cách chơi cờ vua

 Class Ui_MainWindow: Lớp này định nghĩa giao diện và các chức năng cho chế

độ học tập

 Nhóm "DI CHUYỂN":

Nút như Tốt, Tượng, Hậu, v.v được kết nối với các bài học tương ứng (Pawn.py, Bishop.py, Queen.py, )

 Nhóm "KIỂM TRA":

Nút như Chiếu, Chiếu tướng, Thoát khỏi chiếu được kết nối với các tệp kiểm tra tình huống (Check.py, Check1.py, )

 Nhóm "KHÁI NIỆM CƠ BẢN":

Học cách bắt quân hoặc ký hiệu thông qua các tệp riêng (Capturing.py, Notation.py)

 Nhóm "DI CHUYỂN ĐẶC BIỆT":

Hỗ trợ học các nước đi đặc biệt như nhập thành (Kingside.py, Queenside.py), phong cấp (Promotion.py), bắt tốt qua đường (EnPassant.py)

những nút bấm, click vào nút, sẽ mở file python tương ứng

c ChessMain.py:

Sử dụng cho chế độ 2 người khởi tạo các giá trị cố định như kích thước bàn cờ, số

ô vuông, màu sắc của các ô, tốc độ khung hình(FPS), và images lưu trữ các ảnh quân cờ

 lớp ChessTemp là một module được nhập vào từ tệp ChessTemp.py và đóng vai trò quan trọng trong việc xử lý logic của trò chơi

 Các hàm như drawBoard(), drawPieces(), highlightSquare() giúp vẽ lại bàn cờ, các quân cờ, và tô màu các ô đã chọn, ô hợp lệ để di chuyển

nếu có thăng cấp (promotion), người chơi sẽ chọn quân cờ mới qua các ô thăng cấp

Trang 5

 showTurn() hiển thị lượt đi hiện tại (Trắng hay Đen) trên màn hình, cùng với các thông báo như "Check" nếu một bên bị chiếu, hoặc thông báo kết thúc trò chơi (checkmate, stalemate)

 Hàm checkBackButtonClick: Kiểm tra nếu người chơi nhấn nút "Back" trong menu trò chơi

 animateMove() xử lý hoạt ảnh di chuyển quân cờ từ ô cũ đến ô mới

d ChessMainAI.py:

Sử dụng cho chế độ chơi với máy khởi tạo các giá trị cố định như kích thước bàn

cờ, số ô vuông, màu sắc của các ô, tốc độ khung hình(FPS), và images lưu trữ các ảnh quân cờ

 ChessMainAI có các hàm tương tự như ChessMain và có thêm các hàm:

 Hàm choose_difficulty: Chứa vòng lặp cho phép người chơi chọn độ khó (mức

1 hoặc mức 2) Sau khi người chơi chọn độ khó, thông tin sẽ được trả về

 AI Move Logic (FindAI1): một module FindAI1 với các hàm như findBestMove

và findRandomMove để AI thực hiện các nước đi AI có thể chọn giữa hai mức

độ khó: một mức dễ và một mức khó (dựa trên chiến lược tìm kiếm nước đi tốt nhất hoặc tìm ngẫu nhiên)

e ChessEngine.py:

Xây dựng một game engine cờ vua hoàn chỉnh, quản lý trạng thái trò chơi, sinh nước

đi và luật chơi cờ

 lớp GameState: quản lý logic và trạng thái trò chơi.Nó lưu trữ các thông tin cần thiết để mô tả 1 ván cờ:

 Bàn cờ: Được biểu diễn bằng một ma trận hai chiều, mỗi phần tử chứa thông tin

về quân cờ ở ô đó

 Lượt đi: Xác định xem quân trắng hay quân đen đang đi

 Lịch sử các nước đi: Lưu trữ các nước đi đã thực hiện để có thể quay lại các bước trước đó

 Vị trí của các quân cờ: Đặc biệt là vị trí của vua, để xác định các tình huống chiếu, chiếu hết

 Các quy tắc đặc biệt: Như nhập thành, bắt tốt qua đường,

 Trạng thái của ván cờ: Đang diễn ra, hòa, chiếu hết

 Các hàm chính

Trang 6

o makeMove: Thực hiện một nước đi, cập nhật trạng thái của bàn cờ và các thông tin liên quan

o undoMove: Hủy bỏ nước đi cuối cùng, đưa bàn cờ về trạng thái trước đó

o getValidMoves: Tìm tất cả các nước đi hợp lệ cho quân cờ đang đi

o inCheck, checkmate, stalemate: Kiểm tra các tình huống chiếu, chiếu hết

và hòa

o Các hàm getPawnMoves, getRookMoves, : Tìm các nước đi hợp lệ cho từng loại quân

 lớp Move: đại diện cho 1 nước đi trong cờ vua Lớp này lưu thông tin về nước

đi, bao gồm vị trí bắt đầu và kết thúc, quân cờ đang di chuyển, quân bị bắt, và các cờ đặc biệt như thăng cấp quân tốt, en passant, hay castling (nhập thành)

f ChessTemp.py:

 ChessTempMain: kế thừa từ lớp GameState và khởi tạo bàn cờ với các quân cờ

cơ bản, chỉ có quân tốt được đặt trên bàn cờ Các quân còn lại được giữ nguyên như trong một trò chơi cờ vua tiêu chuẩn

GameState và chỉ định một bàn cờ đặc biệt với một quân cờ duy nhất:

 Các lớp tình huống đặc biệt (Check, Stalemate, Promotion, EnPassant ) Những lớp này mô phỏng các tình huống đặc biệt trên bàn cờ

 Lớp ChessTempMove: Lớp này kế thừa từ lớp Move và bổ sung một số tính năng tùy chỉnh

o init : Khởi tạo một nước đi với vị trí bắt đầu và kết thúc, và bàn cờ

o getChessNotation: Phương thức này ghi đè phương thức gốc từ lớp Move để thay đổi ký hiệu cờ vua cho nước đi

o displayMoveDetails: Phương thức này hiển thị chi tiết về nước đi, bao gồm thông tin về vị trí bắt đầu và kết thúc của nước đi

g FindAI1.py:

Lớp này dùng để tính toán và chọn nước đi tốt nhất trong cờ vua dựa trên vật chất, xét tới cả phản ứng của đối thủ

sách các nước đi hợp lệ

Trang 7

 findBestMove(gs, validMoves): Hàm này tìm nước đi tốt nhất cho người chơi hiện tại bằng cách đánh giá các nước đi có thể có

 scoreMaterial(board): Hàm này tính toán điểm số của bàn cờ hiện tại dựa trên giá trị của các quân cờ Điểm số của các quân cờ được xác định trong pieceScore

h Main.py

 Đây là tệp cốt lõi xử lý logic trò chơi chính và luồng giữa các màn hình

 Nó quản lý các trạng thái và tương tác khác nhau trong trò chơi, bao gồm cả việc chơi với máy tính, chơi với người khác và chế độ học tập

 Nó cũng xử lý logic đăng nhập, đăng ký, thêm người dùng mới vào cơ sở dữ liệu và chuyển đổi giữa các màn hình

i login.py

 Tệp này tạo ra màn hình đăng nhập mà người dùng nhìn thấy

 Nó có các trường để người dùng nhập tên người dùng và mật khẩu của họ

 Nó không thực hiện logic đăng nhập thực tế, nó chỉ gửi thông tin đăng nhập đến Main.py khi người dùng nhấp vào nút đăng nhập

j register.py

 Tệp này tạo ra màn hình đăng ký

 Nó cho phép người dùng tạo tài khoản mới bằng cách nhập tên người dùng, mật khẩu và xác nhận mật khẩu

 Nó cũng xử lý việc thêm người dùng mới vào cơ sở dữ liệu

2 Các file.ui chính

a ChessStart.ui :

Giao diện sau khi đăng nhập game

b LearnMode.ui :

Giao diện của chế độ học tập

c register.ui:

Giao diện của phần đăng ký tài khoản

d login.ui :

Giao diện của phần đăng nhập tài khoản

Trang 8

IV GIAO DIỆN VÀ DEMO HỆ THỐNG:

3 Giao diện bắt đầu

Các hình ảnh giao diện trò chơi:

 Giao diện trò chơi khi mới bắt đầu là màn hình giao diện đăng nhập trò chơi:

 Màn hình giao diện đăng ký tài khoản:

Trang 9

 Màn hình thông báo lỗi khi không đăng kí thành công:

 Màn hình thông báo khi đăng nhập thành công:

Trang 10

 Sau khi đăng nhập: màn hình giao diện hiện ra giao diện với 3 chế độ cho người dùng lựa chọn:

1 Chế độ: “Play computer”: chế độ chơi với máy

2 Chế độ: “2 peoples” : chế độ đối kháng giữa 2 người chơi

3 Chế độ: “Learn mode”: giúp người chơi hiểu rõ hơn về luật chơi chuẩn trong

cờ vua

Trang 11

4 Chế độ “Chơi với máy” và “Chơi 2 người”

Đối với Chế độ “Chơi với máy” thì giao diện sẽ hiện ra : Có 2 chế độ khó tương ứng với 2 nút chọn Người chơi có thể chọn 1 trong 2 để tiếp tục trò chơi

Trang 12

 Giao diện khi bắt đầu 2 chế độ chơi, giao diện lượt chơi bên trắng

 Đến lượt trắng hay đen hiện ở bên phải, khi trắng đi sẽ đến lượt đen:

 Giao diện bàn cờ khi con tốt được phong:

Trang 13

 Giao diện khi 1 trong 2 bên bị đối phương chiếu tướng:

 Giao diện bàn cờ khi 1 trong 2 bên thắng và kết thúc trò chơi:

Trang 14

 Màn hình giao diện khi 2 bên hòa nhau:

Trang 15

5 Giao diện trò chơi khi ở chế độ “Learn Mode”:

Màn hình sẽ hiện ra từng bảng tương ứng với từng nội dung, luật chơi cơ bản cho từng con

cờ

 Giao diện khi bấm vào bảng con tốt:

Trang 16

 Bấm Next để đọc nội dung, khi hiển thị hình ảnh ngón tay trỏ vào thì có thể di chuyển quân cờ đang trỏ:

 Hiển thị các nút:

o Nút “ back”: trở lại phần giao diện trước đó

o Nút “next” : chuyển tiếp đến phần nội dung tiếp theo (nếu có), trở về màn hình giao diện learn mode ( nếu không có nội dung tiếp theo)

V Phân chia công việc

Nguyễn Thế Dương Lên ý tưởng, thiết kế giao diện; xử lý thuật toán,logic của

trò chơi

Bùi Đức Đại Xử lý thuật toán, logic của trò chơi; làm báo cáo

Đỗ Mạnh Cường Xử lý thuật toán, logic của trò chơi; làm báo cáo

Thái Đức Huy Xử lý thuật toán, logic của trò chơi; làm báo cáo

Bùi Thiện Thái Xử lý thuật toán, logic của trò chơi; làm báo cáo

-

Ngày đăng: 01/12/2024, 15:02

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w