o Đăng ký tài khoản mới, đăng nhập, cập nhật thông tin tài khoản Đăng ký tài khoản mới Đăng nhập vào hệ thống Cập nhật thông tin tài khoản o Chức năng chơi game Cứ một cặp user
Trang 1Bộ Giáo Dục Và Đào Tạo Trường Đại Học Ngoại Ngữ - Tin Học Thành Phố Hồ Chí Minh
Khoa Công Nghệ Thông Tin
MÔN HỌC : LẬP TRÌNH MẠNG
ĐỀ TÀI : XÂY DỰNG TRÒ CHƠI CỜ VUA
Giảng Viên Hướng Dẫn : PHẠM PHÚ THIỆN Thành Viên:
1 Ngô Thế Đức – MSSV: 22DH114504
Tp Hồ chí minh, Ngày 24 Tháng 7 năm 2024
Trang 2Nhận xét của giảng viên
Trang 3
Lời cảm ơn
Kính gửi Giảng Viên Hướng Dẫn : Phạm Phú Thiện,
Chúng tôi, nhóm sinh viên của lớp 233123045403, xin được gửi lời cảm ơn chân thành đến thầy vì sự hướng dẫn tận tâm và chuyên nghiệp trong quá trình thực hiện
đồ án lập trình mạng
Trước khi được thầy hướng dẫn, chúng tôi đã gặp nhiều khó khăn và bối rối trong việc xác định và triển khai các bước cần thiết để hoàn thành đồ án
Tuy nhiên, sự hỗ trợ tận tâm của thầy đã giúp chúng tôi vượt qua những khó khăn
đó một cách hiệu quả
Thầy đã không chỉ giúp chúng tôi hiểu rõ hơn về quy trình làm đồ án, mà còn truyền đạt những kiến thức quan trọng và kinh nghiệm thực tế từ những dự án đã từng tham gia Nhờ đó, chúng tôi đã có thể áp dụng những kiến thức đó vào đồ án của mình
Không chỉ là một giảng viên, thầy còn là một người đồng hành tận tụy và đáng tin cậy trong suốt quá trình thực hiện đồ án Thầy luôn sẵn lòng lắng nghe và trả lời những câu hỏi của chúng tôi một cách chi tiết và rõ ràng Thầy đã tạo ra một môi trường học tập tích cực và khích lệ chúng tôi tự tin thể hiện ý kiến và ý tưởng của mình
Chúng tôi biết rằng những kiến thức và kỹ năng mà chúng tôi đã học được từ thầy
sẽ có giá trị lớn trong sự nghiệp và cuộc sống của chúng tôi Chúng tôi sẽ luôn ghi nhớ những lời khuyên và chỉ dẫn của thầy để ngày càng trở nên giỏi hơn và đóng góp tốt hơn cho ngành nghề của mình
Một lần nữa, chúng tôi xin chân thành cảm ơn thầy Thành vì sự hướng dẫn tận tâm
và những đóng góp quý báu của thầy trong quá trình thực hiện đồ án Thầy là một người giảng viên xuất sắc và đáng ngưỡng mộ
Chúng tôi chúc thầy luôn khỏe mạnh, thành công trong công việc và có thêm nhiều niềm vui trong cuộc sống
Trân trọng,
Lớp: 233123045403
Trang 5Mục lục
Contents
I Mở đầu: 8
1 Giới thiệu đề tài: 8
2 Mục tiêu nghiên cứu: 8
3 Phạm vi nghiên cứu: 8
II Phân tích yêu cầu: 8
1 Yêu cầu chức năng: 8
2 Các kịch bản sử dụng: 9
III Thiết kế hệ thống: 9
1 Kiến trúc hệ thống: 9
2 Thiết kế chi tiết: 10
IV Mã nguồn: 13
1 Môi trường phát triển: 13
2 Cấu trúc mã nguồn: 13
3 Quá trình cài đặt và triển khai: 13
V Đánh giá và kết luận: 13
1 Kết quả thực thực hiện: 13
2 Kết luận: 13
3 Hạn chế: 13
4 Hướng phát triển: 13
VI Tài liệu tham khảo: 13
Trang 6Danh mục từ viết tắt
1
2
Trang 7I Mở đầu:
1 Giới thiệu đề tài:
Cờ vua là một trò chơi trí tuệ lâu đời với lịch sử phát triển hàng ngàn năm, phổ biến rộng rãi trên toàn thế giới Nó không chỉ là một trò chơi giải trí đơn thuần mà còn là một môn thể thao trí tuệ, giúp rèn luyện tư duy logic, khả năng tập trung, giải quyết vấn đề và đưa ra quyết định sáng suốt
Với sự phát triển mạnh mẽ của công nghệ thông tin, việc xây dựng game
cờ vua điện tử đang ngày càng trở nên phổ biến Các game cờ vua điện tử mang đến cho người chơi nhiều lợi ích như:
Tiện lợi: Người chơi có thể dễ dàng chơi cờ vua mọi lúc mọi nơi chỉ với một
thiết bị điện tử có kết nối internet
Giàu tính tương tác: Các game cờ vua điện tử thường có nhiều tính năng
tương tác như: hướng dẫn cách chơi, phân tích nước đi, thi đấu trực tuyến với người chơi khác, giúp người chơi nâng cao trình độ và có thêm hứng thú với trò chơi
Đa dạng: Các game cờ vua điện tử có nhiều biến thể khác nhau, đáp ứng
nhu cầu và sở thích của nhiều đối tượng người chơi
2 Mục tiêu nghiên cứu:
Sử dụng mô hình kết nối giữa Client – Server để tiến hành triển khai trò chơi cờ vua Từ đó cho ta thấy được trực quan cách thức hoạt động của
mô hình Client – Server
Phát triển một hệ thống Client-Server mạnh mẽ, hiệu quả và bảo mật cho game cờ vua điện tử
Mang đến cho người chơi trải nghiệm chơi game mượt mà, ổn định và an toàn
3 Phạm vi nghiên cứu:
Tiến hành kết nối mô hình Client – Server trong mạng LAN
Triển khai kết nối giữa nhiều Client với Server
II Phân tích yêu cầu:
1 Yêu cầu chức năng:
Trang 8o Đăng ký tài khoản mới, đăng nhập, cập nhật thông tin tài khoản
Đăng ký tài khoản mới
Đăng nhập vào hệ thống
Cập nhật thông tin tài khoản
o Chức năng chơi game
Cứ một cặp user đăng nhập sẽ được ghép đôi thành 1 phiên chơi sau khi có xác nhận đồng ý từ cả hai user
Nếu 1 user đăng nhập vào trường hợp lẻ, user sẽ được đưa vào hàng đợi và có thể chọn xem 1 phiên chơi của một cặp bất kỳ User này sẽ tự động được ghép đôi tạo thành 1 phiên chơi mới khi có một user nữa đăng nhập (cần có xác nhận đồng ý từ cả hai user) Trong trường hợp một trong hai user không đồng ý ghép đôi cả hai sẽ được đưa lại vào hàng đợi
và user từ chối ghép đôi sẽ bị trừ 1 điểm thành tích
Mỗi phiên chơi giới hạn trong 10 phút, nếu hết thời gian thì xem như 2 user hỏa Thời gian giới hạn cho mỗi nước đi là
30 giây user nào không đi nước mới trong thời gian giới hạn
sẽ bị xử thua Điểm phiên chơi được tỉnh theo tỉ lệ:
Thắng: cộng 3 điểm
Hòa: cộng 1 điểm
Thua: trừ 1 điểm
Chat nhóm trong khi chơi: giữa người chơi 1 người chơi 2 -người xem
Xem thành tích cá nhân: số trận thắng/thua, tỉ lệ thắng, chuỗi trận thắng thua dài nhất, điểm thành tích (nhóm từ xác định công thức tính điểm thành tích sao cho hợp lý)
Xếp hạng: liệt kẻ thứ hạng tất cả các user đã tham gia dựa trên điểm thành tích: chuỗi trận thẳng: tỉ lệ thắng (cần quan tâm đến trường hợp user mới tham gia vài trận)
o Thống kê được tổng số user.
o Thống kê được số user đang online.
o Block user khỏi hệ thống.
o Ghi log các trận đấu.
Ghi log các user tham gia
Trang 9 Ghi log thời gian chơi
Ghi log thời gian bắt đầu
o Query các thông tin cơ bản
Query user thắng nhiều nhất
Query trận đấu ngắn nhất
4 Các kịch bản sử dụng:
o Đăng kí hoặc đăng nhập
o Tạo và tham gia trò chơi:
Tạo trò chơi mới hoặc tham gia trò chơi hiện có
Chọn chơi với đối thủ người hoặc AI
o Di chuyển quân cờ:
Sử dụng giao diện kéo-thả hoặc nhấp chuột để di chuyển quân cờ
o Ghép đôi người chơi:
Khi hai người chơi đăng nhập cùng lúc, họ sẽ được ghép đôi thành một phiên chơi sau khi cả hai xác nhận đồng ý
Nếu một người chơi đăng nhập mà không có người chơi khác, họ sẽ được đưa vào hàng đợi
o Hàng đợi và xem trận đấu:
Người chơi trong hàng đợi có thể chọn xem một phiên chơi của cặp bất kỳ
Khi có một người chơi mới đăng nhập, cả hai sẽ được ghép đôi và tạo thành một phiên chơi mới sau khi cả hai xác nhận đồng ý
Nếu một trong hai người chơi từ chối ghép đôi, cả hai sẽ được đưa lại vào hàng đợi và người từ chối sẽ bị trừ 1 điểm thành tích
o Các cách kết thúc:
Trang 10 Thời gian giới hạn cho mỗi nước đi là 30 giây Người chơi không đi nước mới trong thời gian giới hạn sẽ bị xử thua
Đầu hàng hoặc thoát trận sẽ bị xử thua
Mỗi phiên chơi giới hạn trong 10 phút Nếu hết thời gian thì xem như hòa
o Tính điểm:
Thắng: +3 điểm
Hòa: +1 điểm
Thua: -1 điểm
o Chat nhóm:
Giữa người chơi 1, người chơi 2 và người xem
o Xem thành tích cá nhân:
Số trận thắng/thua
Tỉ lệ thắng
Chuỗi trận thắng/thua dài nhất
Điểm thành tích (dựa trên tổng từ “tính điểm”)
o Xếp hạng người chơi:
Liệt kê thứ hạng tất cả người chơi đã tham gia dựa trên điểm thành tích
Cân nhắc chuỗi trận thắng và tỉ lệ thắng
Đặc biệt quan tâm đến trường hợp người chơi mới tham gia vài trận
Trang 11III. Thiết kế hệ thống:
1 Kiến trúc hệ thống:
5 Thiết kế chi tiết:
Giao diện người dùng:
Hình 3.1 Bàn cờ vào trận
Trang 12 Thiết kế cơ sở dữ liệu:
Thiết kế các module:
Module Client
o Giao diện người dùng (UI)
Màn hình chính: Tạo/truy cập trò chơi, xem trận đấu, và kiểm tra thành tích
Bàn cờ: Hiển thị bàn cờ và các quân cờ, xử lý các sự kiện di chuyển quân cờ
Thông báo trò chơi: Hiển thị các thông báo về trạng thái trò chơi (chiếu, hòa, hết thời gian)
Chat nhóm: Giao diện chat giữa người chơi và người xem
o Quản lý phiên chơi
Tạo và tham gia trò chơi: Kết nối đến server, tạo và tham gia các trò chơi
Ghép đôi: Quản lý quá trình ghép đôi người chơi
Hàng đợi: Hiển thị danh sách người chơi trong hàng đợi và cung cấp các tùy chọn
o Tính toán thời gian
Đếm ngược thời gian trò chơi: Hiển thị thời gian còn lại cho mỗi phiên chơi và mỗi nước đi
Thông báo hết giờ: Xử lý các thông báo khi hết thời gian
o Hiển thị thông tin cá nhân
Thành tích cá nhân: Hiển thị số trận thắng/thua, tỉ lệ thắng, chuỗi trận thắng/thua dài nhất
Xếp hạng: Hiển thị bảng xếp hạng dựa trên điểm thành tích
Module Server
o Quản lý kết nối
Xử lý kết nối của người chơi: Quản lý kết nối và đăng nhập của người chơi
Đồng bộ hóa trạng thái trò chơi: Đảm bảo rằng tất cả các client có cùng một trạng thái trò chơi
o Quản lý trò chơi
Ghép đôi người chơi: Xử lý quá trình ghép đôi người chơi, bao gồm xác nhận đồng ý từ cả hai người chơi
Trang 13 Tạo và quản lý phiên chơi: Quản lý các phiên chơi, bao gồm thời gian giới hạn và điều kiện kết thúc
o Xử lý nước đi
Nhận và kiểm tra nước đi: Nhận nước đi từ client, kiểm tra tính hợp lệ và cập nhật trạng thái bàn cờ
Xử lý lỗi và bất thường: Phát hiện và xử lý các lỗi hoặc trường hợp bất thường trong trò chơi
o Thống kê và điểm số
Tính điểm: Cập nhật điểm số dựa trên kết quả trận đấu (thắng, hòa, thua)
Cập nhật thành tích và xếp hạng: Cập nhật và duy trì thông tin thành tích và xếp hạng người chơi
o Thuật toán chơi cờ
Thuật toán lựa chọn nước đi: Cài đặt thuật toán AI để lựa chọn nước đi, chẳng hạn như Minimax hoặc Alpha-Beta Pruning
Cấp độ khó: Điều chỉnh độ khó của AI để phù hợp với các trình độ khác nhau
o Xử lý nước đi AI
Tính toán nước đi: Tính toán và đưa ra nước đi của AI dựa trên trạng thái hiện tại của bàn cờ
Gửi nước đi đến client: Gửi nước đi của AI đến client để cập nhật bàn cờ
o Lưu trữ thông tin người chơi
Thông tin tài khoản: Lưu trữ thông tin đăng nhập, điểm số,
và thành tích cá nhân của người chơi
o Lưu trữ trận đấu
Lịch sử trận đấu: Lưu trữ các trận đấu đã hoàn thành và kết quả của chúng
o Cập nhật điểm số và xếp hạng
Điểm thành tích: Lưu trữ và cập nhật điểm thành tích của người chơi
Xếp hạng: Lưu trữ và quản lý bảng xếp hạng người chơi
Trang 14IV Mã nguồn:
1 Môi trường phát triển:
Intellij IDEA
Gradle
JDK
Hệ điều hành Linux/Windows
6 Cấu trúc mã nguồn:
7 Quá trình cài đặt và triển khai:
o Cài Đặt Java Development Kit (JDK):
o Cài Đặt Integrated Development Environment (IDE):
o Tạo Dự Án Mới trong IntelliJ IDEA:
o Viết Mã Nguồn:
o Viết các chức năng cho ứng dụng
o Kiểm Tra:
V Đánh giá và kết luận:
Trang 151 Kết quả thực hiện:
Hình 1.1 Bàn cờ
Hình 1.2 Chọn chế độ
2 Kết luận:
Trò chơi cờ vua với hình thức online, nhiều người chơi cho chúng ta thấy được cái nhìn tổng quan hơn về cách thức hoạt động của của mô hình Client–Server
3 Hạn chế:
Chưa có đăng nhập, đăng kí
Chưa chơi được ngoài mạng
Hạn chế về mặt tìm hiểu công nghệ, nhân lực làm việc, kiến thức chưa đủ dẫn đến trì trệ tiến độ làm việc
Quá trình lên kế hoạch chưa hợp lí dẫn đến không được hoàn thành như mong đợi
Trang 168 Hướng phát triển:
Với những bước hoàn thiện trên tôi đã hướng tới mục tiêu mở rộng hệ thống từ LAN thành WAN
Thiết kế lại trò chơi thành 3D
Tiến hành áp dụng vào các dự án thực tế như nhận diện để bảo mật thông tin người dùng, hệ thống đăng nhập trong các công ty…
VI Tài liệu tham khảo:
https://chatgpt.com/
https://www.youtube.com/@amir650
https://github.com/amir650/BlackWidow-Chess
https://youtu.be/bWKbdPAovFA?si=HHOBjKDYZlEW-R4K
https://youtu.be/eIrMbAQSU34?si=Sg9XW2h0p5uVnhh9