使用Python中的turtle制作乒乓球游戏

使用Python中的turtle制作乒乓球游戏

乒乓球游戏是最著名的街机游戏之一,非常类似于乒乓球。该游戏的规则很简单:

  • 有两个玩家。
  • 两个玩家都可以操控自己一侧的球拍。
  • 他们可以将球拍在垂直方向上从上往下或从下往上移动。

玩家可以使用球拍来来回击打球。

turtle: turtle是Python中的内置模块,用于图形绘制。用户可以将其用作绘制图形的笔和面板。

以下是绘制乒乓球游戏的步骤:

  • 步骤1: 用户需要为屏幕的“左侧”和“右侧”创建两个球拍。
  • 步骤2: 接下来,用户需要创建球。
  • 步骤3: 然后,通过按下特定的键来创建使球拍在垂直方向上移动的事件,即“左球拍”:按下“R”键表示“上”和“C”键表示“下”,“右球拍”:按下“上”键键表示“上”和按下“下”键表示“下”。
  • 步骤4: 最后,创建一个函数,在每个玩家未击中球时更新得分。

代码1:用于绘制球和球拍

import os
import turtle

# First, we will create screen
screen_1 = turtle.Screen()
screen_1.title("Ping-Pong Game")
screen_1.bgcolor("Yellow")
screen_1.setup(width = 1050, height = 650)


# Left paddle
left_paddle = turtle.Turtle()
left_paddle.speed(0)
left_paddle.shape("square")
left_paddle.color("Red")
left_paddle.shapesize(stretch_wid = 6, stretch_len = 2)
left_paddle.penup()
left_paddle.goto(-400, 0)


# Right paddle
right_paddle = turtle.Turtle()
right_paddle.speed(0)
right_paddle.shape("square")
right_paddle.color("Blue")
right_paddle.shapesize(stretch_wid = 6, stretch_len = 2)
right_paddle.penup()
right_paddle.goto(400, 0)


# Ball of circle shape
hit_ball = turtle.Turtle()
hit_ball.speed(45)
hit_ball.shape("circle")
hit_ball.color("White")
hit_ball.penup()
hit_ball.goto(0, 0)
hit_ball.dx = 5
hit_ball.dy = -5

输出:

使用Python中的turtle制作乒乓球游戏

说明:

首先,我们导入了turtle库。然后,我们使用turtle.Screen()函数编写了背景屏幕的代码。我们使用turtle.Turtle()函数创建了左右挡板,并使用goto()函数定位它们。最后,我们使用turtle.Turtle()函数创建了球,并使用speed()函数和其他必需的参数在屏幕上指定了它的移动速度。屏幕上的球和挡板的插图已准备好。

代码2:用两个玩家插图乒乓球游戏的完整代码

import os
import turtle

# First, we will create screen
screen_1 = turtle.Screen()
screen_1.title("Ping-Pong Game")
screen_1.bgcolor("Yellow")
screen_1.setup(width = 1050, height = 650)


# Left paddle
left_paddle = turtle.Turtle()
left_paddle.speed(0)
left_paddle.shape("square")
left_paddle.color("Red")
left_paddle.shapesize(stretch_wid = 6, stretch_len = 2)
left_paddle.penup()
left_paddle.goto(-400, 0)


# Right paddle
right_paddle = turtle.Turtle()
right_paddle.speed(0)
right_paddle.shape("square")
right_paddle.color("Blue")
right_paddle.shapesize(stretch_wid = 6, stretch_len = 2)
right_paddle.penup()
right_paddle.goto(400, 0)


# Ball of circle shape
hit_ball = turtle.Turtle()
hit_ball.speed(45)
hit_ball.shape("circle")
hit_ball.color("Black")
hit_ball.penup()
hit_ball.goto(0, 0)
hit_ball.dx = 5
hit_ball.dy = -5


# Now, we will initialize the score
left_player = 0
right_player = 0


# Displaying of the score
sketch_1 = turtle.Turtle()
sketch_1.speed(0)
sketch_1.color("blue")
sketch_1.penup()
sketch_1.hideturtle()
sketch_1.goto(0, 260)
sketch_1.write("Left Player : 0    Right Player: 0",
             align = "center", font = ("Courier", 24, "normal"))


# Implementing the functions for moving paddle vertically
def paddle_L_up():
    y = left_paddle.ycor()
    y += 20
    left_paddle.sety(y)


def paddle_L_down():
    y = left_paddle.ycor()
    y -= 20
    left_paddle.sety(y)


def paddle_R_up():
    y = right_paddle.ycor()
    y += 20
    right_paddle.sety(y)


def paddle_R_down():
    y = right_paddle.ycor()
    y -= 20
    right_paddle.sety(y)


# Then, binding the keys for moving the paddles up and down. 
screen_1.listen()
screen_1.onkeypress(paddle_L_up, "r")
screen_1.onkeypress(paddle_L_down, "c")
screen_1.onkeypress(paddle_R_up, "Up")
screen_1.onkeypress(paddle_R_down, "Down")


while True:
    screen_1.update()

    hit_ball.setx(hit_ball.xcor() + hit_ball.dx)
    hit_ball.sety(hit_ball.ycor() + hit_ball.dy)

    # Check all the borders
    if hit_ball.ycor() > 280:
        hit_ball.sety(280)
        hit_ball.dy *= -1

    if hit_ball.ycor() < -280:
        hit_ball.sety(-280)
        hit_ball.dy *= -1

    if hit_ball.xcor() > 500:
        hit_ball.goto(0, 0)
        hit_ball.dy *= -1
        left_player += 1
        sketch_1.clear()
        sketch_1.write("Left_player : {}    Right_player: {}".format(
                      left_player, right_player), align = "center",
                      font = ("Courier", 24, "normal"))

    if hit_ball.xcor() < -500:
        hit_ball.goto(0, 0)
        hit_ball.dy *= -1
        right_player += 1
        sketch_1.clear()
        sketch_1.write("Left_player : {}    Right_player: {}".format(
                                 left_player, right_player), align = "center",
                                 font = ("Courier", 24, "normal"))

    # Collision of ball and paddles
    if (hit_ball.xcor() > 360 and
                        hit_ball.xcor() < 370) and (hit_ball.ycor() < right_paddle.ycor() + 40 and
                        hit_ball.ycor() > right_paddle.ycor() - 40):
                        hit_ball.setx(360)
                        hit_ball.dx *= -1

    if (hit_ball.xcor() < -360 and
                       hit_ball.xcor() > -370) and (hit_ball.ycor() < left_paddle.ycor() + 40 and
                       hit_ball.ycor() > left_paddle.ycor() - 40):
                       hit_ball.setx(-360)
                       hit_ball.dx *= -1

输出:

使用Python中的turtle制作乒乓球游戏

说明:

在上面的代码中,在用挡板和球体展示屏幕的布局后,我们首先会初始化两位玩家的得分,即为零。然后,我们会将得分显示在屏幕上,当对手未能击中球时,得分会增加。然后,我们将实现挡板的垂直移动功能。我们将为每个功能绑定相应的按键,即对于“左边挡板”:上键为“上移”,下键为“下移”,对于“右边挡板”:R键为“上移”,C键为“下移”。然后,我们将初始化球体和挡板之间的碰撞,如果球体碰到挡板,它会朝向对方玩家,但如果挡板未能接住球,那么球体会碰到边界,并且对方玩家会得分。如果代码正确且无错误,运行代码后Ping Pong游戏的屏幕将弹出,玩家可以进行游戏。球体将首先朝右边玩家发球。

结论

在本教程中,我们通过使用Python的内置库Turtle在屏幕上创建了一个简单的乒乓球游戏的示例。用户可以通过使用Turtle库及其不同的函数来创建不同的移动示意图。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程