Logo Zephyrnet

Tạo trò chơi đầu tiên của bạn với Python: Trò chơi rắn

Ngày:

Python vừa thú vị vừa dễ sử dụng. Với kho thư viện phong phú, Python làm cho cuộc sống của chúng ta dễ dàng hơn bằng cách đơn giản hóa việc tạo trò chơi và ứng dụng. Trong bài viết này, chúng tôi sẽ tạo ra một trò chơi cổ điển mà nhiều người trong chúng ta có thể đã từng chơi vào một thời điểm nào đó trong đời – trò chơi rắn. Nếu bạn chưa từng trải nghiệm trò chơi này trước đây thì giờ đây là cơ hội để bạn khám phá và tạo ra phiên bản của riêng mình mà không cần phải cài đặt các thư viện nặng nề trên hệ thống. Tất cả những gì bạn cần để bắt đầu tạo trò chơi rắn hoài cổ này là hiểu biết cơ bản về Python và trình soạn thảo mã hóa trực tuyến như repl.it.

Trò chơi rắn là một trò chơi điện tử cổ điển vượt thời gian, trong đó người chơi điều khiển một con rắn dài ra khi nó tiêu thụ thức ăn. Trong quá trình triển khai này, hãy chia nhỏ mã để hiểu cách cấu trúc trò chơi và cách sử dụng thư viện Turtle cho đồ họa và tương tác người dùng.

Mục lục

Sử dụng đồ họa rùa để phát triển trò chơi đơn giản

Đồ họa Rùa thư viện trong Python cung cấp một cách thú vị và mang tính tương tác để tạo hình, vẽ trên màn hình và phản hồi thông tin đầu vào của người dùng. Nó thường được sử dụng cho mục đích giáo dục, dạy các khái niệm lập trình thông qua phản hồi trực quan. Mã này sử dụng Turtle để tạo ra các thành phần trò chơi như con rắn, thức ăn và hiển thị điểm số.

Trình chỉnh sửa mã hóa trực tuyến: Repl.it

Nền tảng mã hóa web có tên Repl.it cho phép bạn phát triển, chạy và cộng tác mã trực tiếp trong trình duyệt web của mình. Nó hỗ trợ nhiều ngôn ngữ lập trình khác nhau và có trình biên dịch và trình thông dịch tích hợp bên cạnh các tính năng như chia sẻ mã, kiểm soát phiên bản và làm việc nhóm. Các nhà phát triển sử dụng rộng rãi nó để học tập, tạo mẫu nhanh và chia sẻ mã vì nó dễ sử dụng và không cần thiết lập.

Thuật toán

Chúng ta hãy bắt đầu xây dựng trò chơi đầu tiên với python. Để làm như vậy chúng ta cần phải làm theo các bước nhất định dưới đây:

Tạo tập tin thay thế

Bước 1: Cài đặt các thư viện cần thiết

Điều này đánh dấu bước đầu tiên trong việc phát triển trò chơi mang tên Snake. Rùa, ngẫu nhiên và thời gian nằm trong số đó.

  • Rùa: Chúng tôi cần thư viện này để tạo đồ họa trong trò chơi của mình. Chúng ta có thể điều khiển chuyển động của thức ăn và con rắn trên màn hình và vẽ chúng.
  • Ngẫu nhiên: Để tạo các vị trí ngẫu nhiên cho món ăn trên màn hình, chúng tôi sử dụng thư viện ngẫu nhiên. Điều này đảm bảo rằng mỗi khi thức ăn được ăn, nó sẽ xuất hiện ở một nơi khác.
  • thời gian: Con rắn di chuyển với độ trễ nhẹ giữa mỗi lần di chuyển nhờ vào thư viện thời gian. Điều này làm cho trò chơi dễ vận hành hơn và thú vị hơn cho người chơi.
import turtle
import time
import random

Bước 2: Thiết lập môi trường trò chơi.

Điều này bao gồm việc thiết lập kích thước của màn hình, thêm nền màu xanh lam và thêm độ trễ nhỏ để đảm bảo quá trình chơi game trôi chảy. Chúng tôi cũng thiết lập các biến như high_score để giữ lại số điểm cao nhất đạt được, point để theo dõi điểm của người chơi và các phân đoạn để theo dõi cơ thể con rắn.

# Initialize the screen
sc = turtle.Screen()
sc.bgcolor("blue")
sc.setup(height=1000, width=1000)
delay = 0.1

# Initialize variables
segments = []
score = 0
high_score = 0
Đầu ra

Bước 3: Tạo con rắn

Đồ vật rùa có hình vuông tượng trưng cho con rắn. Chúng tôi đặt bút ở giữa màn hình (goto(0, 100)), đặt màu của bút thành màu đen, sau đó nâng bút lên để tránh vẽ đường. Ban đầu được đặt thành “dừng”, hướng của con rắn vẫn đứng yên cho đến khi người chơi bắt đầu di chuyển nó.

# Create the snake
snake = turtle.Turtle()
snake.shape("square")
snake.color("black")
snake.penup()
snake.goto(0, 100)
snake.direction = "stop"
Tạo con rắn

Bước 4: Chức năng chuyển động

Chúng ta xác định các hàm chuyển động của con rắn (move()) theo hướng của nó tại thời điểm đó. Các chức năng này kiểm soát khả năng di chuyển lên, xuống, trái và phải của con rắn. Họ di chuyển đầu rắn 20 đơn vị theo hướng thích hợp khi được yêu cầu.

# Functions to move the snake
def move():
    if snake.direction == "up":
        y = snake.ycor()
        snake.sety(y + 20)
    if snake.direction == "down":
        y = snake.ycor()
        snake.sety(y - 20)
    if snake.direction == "left":
        x = snake.xcor()
        snake.setx(x - 20)
    if snake.direction == "right":
        x = snake.xcor()
        snake.setx(x + 20)

Bước 5: Điều khiển rắn

Sử dụng sc.listen() và sc.onkey(), chúng tôi định cấu hình trình nghe chính để điều khiển con rắn. Các thủ tục liên quan (go_up(), go_down(), go_left(), go_right()) thay đổi hướng của con rắn để phản hồi lại các lần nhấn phím trên bàn phím w, s, a hoặc d.

# Functions to link with the keys
def go_up():
    snake.direction = "up"

def go_down():
    snake.direction = "down"

def go_left():
    snake.direction = "left"

def go_right():
    snake.direction = "right"

# Listen for key inputs
sc.listen()
sc.onkey(go_up, "w")
sc.onkey(go_down, "s")
sc.onkey(go_left, "a")
sc.onkey(go_right, "d")

Bước 6: Tạo món ăn

Thức ăn được thể hiện bằng một vật thể rùa hình tròn có màu đỏ. Ban đầu được đặt ở tọa độ (100, 100), nó đóng vai trò là mục tiêu cho rắn ăn. Khi con rắn va chạm với thức ăn, nó sẽ “ăn” thức ăn và một con mới sẽ xuất hiện ở một vị trí ngẫu nhiên.

# Create the food
food = turtle.Turtle()
food.shape("circle")
food.color("red")
food.penup()
food.goto(100, 100)

Tạo thức ăn

Bước 7: Hiển thị điểm

Một vật rùa (bút) hiển thị số điểm của người chơi và số điểm cao nhất đạt được. Thông tin này cập nhật mỗi khi con rắn ăn thức ăn.

# Create the score display
pen = turtle.Turtle()
pen.penup()
pen.goto(0, 100)
pen.hideturtle()
pen.write("Score: 0  High Score: 0", align="center", font=("Arial", 30, "normal")
Hiển thị điểm

Bước 8: Vòng lặp trò chơi chính

Cốt lõi của trò chơi Rắn săn mồi là vòng lặp trò chơi chính. Nó quản lý thông tin đầu vào của người dùng, cập nhật màn hình, di chuyển con rắn, tìm kiếm các va chạm và điều chỉnh cách trò chơi diễn ra. Hãy xem xét các chức năng cụ thể của từng phần của vòng lặp chính một cách chi tiết hơn:

while True:
    sc.update()  # Update the screen
    move()  # Move the snake
    time.sleep(delay)  # Introduce a slight delay for smooth gameplay
  • sc.update() : cập nhật màn hình để phản ánh mọi thay đổi được thực hiện trong trò chơi. Nếu không có tính năng này, màn hình sẽ không được làm mới và người chơi sẽ không thấy con rắn di chuyển hoặc cập nhật điểm số.
  • move(): Chức năng này điều khiển chuyển động của con rắn dựa trên hướng hiện tại của nó. Nó di chuyển đầu con rắn đi 20 đơn vị theo hướng do người chơi nhập vào. Con rắn liên tục di chuyển theo hướng nó được chỉ dẫn lần cuối cho đến khi người chơi thay đổi hướng.
  • time.sleep(delay): đưa ra một độ trễ nhỏ giữa mỗi chuyển động của con rắn. Các delay biến được đặt thành 0.1 ở đầu mã. Mục đích của việc trì hoãn này là để kiểm soát tốc độ của trò chơi. Nếu không có nó, con rắn sẽ di chuyển quá nhanh khiến người chơi không kịp phản ứng, khiến trò chơi trở nên khó chơi.

Ăn thức ăn và nuôi rắn

    if snake.distance(food) < 20:
        x = random.randint(-200, 200)
        y = random.randint(-200, 200)
        food.penup()
        food.goto(x, y)
        food.pendown()

        # Increase the length of the snake
        new_segment = turtle.Turtle()
        new_segment.shape("square")
        new_segment.color("grey")
        new_segment.penup()
        segments.append(new_segment)
        score += 1

        # Update score and high score
        if score > high_score:
            high_score = score
        pen.clear()
        pen.write("Score: {}  High Score: {}".format(score, high_score), align="center", font=("Arial", 30, "normal"))

ăn thức ăn

  • Khi đầu rắn (snake) nằm cách thực phẩm khoảng 20 đơn vị (food), có nghĩa là con rắn đã “ăn” thức ăn.
  • Vị trí của thực phẩm sau đó được đặt lại về vị trí ngẫu nhiên mới trên màn hình bằng cách sử dụng random.randint().
  • Hành động này tạo ra ảo giác thức ăn “xuất hiện trở lại” ở những vị trí khác nhau mỗi lần ăn.

Nuôi thân rắn

  • Khi con rắn ăn thức ăn, mã sẽ thêm một đoạn mới vào cơ thể con rắn để nó lớn lên.
  • Một đối tượng rùa mới (new_segment) được tạo ra, nó trở thành một phần của segments danh sách.
  • Danh sách này theo dõi tất cả các phân đoạn tạo nên cơ thể con rắn.
  • Điểm của người chơi được tăng lên (score += 1) mỗi lần con rắn ăn thức ăn.

Cập nhật điểm

  • Sau khi ăn xong và cập nhật điểm số, màn hình hiển thị điểm số sẽ được cập nhật bằng cách sử dụng pen vật.
  • Sản phẩm pen.clear() chức năng xóa hiển thị điểm trước đó.
  • Sau đó, điểm cập nhật và điểm cao được ghi lên màn hình bằng cách sử dụng pen.write().

Di chuyển cơ thể rắn

    for i in range(len(segments) - 1, 0, -1):
        x = segments[i - 1].xcor()
        y = segments[i - 1].ycor()
        segments[i].goto(x, y)

    # Move the first segment to follow the head
    if len(segments) > 0:
        x = snake.xcor()
        y = snake.ycor()
        segments[0].goto(x, y)
  • Đoạn mã này có nhiệm vụ làm cho thân rắn đi theo đầu của nó.
  • Nó lặp qua segments danh sách, bắt đầu từ phân đoạn cuối cùng (len(segments) - 1) xuống đoạn thứ hai (0), di chuyển từng đoạn đến vị trí của đoạn trước nó.
  • Điều này tạo ra hiệu ứng cơ thể rắn đi theo đầu khi nó di chuyển.

Cập nhật phân đoạn đầu tiên (Phần đầu)

  • Sau khi di chuyển tất cả các đoạn cơ thể, vị trí của đoạn đầu tiên (phần đầu) được cập nhật để khớp với vị trí hiện tại của con rắn (snake).
  • Điều này đảm bảo rằng đầu của con rắn tiếp tục dẫn dắt cơ thể khi nó di chuyển.

Lưu ý cuối

Mã này cung cấp cấu trúc cơ bản cho trò chơi Rắn sử dụng thư viện đồ họa Rùa. Trò chơi liên quan đến việc điều khiển một con rắn ăn thức ăn và phát triển lâu hơn đồng thời tránh va chạm với các bức tường và đuôi của chính nó. Đây là một dự án tuyệt vời dành cho người mới bắt đầu để tìm hiểu về các khái niệm phát triển trò chơi, lập trình Python cơ bản cũng như làm việc với đồ họa và đầu vào của người dùng. Vui lòng tùy chỉnh và mở rộng mã này để thêm các tính năng như phát hiện va chạm, tăng độ khó hoặc thêm cấp độ để làm cho trò chơi Rắn săn mồi của bạn trở nên thú vị hơn nữa!

Nếu bạn muốn tìm hiểu thêm về python thì hãy đăng ký tham gia của chúng tôi khóa học python miễn phí.

Đồng thời đọc thêm các bài viết của chúng tôi liên quan đến python tại đây:

tại chỗ_img

Tin tức mới nhất

tại chỗ_img