Tải bản đầy đủ (.pdf) (29 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.98 MB, 29 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

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

KHOA CTD

<b>BÁO CÁO ĐỒ ÁN CUỐI KỲ </b>

MƠN <b>HỌC: LẬP TRÌNH CĂN BẢNĐỀ TÀI: LẬP TRÌNH GAME RẮN SĂN MỒI </b>

<b>Giảng viên hướng dẫn: Ngô Hiếu Trường Mã lớp học phần: 24D1TEC55001903 </b>

<b>Nhóm trưởng </b>

Tên

<b>Châu Quỳnh Như </b>

MSSV 31231020555

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

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>Trưởng </b>

nhóm

<b>đánh giá </b>

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.

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

3

<b>MỤC LỤC </b>

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

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>Too long to read onyour phone? Save to</b>

read later on yourcomputer

Save to a Studylist

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

5 DANH <b>MỤC </b>HÌNH <b>ẢNH</b>

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à đ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 tồ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

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

6 C<b>HƯƠNG 1: TỔNG QUAN ĐỀ TÀI VÀ THUẬT TOÁN </b>

I. <b>TỔNG QUAN ĐỀ TÀI </b>

1.<b> ĐẶT VẤN ĐỀ</b>

<b>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 </b>

dụng ngày càng đi sâu, gắn bó chặt chẽ với đời sống. Trong số đó, <b>trị chơi điện tử (game) </b>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 đó,<b> Trị chơi Rắn săn mồi </b>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 “<b>Đề tài game Rắn săn mồi” </b>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.<b> MỤC TIÊU DỰ ÁN</b>

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.<b> THUẬT TỐN</b>

<b>3.1. Ngơn ngữ lập trình Python [1] [2] </b>

a.<b> Giới thiệu chung về Python</b>

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 chun biệt cho bất kỳ vấn đề cụ thể nào.

<b>b. Lợi ích mà Python mang lại </b>

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

7

<i><b>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, </b></i>

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

<i><b>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 </b></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.

<i><b>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 </b></i>

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

<i><b>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ư </b></i>

Java, C và C++.

<i><b>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 </b></i>

hàng triệu người ln 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.

<i><b>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ư </b></i>

Windows, macOS, Linux và Unix.

<b>3.2. Giới thiệu về Pygame [2] </b>

a.<b> Khái quát về Pygame</b>

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>b. Tính năng chính </b>

<i><b>Đồ 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 </b></i>

đồ họa,...

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

<i><b>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ụ. </b></i>

<b>c. Ưu điểm của Pygame </b>

<b>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 </b>

theo ý muốn.

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>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 </b>

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

<b>Hạn chế thiết kế: ít cơng cụ vẽ. </b>

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

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.

<b>● 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ệ. </b>

❖ <b>Về mặt Đồ họa (Graphically)</b>

Đồ 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.

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

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

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

I. <b>GIỚI THIỆU NHÂN VẬT [3] </b>

Hình 1. Con r n. ắ

<b>1.1. Cập nhật thư viện Pygame [4] </b>

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.

<b>1.2. Hàm khởi tạo màn hình game [3] [4] </b>

Để 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

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="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.<b> CÁC ĐỐI TƯỢNG RẮN VÀ CON MỒI </b>[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 tố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.

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

12

<b>2.1. Tạo rắn [3] </b>

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.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

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

<b>2.2. Tạo con mồi (trái táo) [3] </b>

<i><b>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 </b></i>

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.

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

14

<i><b>2.2.2. Đồ họa mồi </b></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 vng 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.<b> HÀM XỬ LÝ VA CHẠM </b>

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

<i><b>3.1.1. Di chuyển rắn </b></i>

Ở 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.

</div>

×