CHƯƠNG 1 PHÂN TÍCH YÊU CẦU1.1 Phân tích yêu cầu chức năng chi tiết của trò chơi"rắn săn mồi" 1.1.1 Khởi đầu trò chơi Trò chơi bắt đầu với một con rắn nhỏ tại một vị trí ban đầu trên màn
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC
Xây dựng trò chơi con rắn săn mồi
Ngành: CÔNG NGHỆ THÔNG TIN
Giảng viên hướng dẫn: Lê Nguyên Khanh
Nhóm Sinh viên thực hiện:
Họ và tên: Nguyễn Văn Hưng MSSV: 2180602378 Lớp: 21DTHB6
Họ và tên: Nguyễn Chánh Tín MSSV: 2180601599 Lớp: 21DTHB6
Họ và tên: Nguyễn Trung Thành MSSV: 2180605976 Lớp: 21DTHB6
Họ và tên: Nguyễn Sơn Nam MSSV: 2180603516 Lớp: 21DTHB6
Trang 2TP Hồ Chí Minh, 2023
2
Trang 3Trang bìa phụ
Trang 4Lời nói đầu
Trong thời đại số hóa và công nghệ thông tin ngày nay, lập trình game đã trở thành một trong những lĩnh vực phát triển sôi động và hấp dẫn Việc tạo ra những trò chơi điện tử không chỉ đòi hỏi kiến thức về lập trình mà còn đòi hỏi sự sáng tạo, khả năng thiết kế và khả năng giải quyết vấn đề Với tinh thần này, tôi xin trình bày về
đồ án môn học của mình - một trò chơi kinh điển, "Rắn Săn Mồi" (Snake Game).
Mục tiêu
Mục tiêu chính của đồ án này là khám phá và áp dụng các kiến thức lập trình Python và các kỹ thuật liên quan để phát triển một trò chơi rắn săn mồi hoàn chỉnh Đồng thời, tôi muốn tạo ra một trò chơi thú
vị và thú vị để chia sẻ với mọi người.
Lý do chọn đề tài
Lý do tôi chọn đề tài "Rắn Săn Mồi" là bởi trò chơi này đơn giản, nhưng vẫn thách thức và mang tính giải trí cao Nó đã tồn tại từ rất lâu và đã trở thành một biểu tượng của ngành công nghiệp game Tôi muốn thử sức với việc phát triển và tùy chỉnh trò chơi này để tạo ra phiên bản riêng của mình
2
Trang 5MỤC LỤC
CHƯƠNG 1 PHÂN TÍCH YÊU CẦU 5
1.1 Phân tích yêu cầu chức năng chi tiết của trò chơi"rắn săn mồi" 5
1.1.1 Khởi đầu trò chơi 5
1.1.2 Di chuyển con rắn 5
1.1.3 Săn mồi 5
1.1.4 Kết thúc trò chơi 5
1.1.5 Điểm số 5
1.1.6 Điều kiện thắng cuối cùng 5
1.1.7 Khả năng tạm dừng và tiếp tục 5
1.1.8 Màn chơi tiến bộ 5
1.1.9 Giao diện người dùng (UI) 6
1.1.10 Âm thanh và hình ảnh 6
1.1.11 Lưu trạng thái trò chơi 6
1.1.12 Điều chỉnh tốc độ 6
1.1.13 Tính năng thống kê 6
1.1.14 Hướng dẫn và trợ giúp 6
1.1.15 Lựa chọn đa dạng 6
1.2 Phân tích yêu cầu phi chức năng chi tiết của trò chơi rắn săn mồi 6
1.2.1 Giao diện người dùng (UI) 6
1.2.2 Âm thanh và hiệu ứng âm thanh 7
1.2.3 Lưu trạng thái trò chơi 7
1.2.4 Điểm số cao nhất 7
1.2.5 Điều chỉnh tùy chọn 7
1.2.6 Thông báo và hướng dẫn 7
1.2.7 Tùy chỉnh đồ họa 7
1.2.8 Chế độ chơi đa dạng 7
1.2.9 Thống kê và nâng cấp 7
1.2.10 Hỗ trợ đa nền tảng 8
1.2.11 Bảo mật và quyền riêng tư 8
1.2.12 Tùy chỉnh điều khiển 8
1.2.13 Cải thiện hiệu suất 8
1.2.14 Chia sẻ kết quả 8
1.2.15 Lựa chọn định dạng lưu trữ 8
CHƯƠNG 2 THIẾT KẾ TRÒ CHƠI 9
2.1 Thiết kế màn hình trò chơi "Rắn Săn Mồi" chi tiết 9
3
Trang 62.1.1 Màn hình chính (Main Screen) 9
2.1.2 Màn hình kết thúc (Game Over Screen) 9
2.2 Luồng hoạt động 10
2.2.1 Khởi tạo Trò Chơi 10
2.2.2 Bắt Đầu Vòng Lặp Chính 10
2.2.3 Xử Lý Sự Kiện 10
2.2.4 Di Chuyển Con Rắn 10
2.2.5 Kiểm Tra Va Chạm 10
2.2.6 Ăn Mồi 10
2.2.7 Tăng Điểm Số 10
2.2.8 Cập Nhật Màn Hình 11
2.2.9 Kiểm Tra Điều Kiện Kết Thúc 11
2.2.10 Kết Thúc Trò Chơi 11
2.2.11 Chơi Lại Hoặc Thoát 11
2.2.12 Kết Thúc Vòng Lặp Chính 11
CHƯƠNG 3 LẬP TRÌNH TRÒ CHƠI 12
3.1 Sử dụng Python và Pygame 12
3.1.1 Cài đặt Pygame 12
3.1.2 Import các thư viện cần thiết 12
3.1.3 Khởi tạo Pygame 12
3.1.4 Thiết lập màn hình và cửa sổ 12
3.1.5 Định nghĩa các biến và hằng số 13
3.1.6 Tạo lớp cho rắn và mồi 13
3.1.7 Xử lý sự kiện 13
3.1.8 Cập nhật trạng thái trò chơi 13
3.1.9 Vẽ đồ họa lên màn hình 14
3.1.10 Hiển thị điểm số và trạng thái 14
3.1.11 Cập nhật màn hình 14
3.1.12 Điều chỉnh tốc độ 14
3.1.13 Xử lý va chạm và điều kiện thắng/thua 14
3.1.14 Chạy trò chơi 14
3.1.15 Kết thúc trò chơi 14
3.2 Lập trình các chức năng chính 14
CHƯƠNG 4 FULL SOURCE CODE 16
CHƯƠNG 5 KIỂM TRA VÀ SỬA LỖI 17
CHƯƠNG 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 18
6.1 Kết luận 18
6.2 Hướng Phát Triển Tiềm Năng 18
4
Trang 8CHƯƠNG 1 PHÂN TÍCH YÊU CẦU
1.1 Phân tích yêu cầu chức năng chi tiết của trò chơi"rắn săn mồi" 1.1.1 Khởi đầu trò chơi
Trò chơi bắt đầu với một con rắn nhỏ tại một vị trí ban đầu trên màn hình.Một mồi xuất hiện ngẫu nhiên ở vị trí khác trên màn hình
1.1.2 Di chuyển con rắn
Người chơi điều khiển con rắn bằng các phím mũi tên (lên, xuống, trái, phải).Con rắn di chuyển liên tục theo hướng đã chọn và không thể quay đầu lại ngay lập tức
Hiển thị điểm số hiện tại của người chơi trên màn hình
Ghi lại điểm số cao nhất đã đạt được và hiển thị nó trên màn hình
1.1.6 Điều kiện thắng cuối cùng
Trò chơi có thể được thiết lập với điều kiện thắng cuối cùng, chẳng hạn như đạt được một điểm số cố định hoặc độ dài tối đa cho con rắn
Trang 91.1.9 Giao diện người dùng (UI)
Giao diện người dùng đơn giản và dễ sử dụng
Hiển thị thông tin như điểm số hiện tại, điểm số cao nhất và bất kỳ thông báo nào (thắng cuộc, thua cuộc, tạm dừng)
1.1.10 Âm thanh và hình ảnh
Trò chơi có thể đi kèm với âm thanh và hình ảnh để làm cho trải nghiệm chơi game thú vị hơn
1.1.11 Lưu trạng thái trò chơi
Có khả năng lưu trạng thái của trò chơi để người chơi có thể tiếp tục sau khi thoát khỏi trò chơi và khởi động lại nó
Thiết kế giao diện người dùng thân thiện, sáng sủa và dễ sử dụng
Sử dụng hình ảnh, màu sắc và biểu tượng để làm cho giao diện trò chơi hấp dẫn hơn
7
Trang 101.2.2 Âm thanh và hiệu ứng âm thanh
Bổ sung âm thanh và hiệu ứng âm thanh cho các sự kiện quan trọng như ăn mồi,rắn va chạm, hoặc thắng cuộc
Cho phép người chơi tắt hoặc điều chỉnh âm lượng
1.2.3 Lưu trạng thái trò chơi
Có khả năng lưu trạng thái hiện tại của trò chơi, bao gồm điểm số, độ dài của con rắn, và vị trí của mồi
Người chơi có thể tiếp tục trò chơi từ trạng thái đã lưu khi khởi động lại trò chơi
1.2.6 Thông báo và hướng dẫn
Cung cấp thông báo và hướng dẫn để hỗ trợ người chơi hiểu cách chơi và quy tắc của trò chơi
1.2.7 Tùy chỉnh đồ họa
Cho phép người chơi tùy chỉnh hình ảnh của con rắn, mồi hoặc môi trường chơi
1.2.8 Chế độ chơi đa dạng
Cung cấp các chế độ chơi khác nhau, chẳng hạn như chế độ hai người chơi, chế
độ kiểu chơi thời gian, hoặc chế độ vượt qua cấp độ
Trang 111.2.10 Hỗ trợ đa nền tảng
Đảm bảo trò chơi có khả năng hoạt động trên nhiều nền tảng và kích thước mànhình khác nhau
1.2.11 Bảo mật và quyền riêng tư
Bảo đảm an toàn thông tin cá nhân của người chơi (nếu có) và tuân thủ các quy định về quyền riêng tư
1.2.12 Tùy chỉnh điều khiển
Cho phép người chơi tùy chỉnh phím điều khiển hoặc sử dụng bộ điều khiển nếu cần
1.2.13 Cải thiện hiệu suất
Tối ưu hóa trò chơi để đảm bảo nó hoạt động mượt mà và không gây lag trên các thiết bị khác nhau
Trang 12CHƯƠNG 2 THIẾT KẾ TRÒ CHƠI
2.1 Thiết kế màn hình trò chơi "Rắn Săn Mồi" chi tiết
2.1.1 Màn hình chính (Main Screen)
Môi trường chơi
Màn hình chính là nền lưới với ô vuông đại diện cho môi trường chơi
Môi trường chơi có thể có kích thước cố định hoặc thay đổi tùy theo mức độ khócủa trò chơi
Các ô vuông có kích thước cố định và màu sắc
Con rắn
Con rắn là một loạt các ô vuông đại diện cho thân rắn
Đầu của con rắn có màu sắc khác biệt hoặc có biểu tượng để phân biệt.Con rắn có thể di chuyển qua các ô vuông và nở ra khi ăn mồi
Mồi
Mồi là một ô vuông có màu sắc hoặc biểu tượng khác biệt để nhận diện.Mồi xuất hiện ngẫu nhiên trên màn hình chính sau khi con rắn ăn mồi trước đó.Mồi biến mất khi con rắn ăn và xuất hiện ở vị trí mới
Điểm số
Điểm số của người chơi được hiển thị ở một góc của màn hình chính
Điểm số tăng lên sau mỗi lần ăn mồi
Có thể hiển thị điểm số cao nhất của người chơi (đã lưu trữ)
Trang 13Hiển thị điểm số cao nhất của người chơi.
Nút
Màn hình này cung cấp nút để bắt đầu lại trò chơi hoặc quay lại màn hình chính
2.2 Luồng hoạt động
2.2.1 Khởi tạo Trò Chơi
Trò chơi bắt đầu với con rắn ban đầu và một mồi được đặt ở vị trí ngẫu nhiên trên màn hình
Sự kiện di chuyển của người chơi (bằng các phím mũi tên)
Sự kiện tạm dừng trò chơi (nếu có)
2.2.4 Di Chuyển Con Rắn
Con rắn liên tục di chuyển theo hướng đã chọn, bao gồm:
Dịch chuyển đầu của con rắn theo hướng di chuyển
Dịch chuyển các phần thân của con rắn theo phần trước của nó
2.2.5 Kiểm Tra Va Chạm
Trò chơi kiểm tra xem con rắn có va chạm với:
Biên của màn hình (kết thúc trò chơi nếu va chạm)
Bản thân (kết thúc trò chơi nếu va chạm)
Mồi (thực hiện bước sau nếu ăn được mồi)
2.2.6 Ăn Mồi
Nếu đầu của con rắn va chạm vào mồi, mồi biến mất
Con rắn trở nên dài hơn một đơn vị bằng cách thêm một phần thân mới vào phía sau đuôi của nó
2.2.7 Tăng Điểm Số
Sau mỗi lần ăn mồi, điểm số của người chơi tăng lên
11
Trang 14Có thể hiển thị điểm số hiện tại của người chơi trên màn hình.
2.2.8 Cập Nhật Màn Hình
Màn hình trò chơi được cập nhật để hiển thị trạng thái mới của trò chơi sau mỗi bước của vòng lặp chính
2.2.9 Kiểm Tra Điều Kiện Kết Thúc
Trò chơi kiểm tra các điều kiện để xác định khi nào trò chơi kết thúc:
Người chơi chọn thoát trò chơi
Con rắn va chạm vào biên của màn hình hoặc bản thân
Người chơi đạt được một điều kiện cụ thể (ví dụ: đạt được điểm số cố định)
2.2.10 Kết Thúc Trò Chơi
Khi trò chơi kết thúc, hiển thị màn hình kết thúc với thông báo về kết quả (thắngcuộc hoặc thua cuộc)
Hiển thị điểm số của người chơi và điểm số cao nhất (nếu có)
Cung cấp nút để bắt đầu lại trò chơi hoặc thoát khỏi trò chơi
2.2.11 Chơi Lại Hoặc Thoát
Người chơi có thể chọn chơi lại trò chơi từ đầu hoặc thoát khỏi trò chơi để quay lại màn hình chính hoặc thoát ra ngoài
2.2.12 Kết Thúc Vòng Lặp Chính
Khi người chơi quyết định thoát khỏi trò chơi hoặc chọn chơi lại, vòng lặp chínhkết thúc và trò chơi quay lại bước khởi tạo để bắt đầu một trò chơi mới
12
Trang 15Đầu tiên, bạn cần cài đặt thư viện Pygame bằng cách sử dụng pip Mở
Command Prompt hoặc Terminal và chạy lệnh sau:
3.1.2 Import các thư viện cần thiết
Bạn cần import thư viện Pygame và một số thư viện khác cho việc quản lý đồ họa và sự kiện Dưới đây là các import cơ bản:
3.1.3 Khởi tạo Pygame
Trước khi bạn có thể sử dụng Pygame, bạn cần khởi tạo nó bằng lệnh sau:
3.1.4 Thiết lập màn hình và cửa sổ
Bạn cần tạo một cửa sổ để hiển thị trò chơi Dưới đây là ví dụ về cách thiết lập màn hình:
13
Trang 163.1.5 Định nghĩa các biến và hằng số
Bạn cần định nghĩa các biến và hằng số quan trọng cho trò chơi, chẳng hạn như kích thước ô vuông, tốc độ di chuyển của rắn, và màu sắc:
3.1.6 Tạo lớp cho rắn và mồi
Bạn cần tạo lớp (class) để đại diện cho con rắn và mồi trong trò chơi Lớp này sẽchứa thông tin về vị trí, hình dạng, màu sắc và hành vi của chúng
3.1.7 Xử lý sự kiện
Sử dụng vòng lặp chính để xử lý các sự kiện như sự kiện thoát khỏi trò chơi hoặc sự kiện di chuyển của người chơi Sử dụng Pygame để kiểm tra và xử lý các sự kiện này:
3.1.8 Cập nhật trạng thái trò chơi
Trong vòng lặp chính, cập nhật trạng thái của trò chơi bao gồm việc di chuyển rắn, kiểm tra va chạm, ăn mồi, cập nhật điểm số, và hiển thị trạng thái trò chơi trên màn hình
14
Trang 173.1.9 Vẽ đồ họa lên màn hình
Sử dụng Pygame để vẽ đồ họa của trò chơi lên màn hình dựa vào trạng thái hiện tại của trò chơi, chẳng hạn như vị trí của con rắn và mồi
3.1.10 Hiển thị điểm số và trạng thái
Sử dụng Pygame để hiển thị điểm số và trạng thái trò chơi lên màn hình
3.1.13 Xử lý va chạm và điều kiện thắng/thua
Thêm xử lý va chạm để xác định khi nào trò chơi kết thúc và người chơi thắng hoặc thua
3.1.14 Chạy trò chơi
Cuối cùng, chạy trò chơi bằng cách gọi pygame.display.update() để cập nhật màn hình và pygame.time.Clock().tick(snake_speed) để kiểm soát tốc độ trò chơi
Trang 18CODE xử lý va chạm với mồi và biên màn hình
CODE tạo và vẽ đồ họa cho con rắn ,mồi và điểm số
CODE ghi điểm số cao nhất vào tệp
16
Trang 19CHƯƠNG 4 FULL SOURCE CODE
Lược Đồ Quan Hệ
Full Source Code
17
Trang 20CHƯƠNG 5 KIỂM TRA VÀ SỬA LỖI
18
Trang 21CHƯƠNG 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
6.1 Kết luận
Hoàn Thiện Trò Chơi Cơ Bản: Trò chơi hiện tại là một phiên bản đơn giản với các tính năng cơ bản như di chuyển, va chạm, và điểm số Nó có thể được xem
là một bước khởi đầu để xây dựng một trò chơi hoàn chỉnh hơn
Thử Nghiệm và Làm Chay: Trò chơi cần được thử nghiệm rộng rãi để đảm bảo tính ổn định và trải nghiệm tốt cho người chơi
Tích Hợp Âm Thanh và Đồ Họa: Thêm âm thanh và đồ họa sẽ làm cho trò chơi trở nên hấp dẫn hơn Bạn có thể thêm âm thanh khi con rắn ăn mồi, khi game over, hoặc khi đạt được điểm số cao nhất
Tùy Chỉnh và Tối Ưu Hóa: Cho phép người chơi tùy chỉnh cấu hình như tốc độ của con rắn, kích thước màn hình, hoặc mức độ khó khăn
6.2 Hướng Phát Triển Tiềm Năng
Thêm Tính Năng Đa Người Chơi: Thêm tính năng cho phép nhiều người chơi cùng tham gia trong một trận đấu, có thể là chế độ chia sẻ màn hình hoặc trực tuyến
Mở Rộng Lược Đồ và Mồi: Tạo lược đồ lớn hơn và nhiều loại mồi khác nhau đểtạo thêm sự đa dạng trong trò chơi
Hệ Thống Điểm Số Cao Nhất Trực Tuyến: Tích hợp một hệ thống trực tuyến để người chơi có thể xem và so sánh điểm số cao nhất với người chơi khác trên toàn cầu
Phát Triển Trên Nền Tảng Di Động: Chuyển đổi trò chơi để hoạt động trên các nền tảng di động, ví dụ như iOS và Android, và phát hành trên các cửa hàng ứngdụng
Thêm Các Yếu Tố Trò Chơi Nâng Cao: Xem xét thêm các yếu tố trò chơi nâng cao như vật phẩm thu thập, kẻ thù, hoặc mức độ chơi phức tạp hơn
Hỗ Trợ Bàn Điều Khiển: Cho phép người chơi sử dụng bàn điều khiển ngoài để điều khiển con rắn
19
Trang 22Điều Chỉnh Giao Diện Người Dùng: Cải thiện giao diện người dùng, thêm menuchính, menu tùy chỉnh và giao diện người dùng thân thiện hơn.
Sáng Tạo Trong Thiết Kế Đồ Họa: Thêm sự sáng tạo vào thiết kế đồ họa của con rắn, mồi và nền
Chăm Sóc Cộng Đồng: Lắng nghe ý kiến của người chơi và cải thiện trò chơi dựa trên phản hồi từ cộng đồng
Phát Triển Kế Hoạch Kinh Doanh: Nếu bạn có ý định phát triển trò chơi thành một dự án thương mại, hãy xem xét kế hoạch kinh doanh và tiếp thị để thu hút người chơi và kiếm lợi nhuận
20
Trang 23TÀI LIỆU THAM KHẢO
21