python编程小游戏代码(可复制+代码解释)

今天,我们将使用Python编程中的Turtle创建一个乒乓球小游戏(代码可复制)。乒乓球是一种著名的电脑游戏,类似于乒乓球。在这个游戏中,两名玩家控制游戏窗口两侧的两个桨。为了击中移动的球,他们上下移动球拍。当球员击中球或对手未击中球时,得分就会上升。

游戏代码

# Import required library
import turtle


# Create screen
sc = turtle.Screen()
sc.title("Pong game")
sc.bgcolor("Black")
sc.setup(width=1000, height=600)


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


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


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


# Initialize the score
left_player = 0
right_player = 0


# Displays the score
sketch = turtle.Turtle()
sketch.speed(0)
sketch.color("blue")
sketch.penup()
sketch.hideturtle()
sketch.goto(0, 260)
sketch.write("Left_player : 0 Right_player: 0",align="center", font=("Courier", 24, "normal"))


# Functions to move paddle vertically
def paddleaup():
    y = left_pad.ycor()
    y += 20
    left_pad.sety(y)


def paddleadown():
    y = left_pad.ycor()
    y -= 20
    left_pad.sety(y)


def paddlebup():
    y = right_pad.ycor()
    y += 20
    right_pad.sety(y)


def paddlebdown():
    y = right_pad.ycor()
    y -= 20
    right_pad.sety(y)


# Keyboard bindings
sc.listen()
sc.onkeypress(paddleaup, "w")
sc.onkeypress(paddleadown, "s")
sc.onkeypress(paddlebup, "Up")
sc.onkeypress(paddlebdown, "Down")


while True:
    sc.update()

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

    # Checking 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.clear()
        sketch.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.clear()
        sketch.write("Left_player : {} Right_player: {}".format(left_player, right_player), align="center",font=("Courier", 24, "normal"))

    # Paddle ball collision
    if (hit_ball.xcor() > 360 and hit_ball.xcor() < 370) and (hit_ball.ycor() < right_pad.ycor()+40 and hit_ball.ycor() > right_pad.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_pad.ycor()+40 and hit_ball.ycor()>left_pad.ycor()-40):
        hit_ball.setx(-360)
        hit_ball.dx*=-1

图片示例

python乒乓球小游戏

代码解释

这段代码是一个简单的乒乓球游戏的Python程序,使用Turtle库来创建游戏界面和控制元素。我将逐行解释代码的主要部分:

  1. 导入所需的库:导入Turtle库,以便创建游戏界面和控制元素。
  2. 创建游戏窗口:
    • 创建一个Turtle Screen对象,并设置窗口标题、背景颜色以及窗口的宽度和高度。
  3. 创建左右球拍(paddle):
    • 分别创建左右两个球拍,用Turtle对象表示。
    • 设置球拍的形状、颜色、大小、位置等属性。
  4. 创建乒乓球:
    • 创建一个表示乒乓球的Turtle对象。
    • 设置乒乓球的形状、颜色、位置,并初始化其水平和垂直速度(dx和dy)。
  5. 初始化得分:
    • 创建一个Turtle对象用于显示得分(score)。
    • 设置初始得分为0,并在游戏界面上显示出来。
  6. 定义移动球拍的函数:
    • paddleaup()paddleadown() 函数用于控制左球拍向上和向下移动。
    • paddlebup()paddlebdown() 函数用于控制右球拍向上和向下移动。
  7. 设置键盘绑定:
    • 使用sc.listen()来监听键盘事件。
    • 使用sc.onkeypress()来绑定键盘按键和对应的移动球拍的函数。
  8. 游戏循环:
    • 进入一个无限循环,用于更新游戏界面和处理游戏逻辑。
  9. 在游戏循环中:
    • 使用sc.update()来更新游戏界面。
    • 更新乒乓球的位置,根据其水平和垂直速度。
    • 检查乒乓球是否触及了屏幕边界,如果是,则反弹。
    • 如果乒乓球越过了左边界,右侧玩家得分加一,并更新得分显示。
    • 如果乒乓球越过了右边界,左侧玩家得分加一,并更新得分显示。
    • 检查乒乓球是否与球拍碰撞,如果是,则反弹。

这段代码实现了一个非常基本的乒乓球游戏,其中玩家可以使用键盘控制左侧球拍上下移动,右侧球拍自动上下移动,游戏在得分达到一定条件时结束。你可以根据需要进行扩展和改进,例如增加游戏结束条件、增加音效等。