1. Trang chủ
  2. » Luận Văn - Báo Cáo

đề tài lập trình game rắn săn mồi

29 7 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 Rắn Săn Mồi
Tác giả Châu Quỳnh Như, Lê Huỳnh Như, Nguyễn Song Nhi, Huỳnh Ngọc Nga, Nguyễn Lê Quỳnh, Nguyễn Hà My
Người hướng dẫn Ngô Hiếu Trường
Trường học Đại học Kinh tế TP. HCM
Chuyên ngành Lập Trình Căn Bản
Thể loại Báo cáo Đồ Án Cuối Kỳ
Năm xuất bản 2024
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 29
Dung lượng 3,1 MB

Nội dung

Thông qua dự án lập trình trò chơi Rắn săn mồi bằng Python và thư viện Pygame, nhóm chúng em mong muốn: Nâng cao hiểu biết và thành thạo hơn trong việc sử dụng ngôn ngữ lập trình Python

Trang 1

ĐẠI HỌC KINH TẾ TP HCM VIỆN ĐỔI MỚI SÁNG TẠO (UII)

KHOA CTD

BÁO CÁO ĐỒ ÁN CUỐI KỲ

MÔN HỌC: LẬP TRÌNH CĂN BẢN

ĐỀ TÀI: LẬP TRÌNH GAME RẮN SĂN MỒI

Giảng viên hướng dẫn: Ngô Hiếu Trường

Trang 2

- Chỉnh sửa, hoàn thi n code vàệ

n i dung báo cáo ộ

- Viết báo cáo chương 2

- Sàng l c n i dung cho ọ ộpowerpoint

Trang 3

3

MỤC LỤC

DANH M C HÌNH Ụ ẢNH Error! Bookmark not defined

CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI VÀ THUẬT TOÁN 6

I TỔNG QUAN ĐỀ TÀI 6

1 ĐẶT VẤN ĐỀ 6

2 M C TIÊU D Ụ Ự ÁN 6

3 THU T TOÁN 6 Ậ 3.1 Ngôn ng l p trình Python 6 ữ ậ 3.2 Gi i thi u v Pygame 7 ớ ệ ề 3.3 Gi i thi u vớ ệ ề trò chơi Rắn săn mồ 8

3.4 Thu t toán c t lõi 8 ậ ố 3.5 Phân tích yêu c u và chầ ức năng game Rắn săn mồi 9

CHƯƠNG 2 : HIỆN THỰC THUẬT TOÁN 10

I GIỚI THI U NHÂN VỆ ẬT 10

II XÁC ĐỊNH CÁC CHỨC NĂNG CẦN THIẾT CỦA TRÒ CHƠI 10

1 KHỞI T O MÀN HÌNH 10 Ạ 1.1 C p nhậ ật thư viện Pygame 10

1.2 Hàm kh i t o màn hình gameở ạ 10

2 CÁC ĐỐI TƯỢNG R N VÀ CON M I 11 Ắ Ồ 2.1 T o r nạ ắ 12

2.2 T o con m i (trái táo)ạ ồ 13

2.2.1 T o mạ ồi và cơ chế ồ m i xu t hi n ng u nhiên trên màn hình 13 ấ ệ ẫ 2.2.2 Đồ họa mồi 14

3 HÀM X LÝ VA CH M 14 Ử Ạ 3.1 Xác định va chạm giữa rắn và thức ăn 14

3.1.1 Di chuy n r n 14 ể ắ 3.1.2 Tương tác giữa rắn và các nút trên bàn phím 16

3.1.3 Tương tác giữa rắn và thức ăn 17

3.2 Ki m tra các va ch m khác 19 ể ạ 3.2.1 Va ch m vào rìa màn hình 19 ạ 3.2.2 R n t va ch m vào thân r n 19 ắ ự ạ ắ 4 CƠ CHẾ GAME OVER 20

Trang 4

4

5 HÀM HI N TH Ể Ị ĐIỂM TRÊN MÀN HÌNH 20

6 HÀM ĐỒ Ọ H A 22

CHƯƠNG 3: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN 26

I K T QU Ế Ả ĐẠT ĐƯỢC 26

II HƯỚNG PHÁT TRI N 26 Ể 1 V giao diề ện và đồ ọ h a 26

2 V lề ối chơi 27

3 V ề thị trường 27

III T NG K T 28 Ổ Ế TÀI LIỆU THAM KHẢO 29

Too long to read on your phone? Save to

read later on your computer

Save to a Studylist

Trang 5

5

DANH MỤC HÌNH ẢNH

Hình 1 Con r n 10 ắ Hình 2 Các phần đồ ọ h a r n 10 ắ Hình 3.Trái táo ( Con m i ) 10 ồ

Hình 4 Code c p nhậ ật thư viện pygame 10

Hình 5 Hàm kh i t o màn hình game 11 ở ạ Hình 6 K t qu màn hình game 11 ế ả Hình 7 Hàm khai báo Vector2 11

Hình 8.Code t o r n 12 ạ ắ Hình 9.K t qu t o r n 13 ế ả ạ ắ Hình 10.Code t o mạ ồi và cơ chế ồ m i xu t hi n ng u nhiên trên màn hình 13 ấ ệ ẫ Hình 11.K t qu t o m 13 ế ả ạ ồi Hình 12.Code đồ ọ h a m 14 ồi Hình 13.K t qu h a m 14 ế ả đồ ọ ồi Hình 14.Mô ph ng các di chuy n r n 15 ỏ ể ắ Hình 15 Code di chuy n r n 15 ể ắ Hình 16 Code di chuy n r n 16 ể ắ Hình 17 Các nút di chuy n 16 ể Hình 18 Tr tụ ọa độ x,y trên màn hình game 17

Hình 19 Code s ự tương tác các nút di chuyển 17

Hình 20 Các hàm nh trong class MAIN 18 ỏ Hình 21 Code ki m tra khi rể ắn ăn mồi 18

Hình 22 Code tăng độ dài c a r n 19 ủ ắ Hình 23 Code tăng độ dài c a r n 19 ủ ắ Hình 24 Ki m tra va ch m rìa màn hình 19 ể ạ Hình 25 Ki m tra r n va ch m vào thân r n 20 ể ắ ạ ắ Hình 26 Cơ chế game_over 20

Hình 27 Cơ chế reset game 20

Hình 28 Minh h a v trí apple trong bọ ị ảng điểm 21

Hình 29 Code đồ ọ h a bảng điểm 21

Hình 30 K t qu h a bế ả đồ ọ ảng điểm 22

Hình 31 Code gắn đồ ọ h a vào các b ph n r n 22 ộ ậ ắ Hình 32 Code đồ ọa đầu và đuôi rắ h n 23

Hình 33 Code đồ ọ h a thân r n 23 ắ Hình 34 Code góc u n c a r n 23 ố ủ ắ Hình 35 Code cơ chế ắn đầu và đuôi rắ g n 24

Hình 36 K t qu h a r n 24 ế ả đồ ọ ắ Hình 37 Code đồ ọ h a n n c 25 ề ỏ Hình 38 K t qu n n c 25 ế ả ề ỏ Hình 39 Top 10 quốc gia có lượng người dùng Facebook nhi u nh t hi n nay 27 ề ấ ệ Hình 40 T lỷ ệ người dùng Internet trên toàn th giế ới chơi trò chơi trên mộ ốt s thi t bế ị được chọn tính đến quý 3 năm 2023 28

Trang 6

6

CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI VÀ THUẬT TOÁN

I TỔNG QUAN ĐỀ TÀI

1. ĐẶT VẤN ĐỀ

Công nghệ phát triển mạnh mẽ đã mang đến cho con người vô vàn tiện ích, và các ứng

dụng ngày càng đi sâu, gắn bó chặt chẽ với đời sống Trong số đó, trò chơi điện tử (game) nổi lên như một loại hình giải trí phổ biến, được ưa chuộng rộng rãi với mọi lứa tuổi Đi kèm theo đó

là hàng loạt trò chơi điện tử có sức sống bền bỉ với thời gian, gắn bó với nhiều thế hệ

Trong đó, Trò chơi Rắn săn mồi là một trong những tựa game kinh điển vẫn tồn tại tới nay Với lối chơi đơn giản, dễ hiểu nhưng đầy tính thử thách, Rắn săn mồi luôn thu hút sự hứng thú và mang đến những giây phút giải trí đầy thú vị

Nhóm chúng em lựa chọn “Đề tài game Rắn săn mồi” với mục tiêu mang đến cho người chơi một trải nghiệm đơn giản, dễ hiểu và dễ tiếp cận

2. MỤC TIÊU DỰ ÁN

Nhận thấy tiềm năng phát triển mạnh mẽ của ngành công nghiệp game, nhóm hướng tới việc tận dụng cơ hội này để mở rộng kiến thức và kỹ năng lập trình Thông qua dự án lập trình trò chơi Rắn săn mồi bằng Python và thư viện Pygame, nhóm chúng em mong muốn:

Nâng cao hiểu biết và thành thạo hơn trong việc sử dụng ngôn ngữ lập trình Python và Pygame Đây là những công cụ quan trọng và phổ biến trong việc phát triển game cũng như chuyên ngành mà nhóm đang học là Công nghệ và đổi mới sáng tạo, giúp nhóm tích lũy thêm nhiều kinh nghiệm và kỹ năng cần thiết trong tương lai

Không những thế, việc tạo ra một trò chơi Rắn săn mồi với các nhân vật được thiết kế bằng

đồ hoạ, mang lại trải nghiệm chơi game thực tế và hấp dẫn hơn cho người chơi Điều này không chỉ giúp nhóm thực hành lập trình mà còn rèn luyện kỹ năng thiết kế và phát triển sản phẩm game

3. THUẬT TOÁN

3.1 Ngôn ngữ lập trình Python [1] [2]

a. Giới thiệu chung về Python

Python là ngôn ngữ lập trình máy tính bậc cao được tạo ra bởi Guido van Rossum, thường được sử dụng để xây dựng trang web và phần mềm, tự động hóa các tác vụ và tiến hành phân tích

dữ liệu Python là ngôn ngữ có mục đích chung, nghĩa là nó có thể được sử dụng để tạo nhiều chương trình khác nhau và không chuyên biệt cho bất kỳ vấn đề cụ thể nào

b Lợi ích mà Python mang lại

Trang 7

7

Là một ngôn ngữ dễ dàng tiếp cận: Python có cú pháp đơn giản, gần gũi với tiếng Anh,

giúp người mới bắt đầu dễ dàng học hỏi và đọc hiểu code

Mang lại năng suất cao: Python cho phép viết chương trình với số lượng mã ít hơn so với

các ngôn ngữ khác Nhờ vậy mà lập trình viên có thể tiết kiệm thời gian và công sức, đồng thời nâng cao hiệu quả công việc

Thư viện phong phú: Python sở hữu một thư viện tiêu chuẩn đồ sộ với nhiều mã nguồn

mở có sẵn cho hầu hết các tác vụ lập trình

Liên kết linh hoạt: Python dễ dàng kết hợp với các ngôn ngữ lập trình phổ biến khác như

Java, C và C++

Cộng đồng hỗ trợ: Python sở hữu cộng đồng lập trình viên năng động và nhiệt tình với

hàng triệu người luôn sẵn sàng hỗ trợ trên khắp thế giới

Tài nguyên phong phú: Internet cung cấp vô số tài nguyên học tập Python miễn phí như video hướng dẫn, tài liệu tham khảo, bài viết blog,… nên chúng ta có thể dễ dàng tìm kiếm nguồn tài liệu phù hợp với trình độ và nhu cầu của bản thân

Khả năng tương thích cao: Python có thể hoạt động trên nhiều hệ điều hành phổ biến như

Windows, macOS, Linux và Unix

3.2 Giới thiệu về Pygame [2]

a. Khái quát về Pygame

Pygame là một thư viện mã nguồn mở miễn phí được sử dụng để phát triển trò chơi điện

tử với ngôn ngữ lập trình Python Nó cung cấp các công cụ mạnh mẽ và dễ sử dụng để tạo ra các trò chơi 2D đa nền tảng từ đơn giản đến phức tạp

b Tính năng chính

Đồ họa: Pygame cung cấp các chức năng vẽ hình ảnh, di chuyển đối tượng, tạo hiệu ứng

đồ họa,

Âm thanh: Pygame hỗ trợ phát nhạc, âm thanh và hiệu ứng âm thanh trong trò chơi

Nhập liệu: Pygame cho phép xử lý các sự kiện từ bàn phím, chuột, joystick,

Đa nền tảng: Pygame có thể chạy trên Windows, Mac, Linux, Android và Raspberry Pi Cộng đồng: Pygame có cộng đồng lớn và tích cực với nhiều tài liệu, hướng dẫn và ví dụ

c Ưu điểm của Pygame

Dễ sử dụng: Pygame có cú pháp đơn giản và dễ học, phù hợp cho cả người mới bắt đầu Linh hoạt: Pygame cung cấp nhiều chức năng và cho phép người dùng tùy chỉnh trò chơi

theo ý muốn

Trang 8

8

Miễn phí: Pygame là mã nguồn mở và miễn phí sử dụng, giúp tiết kiệm chi phí đáng kể

d Nhược điểm của Pygame

Tốc độ thực thi chậm: mặc dù nhanh hơn so với PHP1, nhưng lại không nhanh hơn so với C++, Java

Tiêu thụ bộ nhớ lớn: đòi hỏi nhiều không gian bộ nhớ, không thích hợp để sử dụng cho

sự phát triển trong điều kiện bộ nhớ hạn chế

Hạn chế thiết kế: ít công cụ vẽ

3.3 Giới thiệu về trò chơi Rắn săn mồi [2]

Rắn săn mồi là một ví dụ điển hình cho sự phát triển của trò chơi điện tử, từ đơn giản đến phức tạp, từ đồ họa 2D đến 3D, và từ chơi đơn đến chơi mạng Dưới đây là một số cột mốc quan trọng trong lịch sử phát triển của Rắn săn mồi:

● 1976: Blockade - tiền thân của Rắn săn mồi

● 1977: Snake - phiên bản đầu tiên trên Apple II

● 1980: Nibbler - bổ sung yếu tố thức ăn và tăng tốc độ

● 1990: Rắn săn mồi trên điện thoại di động

● 2000: Phiên bản 3D đầu tiên

● 2010: Đồ họa đẹp mắt, âm thanh sống động, nhiều tính năng mới

● Hiện nay: Phổ biến trên nhiều nền tảng, được yêu thích bởi nhiều thế hệ

Về mặt Đồ họa (Graphically)

Đồ họa (Graphically): là sử dụng các định nghĩa về pixel của những đối tượng và xác định xem nếu có pixel nào chồng lấp (overlap) lập tức là 2 đối tượng va chạm Ngược lại là không Với mỗi đối tượng (object) sẽ có một thành phần (attribute) là mask – gồm những pixel không trong suốt của surface, mỗi pixel sẽ sử dụng 1 bit để xem pixel đó có bị chồng lấp, va chạm không

1Hypertext Preprocessor) là t p h p con c a các ngôn ng ậ ợ ủ ữ script như JavaScript và Python.

Trang 9

9

3.5 Phân tích yêu cầu và chức năng game Rắn săn mồi [2]

YÊU CẦU

● Di chuyển rắn

○ Điều khiển rắn di chuyển theo các hướng: lên, xuống, trái, phải

○ Xử lý di chuyển mượt mà, không bị giật lag

○ Tăng tốc độ di chuyển theo thời gian

● Tạo thức ăn

○ Tạo thức ăn ngẫu nhiên trên màn hình

○ Đảm bảo thức ăn xuất hiện đều đặn

○ Tăng điểm khi rắn ăn thức ăn

○ Hiển thị điểm trên màn hình

● Giao diện

○ Hiển thị rắn, thức ăn và điểm số trên màn hình

○ Giao diện đơn giản, dễ nhìn

CHỨC NĂNG CẦN THIẾT

● Hàm di chuyển rắn

○ Nhận đầu vào từ người chơi (phím mũi tên)

○ Cập nhật vị trí rắn theo hướng di chuyển

○ Xử lý va chạm với các cạnh màn hình

● Hàm tạo thức ăn

○ Tạo thức ăn ngẫu nhiên trên màn hình

○ Xác định vị trí thức ăn không trùng với rắn

○ Tăng điểm khi rắn ăn thức ăn

○ Hiển thị điểm trên màn hình

● Hàm hiển thị

○ Hiển thị rắn, thức ăn và điểm số trên màn hình

Trang 10

10

CHƯƠNG 2 : HIỆN THỰC THUẬT TOÁN

I GIỚI THIỆU NHÂN VẬT [3]

Hình 1 Con r n ắ

Hình 2 Các phần đồ ọ h a r n ắ

Hình 3.Trái táo ( Con m i ) ồ

II XÁC ĐỊNH CÁC CHỨC NĂNG CẦN THIẾT CỦA TRÒ CHƠI

1. KHỞI TẠO MÀN HÌNH

1.1 Cập nhật thư viện Pygame [4]

Sử dụng Python 3.11.8 với pip 24.0 để tải thư viện Pygame bằng câu lệnh “pip install pygame” trên Windows PowerShell Cập nhật thư viện Pygame trong code bằng cách sử dụng cú pháp “import pygame”

Hình 4 Code c p nhậ ật thư viện pygame

1.2 Hàm khởi tạo màn hình game [3] [4]

Để tạo màn hình cho game "Snake game" bằng thư viện Pygame, nhóm đã tham khảo các nguồn và sử dụng hàm display.set_mode() Đồng thời, sử dụng hàm init() và quit() để khởi tạo và hủy khởi tạo mọi thứ ở đầu và cuối chương trình Hàm update() được sử dụng để cập nhật bất kỳ thay đổi nào được thực hiện trên màn hình

Sau đó, tạo 2 biến mới với biến đầu tiên là kích thước ô (cell size) là 40 và biến thứ 2 số ô (cell number) là 20 Theo Clear Code, việc này nhằm giúp các bước lập trình ở những phần tiếp theo linh hoạt hơn trong vị trí của đối tượng Tiếp theo, để thay đổi kích thước của màn hình, dùng pygame.display.set_mode lấy số ô nhân với kích thước ô cho cả x và y để tạo ra màn hình 600*600

Trang 11

11

pixel hoặc 30*20 Tuy nhiên, màn hình này sẽ đóng lại ngay lập tức Để khắc phục vấn đề này, nhóm đã tạo ra vòng lặp cho game bằng cách dùng while trước khi thực sự thoát game.Tiếp theo, sử dụng hàm screen.fill() để đổi màu cho màn hình và lệnh display.set_caption

để đặt tên trên khung hình là Snake Game

Hình 5 Hàm kh i t o màn hình game ở ạKết quả nhận được một màn hình game với kích thước 600*600 pixels, có dòng caption

“Snake Game” và nền có màu

Hình 6 K t qu màn hình game ế ả

2. CÁC ĐỐI TƯỢNG RẮN VÀ CON MỒI [3]

Ở phần này, tạo một class mang tên “Snake” cho đối tượng rắn và một class mang tên

“FRUIT” cho con mồi Trong xuyên suốt quá trình lập trình sẽ sử dụng một lớp gọi là Vector2 Trong Python, Vector2 là một lớp được sử dụng để biểu diễn các vectơ hai chiều Nó được định nghĩa trong thư viện math và có thể được sử dụng để thực hiện các phép toán vectơ cơ bản như cộng, trừ, nhân vô hướng và nhân chéo

Cú pháp khai báo lớp Vector2 từ thư viện math:

Hình 7 Hàm khai báo Vector2

Trang 12

12

2.1 Tạo rắn [3]

Nhóm sử dụng hàm init () để khởi tạo đối tượng rắn Trước tiên, khởi tạo một thân rắn mang tên “self.body” dài 3 block theo Vector2 tại các tọa độ (5,10), (6,10), (7,10) Theo Clear Code, chọn tọa độ này vì nó nằm giữa màn hình nên rắn sẽ dễ nhìn thấy và dễ di chuyển hơn Tiếp theo, tạo một hàm tên “draw_snake”, tại đây nhóm sẽ vẽ đối tượng rắn hiển thị lên màn hình game Đầu tiên, xác định tọa độ của từng phần thân (block) của rắn thành x_pos và y_pos với kiểu dữ liệu integer Block_rect là phạm vi một phần thân rắn, sau đó vẽ phần thân đó bằng lệnh pygame.draw.rect với hệ màu RGB (0,0,0) là màu đen Những lệnh này sẽ áp dụng cho từng phần thân rắn (3 block đã nêu).Để hiển thị 3 block của rắn lên màn hình game, nhóm tạo một đối tượng tên snake cho class SNAKE và vẽ rắn với lệnh “snake.draw_snake()”

Hình 8.Code t o r nạ ắKết quả sau khi chạy chương trình sẽ tạo ra màn hình game với đối tượng rắn màu đen gồm

3 block trên màn hình tại tọa độ được cho trước

Trang 13

13

Hình 9.K t qu t o r nế ả ạ ắ

2.2 Tạo con mồi (trái táo) [3]

2.2.1 Tạo mồi và cơ chế mồi xuất hiện ngẫu nhiên trên màn hình

Lớp “FRUIT” này được tạo ra với nhiệm vụ quản lý các thuộc tính của mồi trong trò chơi Hãy phân tích từng phần của lớp:

Đầu tiên là hàm init (self), đây là phương thức khởi tạo của lớp Nó được gọi khi một thuộc tính mới của lớp `FRUIT` được tạo ra Bên trong phương thức này, hàm “self.randomize()” được gọi để khởi tạo cơ chế ngẫu nhiên của mồi

Tiếp theo đến hàm draw_fruit(self), hàm này chịu trách nhiệm vẽ mồi lên màn hình trò chơi Chương trình sẽ tạo ra một hình chữ nhật biểu diễn vị trí của mồi trên màn hình thông qua lệnh “pygame.Rect” Vị trí của quả được xác định bởi `self.pos`, là một đối tượng `Vector2` Tiếp đến, để hiển thị con mồi lên màn hình game, sử dụng hàm pygame.draw.rect() tương tự như draw_snake với hệ màu RGB (126,166,114)

Cuối cùng, nhóm tạo một đối tượng fruit=FRUIT() và hàm fruit.draw_fruit để chạy chương trình

Hình 10.Code t o mạ ồi và cơ chế mồi xuất hi n ng u nhiên trên màn hình.ệ ẫKết quả sau khi chạy chương trình sẽ tạo ra được con mồi màu xám trên màn hình, mỗi khi chạy chương trình thì con mồi sẽ xuất hiện tại một vị trí ngẫu nhiên

Hình 11.K t qu t o mế ả ạ ồi

Trang 14

14

2.2.2 Đồ họa mồi

Để tạo hình mồi, điều kiện cần có là hình ảnh tượng trưng cho mồi đã tải trước đó Vì thế, chọn hình ảnh trái táo làm mồi nên đã tải hình ảnh đồ họa của táo và đặt trong cùng một thư mục với file lập trình để python có thể nhận diện được địa chỉ của ảnh Sau đó ử dụng hàm spygame.image.load kèm địa chỉ ảnh “apple.png” được lồng ghép bên trong hàm Tiếp theo, nhóm nhập convert_alpha() để xử lý hình ảnh về định dạng phù hợp mà Pygame có thể sử dụng Cuối cùng là thay thế lệnh pygame.draw.rect bằng lệnh screen.blit để vẽ hình ảnh đồ họa lên màn hình

Ở bước này, xác định cơ chế di chuyển của rắn như sau:

1 Phần đầu rắn (self.body[0]) di chuyển đến một block khác

2 Phần thân sau phần đầu rắn sẽ di chuyển đến vị trí cũ của phần đầu rắn

3 Với cơ chế đó, khi rắn trườn đi thì mỗi phần thân rắn sẽ di chuyển đến vị trí cũ của phầnthân trước đó

4 Xóa phần thân rắn cuối cùng

Ngày đăng: 16/06/2024, 15:18

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w