Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Nếu bạn đã thực hiện một số mã hóa Python và muốn viết một trò chơi mà bạn có thể có trên Pygame Zero.
Trong hướng dẫn này, chúng tôi sẽ viết một trò chơi đua xe đơn giản.
Bước 1: Tổng quan rộng
Mô-đun Pygame bổ sung nhiều chức năng giúp bạn viết trò chơi bằng Python.
Pygame Zero tiến thêm một bước nữa để cho phép bạn bỏ qua quá trình rườm rà để tạo tất cả các vòng lặp trò chơi đó và thiết lập cấu trúc chương trình của bạn.
Pygame Zero là một lựa chọn tuyệt vời cho bất kỳ ai muốn bắt đầu viết trò chơi máy tính trên Raspberry Pi hoặc bất kỳ máy Linux nào.
Có thể bạn sẽ cần:
- Máy chạy hệ điều hành Linux
- Trình soạn thảo để viết chương trình python
- Bàn phím
- Một số trí tưởng tượng
Các tập tin:
github.com/AhmNouira/-Racing-Game
Bước 2: Điều kiện tiên quyết
Đầu tiên, tôi sẽ sử dụng máy tính xách tay của mình với hệ điều hành Ubuntu 18.04. Sau đó, chúng tôi sẽ chạy trò chơi trên Raspberry Pi ở bước 8.
Trước khi tiếp tục với hướng dẫn này, hãy đảm bảo rằng bạn đã đăng nhập với tư cách là người dùng có đặc quyền sudo.
Cài đặt pip cho Python 3
Bắt đầu bằng cách cập nhật danh sách gói bằng lệnh sau:
cập nhật apt sudo
Sử dụng lệnh sau để cài đặt pip cho Python 3:
sudo apt cài đặt python3-pip
xác minh cài đặt bằng cách kiểm tra phiên bản pip:
pip3 - phiên bản
Cài đặt Pygame Zero
pip3 cài đặt pgzero --user
Điều này cũng sẽ cài đặt Pygame. Các gói Pygame được biên dịch trước
Vì vậy, bước đầu tiên trong hành trình của bạn sẽ là mở Python 3 IDLE hoặc trình chỉnh sửa python yêu thích của bạn.
Bước 3: "Xin chào thế giới" trong Pygame Zero
Theo mặc định, cửa sổ Pygame Zero mở ra ở kích thước rộng 800 pixel x cao 600 pixel. Bạn có thể tùy chỉnh
kích thước cửa sổ của bạn, có hai biến định sẵn mà bạn có thể đặt, nếu bạn bao gồm WIDTH = 700 HIGH = 800.
Pygame zero cung cấp các chức năng được xác định trước để xử lý vòng lặp trò chơi thường hoạt động:
Hàm draw ()
Chúng ta có thể viết hàm này vào chương trình của mình giống như cách chúng ta thường định nghĩa một hàm trong Python.
Pygame Zero tuân theo các quy tắc định dạng tương tự như Python, vì vậy bạn sẽ cần chú ý để thụt lề mã của mình một cách chính xác.
#! / usr / bin / python3 # đặt trình thông dịch
import pgzrun # import pgzero module WIDTH = 700 # width of the window HEIGHT = 800 # height of the window def draw (): # pygame zero draw function screen.fill ((128, 128, 128)) # lấp đầy màn hình bằng RGB color screen.draw.text ("Hello World!", (270, 320), # draw "Hello World!" color = (255, 255, 255), fontsize = 40) pgzrun.go ()
Trước hết, bạn cần lưu tệp chương trình của mình và đặt tên cho nó.
Sau đó, mở cửa sổ Terminal, đi tới vị trí tệp của bạn và nhập:
./.py
Bước 4: Vẽ diễn viên của bạn
Bây giờ chúng tôi đã thiết lập sân khấu của mình, chúng tôi có thể tạo Diễn viên của mình, họ là các đối tượng động trong Pygame Zero.
Chúng ta có thể tải một Actor bằng cách gõ vào đầu chương trình:
car = Actor ("xe đua")
Trong Pygame Zero, hình ảnh của chúng ta cần được lưu trữ trong một thư mục có tên là hình ảnh, bên cạnh tệp chương trình của chúng tôi. Vì vậy, Actor của chúng tôi sẽ tìm kiếm một tệp hình ảnh trong thư mục hình ảnh có tên là racecar.png. Nó có thể là tệp GIF hoặc JPG, nhưng chúng tôi khuyên bạn nên sử dụng hình ảnh của bạn là tệp-p.webp
Bạn có thể đặt vị trí của nó trên màn hình bằng cách gõ:
car.pos = 350, 560
Sau đó, trong hàm draw (), chúng ta có thể nhập
car.draw () # vẽ xe đua của chúng ta tại vị trí xác định của nó
Toàn bộ chương trình sẽ như thế này:
#! / usr / bin / python3
import pgzrun WIDTH = 700 # chiều rộng của cửa sổ HEIGHT = 800 # chiều cao của ô cửa sổ = Actor ("racecar") car.pos = 350, 560 def draw (): # pygame zero draw function screen.fill ((128, 128, 128)) # điền vào màn hình bằng car.draw () pgzrun.go ()
Kiểm tra chương trình của bạn để đảm bảo rằng chương trình này đang hoạt động.
Bước 5: Kiểm soát tác nhân
Khi chúng ta đã có hình vẽ ô tô trên màn hình, bước tiếp theo là cho phép người chơi di chuyển nó.
Chúng ta có thể làm điều này bằng các phím bấm. Chúng ta có thể đọc trạng thái của các khóa này bên trong một hàm được xác định trước khác được gọi là update ().
Hàm update ()
Chức năng này liên tục được kiểm tra trong khi trò chơi đang chạy.
Chúng ta cần viết một số mã để phát hiện các lần nhấn phím của các phím mũi tên và cũng có thể làm gì đó với nó.
Vì vậy, chúng tôi sẽ thêm chức năng này vào chương trình của chúng tôi
def update ():
if keyboard.left: car.x - = 2 if keyboard.right: car.x + = 2 if keyboard.up: car.y - = 2 if keyboard.down: car.y + = 2
Các dòng mã này sẽ di chuyển xe Actor sang trái, phải, tiến và lùi.
Bước 6: Xây dựng đường đi
Bây giờ chúng ta có một chiếc xe để chúng ta có thể lái, chúng ta cần một đường đi để nó có thể lái tiếp.
Chúng tôi sẽ xây dựng đường đua của mình ngoài Diễn viên, từng hàng một. Chúng tôi sẽ cần lập một số danh sách để theo dõi các Diễn viên mà chúng tôi tạo.
Chúng tôi cũng sẽ cần thiết lập thêm một số biến cho đường đua.
Sau đó, chúng ta hãy tạo một hàm mới có tên makeTrack (), Hàm sẽ thêm một theo dõi Actor ở bên trái và một bên phải, cả hai đều sử dụng hình ảnh bare-p.webp
trackLeft = # danh sách để lưu trữ các barries bên trái
trackRight = # danh sách lưu trữ barries bên phải trackCount = 0 # đếm số lượng barries trackPosition = 350 trackWidth = 150 # width giữa barries bên trái và bên phải def makeTrack (): # hàm tạo một barrie ở bên trái và bên phải trackCount, trackLeft, trackRight, trackPosition, trackWidth trackLeft.append (Actor ("bare", pos = (trackPosition-trackWidth, 0))) trackRight.append (Actor ("bare", pos = (trackPosition + trackWidth, 0))) trackCount + = 1
Điều tiếp theo mà chúng ta cần làm là di chuyển các phần của đường đi xuống màn hình về phía ô tô.
Hãy viết một hàm mới có tên updateTrack (), Hàm này cập nhật vị trí các khối bản nhạc sẽ xuất hiện. Các mảnh bản nhạc được tạo bởi các số ngẫu nhiên nên mỗi lần chơi là khác nhau.
trackDriction = Sai
SPEED = 4 # đặt tốc độ của trò chơi từ nhập ngẫu nhiên randint # nhập lớp randint từ mô-đun ngẫu nhiên def updateTrack (): global trackCount, trackPosition, trackDirection, trackWidth, SPEED b = 0 while b
Vui lòng tham khảo tệp zip bên dưới có tên "RaceGameDemo".
Nếu chúng tôi chạy mã của chúng tôi vào lúc này, chúng tôi sẽ thấy một đường mòn đi xuống phía ô tô. Vấn đề duy nhất là chúng tôi có thể di chuyển chiếc xe qua các rào cản đường ray và chúng tôi muốn giữ chiếc xe bên trong chúng với một số phát hiện va chạm.
Bước 7: Tai nạn ô tô
Chúng tôi cần đảm bảo rằng ô tô của chúng tôi không chạm vào Actors trên đường đua.
chúng tôi cũng có thể kiểm tra các xung đột bằng phương thức colliderect () trong hàm updateTrack () của chúng tôi.
Trong trò chơi này, chúng tôi sẽ có ba trạng thái khác nhau đối với trò chơi được lưu trữ trong trò chơi biến đổi của chúng tôi
- gameStatus == 0 # trò chơi đang chạy
- gameStatus == 1 # vụ tai nạn xe hơi
- gameStatus == 2 # trò chơi đã kết thúc
Chúng ta sẽ cần thay đổi hàm draw () và hàm update () để phản hồi với biến gameStatus.
Kết thúc chạm
Tất cả những gì chúng ta cần làm bây giờ là hiển thị thứ gì đó nếu gameStatus được đặt thành 1 hoặc 2, ví dụ: chúng ta sẽ hiển thị màu đỏ
cờ, nếu chiếc xe bị rơi. Chúng tôi có thể làm điều đó với mã dưới đây:
screen.blit ("redflag", (230, 230))
Để xem chiếc xe đã về đích hay chưa, chúng ta nên đếm xem có bao nhiêu đoạn đường đua đã được tạo và sau đó có lẽ khi chúng ta đến 200, hãy đặt gameStatus thành 2. Sau đó, hiển thị cờ ca rô:
screen.blit ("finishflag", (230, 230))
Chúng tôi cũng sẽ hiển thị một số văn bản trong màn hình như điểm số hiện tại của trò chơi.
Hãy xem danh sách mã đầy đủ để xem tất cả điều này phù hợp với nhau như thế nào.
Bước 8: Chạy trò chơi trên Raspberry Pi
Trên Raspberry Pi pgzero đã được cài đặt theo mặc định kể từ khi phát hành Raspbian Jessie vào tháng 9 năm 2015.
Chỉ cần cập nhật Raspberry Pi của bạn bằng cách sử dụng lệnh:
sudo apt-get cập nhật
Đi tới vị trí tệp của bạn và nhập vào Terminal.
pgzrun.py
Bước 9: Bạn đã thắng?
Bạn có thể làm cho trò chơi trở nên dễ dàng hơn hoặc khó hơn bằng cách thay đổi biến trackWidth để làm cho đường đua có chiều rộng khác. Bạn có thể thay đổi giá trị của SPEED để làm cho đường chạy nhanh hơn hoặc chậm hơn.
Bước 10: Kết luận
Pygame Zero là một lựa chọn tuyệt vời cho bất kỳ ai muốn bắt đầu viết game trên máy tính.
Nếu bạn có bất kỳ câu hỏi nào, tất nhiên bạn có thể để lại bình luận. Để xem thêm về các tác phẩm của tôi, vui lòng truy cập kênh của tôi:
myYouTube
myTwitter
myLinkedin
Cảm ơn vì đã đọc hướng dẫn này ^^ và chúc một ngày tốt lành. Hẹn gặp lại sau. Ahmed Nouira.