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 5 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

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 Mã lớp học phần: 24D1TEC55001903

Nhóm trưởng

Tên

Châu Quỳnh Như

MSSV 31231020555

Thành phố Hồ Chí Minh, ngày 03 tháng 04 năm 2024

Trang 2

Trưởng

nhóm

đánh giá

Châu Quỳnh Như

31231020555 - Tìm hi u ph n l p trình code : ể ầ ậdi chuy n r n ể ắ

- 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

Lê Huỳnh Như 31231024964 - Tìm hi u ph n l p trình code : ể ầ ậkh i t o màn hình, t o r n ở ạ ạ ắ- Thuy t trình ế

- Chỉnh s a powerpoint ử- Viết báo cáo chương 1.

Nguyễn Song Nhi

31231023696 - Tìm hi u ph n l p trình code : ể ầ ậki m tra các va ch m ể ạ- Sàng l c n i dung cho ọ ộ

powerpoint - D ng video demo ự- Viết báo cáo chương 3.

Huỳnh Ngọc Nga

31231020587 - Tìm hi u ph n l p trình code ể ầ ậ: hi n th s ể ị ố điểm, đồ ọ h a n nề- Thuy trình ết

- Thi t k powerpoint ế ế- Viết báo cáo chương 3.

Nguyễn Lê Quỳnh

31231021297 - Tìm hi u ph n l p trình code : ể ầ ậđồ họa r n và m i ắ ồ

- Thuy t trình ế- Viết báo cáo chương 2.

Nguyễn Hà My 31231027835 - Tìm hi u ph n l p trình code : ể ầ ậtăng độ dài rắn

- Viết báo cáo chương 1.- Thi t k , ch nh s a ế ế ỉ ử

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

Too long to read onyour phone? Save to

read later on yourcomputer

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

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 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 ắ

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

Hình 12.Code đồ ọ h a mồi

Kết quả sau khi chạy chương trình, on mồi được thay thế từ một hình vuông màu xám thành hình ctrái táo sinh động hơn

Hình 13.K t qu h a mế ả đồ ọ ồi 3. HÀM XỬ LÝ VA CHẠM

3.1 Xác định va chạm giữa rắn và thức ăn [3]

3.1.1 Di chuyển rắn

Ở 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