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程序,使用Turtle库来创建游戏界面和控制元素。我将逐行解释代码的主要部分:
- 导入所需的库:导入Turtle库,以便创建游戏界面和控制元素。
- 创建游戏窗口:
- 创建一个Turtle Screen对象,并设置窗口标题、背景颜色以及窗口的宽度和高度。
- 创建左右球拍(paddle):
- 分别创建左右两个球拍,用Turtle对象表示。
- 设置球拍的形状、颜色、大小、位置等属性。
- 创建乒乓球:
- 创建一个表示乒乓球的Turtle对象。
- 设置乒乓球的形状、颜色、位置,并初始化其水平和垂直速度(dx和dy)。
- 初始化得分:
- 创建一个Turtle对象用于显示得分(score)。
- 设置初始得分为0,并在游戏界面上显示出来。
- 定义移动球拍的函数:
paddleaup()
和paddleadown()
函数用于控制左球拍向上和向下移动。paddlebup()
和paddlebdown()
函数用于控制右球拍向上和向下移动。
- 设置键盘绑定:
- 使用
sc.listen()
来监听键盘事件。 - 使用
sc.onkeypress()
来绑定键盘按键和对应的移动球拍的函数。
- 使用
- 游戏循环:
- 进入一个无限循环,用于更新游戏界面和处理游戏逻辑。
- 在游戏循环中:
- 使用
sc.update()
来更新游戏界面。 - 更新乒乓球的位置,根据其水平和垂直速度。
- 检查乒乓球是否触及了屏幕边界,如果是,则反弹。
- 如果乒乓球越过了左边界,右侧玩家得分加一,并更新得分显示。
- 如果乒乓球越过了右边界,左侧玩家得分加一,并更新得分显示。
- 检查乒乓球是否与球拍碰撞,如果是,则反弹。
- 使用
这段代码实现了一个非常基本的乒乓球游戏,其中玩家可以使用键盘控制左侧球拍上下移动,右侧球拍自动上下移动,游戏在得分达到一定条件时结束。你可以根据需要进行扩展和改进,例如增加游戏结束条件、增加音效等。