搜索
首页后端开发Python教程Pygame python 中的乒乓球游戏

输入

import pygame
import sys

Pygame 是我们用来制作游戏的模块。它为我们提供了图形、声音等工具。

sys 是 Python 中的一个模块,可以帮助我们与 Python 解释器交互。

初始化

pygame.init()

初始化所有 Pygame 模块并使其可供使用。

常数

#dimensions
WIDTH, HEIGHT=800,600
#frame rate
FPS=60
#the paddles at the side of ping pong
PADDLE_WIDTH, PADDLE_HEIGHT=15,90
#the balls radius
BALL_RADIUS=15
#the color of the ball and paddle
WHITE=(255, 255, 255)
  • 宽度和高度:游戏窗口的尺寸。 800px 为宽度,600px 为高度
  • FPS:每秒帧数,控制游戏的速度和流畅度。
  • PADDLE_WIDTH、PADDLE_HEIGHT:桨叶的尺寸。
  • BALL_RADIUS:球的半径。
  • WHITE:白色的 RGB 值,用于球拍、球和文本。

制作屏幕

screen=pygame.display.set_mode((WIDTH,HEIGHT))
pygame.display.set_caption("Ping Pong")

您将有一个名为Ping Pong 的窗口,并指定了宽度和高度

Ping Pong game in Pygame python

桨和球设置

left_paddle=pygame.Rect(50, HEIGHT//2 - PADDLE_HEIGHT //2, PADDLE_WIDTH, PADDLE_HEIGHT)

right_paddle=pygame.Rect(WIDTH - 50 - PADDLE_WIDTH, HEIGHT //2- PADDLE_HEIGHT //2, PADDLE_WIDTH, PADDLE_HEIGHT)

ball=pygame.Rect(WIDTH //2 - BALL_RADIUS, HEIGHT //2 - BALL_RADIUS, BALL_RADUIS *2, BALL_RADIUS *2)

Ping Pong game in Pygame python

在 Pygame 中,屏幕的左上角代表坐标 (0,0)。

  • pygame.Rect:用于在 pygame 中创建矩形(此处用于桨和球)。
pygame.Rect(x, y, width, height)
  • left_paddle:位于屏幕左侧附近,垂直居中。
pygame.Rect(50, HEIGHT//2 - PADDLE_HEIGHT //2, PADDLE_WIDTH, PADDLE_HEIGHT)
  1. 首先,我们将左桨定位在距左侧 50px 处。

  2. 然后我们执行 HEIGHT//2 - PADDLE_HEIGHT //2 因为如果你只执行 HEIGHT//2 它看起来就像图片中的样子。它从屏幕上下来。为了使其居中,我们这样做 - PADDLE_HEIGHT //2

Ping Pong game in Pygame python

这就是我们为右桨使其居中所做的事情。

  • right_paddle:位于屏幕右侧附近,垂直居中。
right_paddle=pygame.Rect(WIDTH - 50 - PADDLE_WIDTH, HEIGHT //2- PADDLE_HEIGHT //2, PADDLE_WIDTH, PADDLE_HEIGHT)
  • 球:最初位于屏幕中央。
ball=pygame.Rect(WIDTH //2 - BALL_RADIUS, HEIGHT //2 - BALL_RADIUS, BALL_RADUIS *2, BALL_RADIUS *2)

为了使球居中,我们减去半径。

速度

ball_speed_x=7
ball_speed_y=7
paddle_speed=10

ball_speed_x 和 ball_speed_y 控制球的水平和垂直速度。

paddle_speed:控制桨的移动速度。

分数变量

import pygame
import sys
  • left_score 和 right_score:跟踪玩家的分数。
  • 字体:用于在屏幕上渲染乐谱文本。 None 使用默认字体,55为字体大小。

绘制所有内容的函数

pygame.init()
  • fill((0, 0, 0)):用黑色填充屏幕(RGB:0, 0, 0)。
  • pygame.draw.rect:绘制矩形桨。
  • pygame.draw.ellipse:将球绘制为圆形(以矩形球为边界)。

画出中心线

#dimensions
WIDTH, HEIGHT=800,600
#frame rate
FPS=60
#the paddles at the side of ping pong
PADDLE_WIDTH, PADDLE_HEIGHT=15,90
#the balls radius
BALL_RADIUS=15
#the color of the ball and paddle
WHITE=(255, 255, 255)
  • 画一条垂直中心线来划分比赛场地。

抽签分数

screen=pygame.display.set_mode((WIDTH,HEIGHT))
pygame.display.set_caption("Ping Pong")

渲染双方玩家的分数并将其放置在屏幕上。

更新屏幕

left_paddle=pygame.Rect(50, HEIGHT//2 - PADDLE_HEIGHT //2, PADDLE_WIDTH, PADDLE_HEIGHT)

right_paddle=pygame.Rect(WIDTH - 50 - PADDLE_WIDTH, HEIGHT //2- PADDLE_HEIGHT //2, PADDLE_WIDTH, PADDLE_HEIGHT)

ball=pygame.Rect(WIDTH //2 - BALL_RADIUS, HEIGHT //2 - BALL_RADIUS, BALL_RADUIS *2, BALL_RADIUS *2)

使用最新更改更新显示。

pygame.Rect(x, y, width, height)

让游戏无限期地运行。

pygame.Rect(50, HEIGHT//2 - PADDLE_HEIGHT //2, PADDLE_WIDTH, PADDLE_HEIGHT)

这将遍历 pygame 中可能发生的所有事件,如果其中一个事件正在关闭窗口,则退出 pygame 并关闭窗口。

桨控制

right_paddle=pygame.Rect(WIDTH - 50 - PADDLE_WIDTH, HEIGHT //2- PADDLE_HEIGHT //2, PADDLE_WIDTH, PADDLE_HEIGHT)

检测按键:

  • WS:上下移动左桨。
    • pygame.K_ww
    • pygame.K_ss
  • 向上向下:上下移动右桨。
    • pygame.K_UP 是向上键
    • pygame.K_DOWN 是向下键
  • 包括防止桨移出屏幕的检查。
    • left_paddle.top > 0检查桨顶部坐标是否大于 0。检查当您单击 W 时桨是否击中屏幕顶部。
    • left_paddle.bottom
    • right_paddle.top > 0检查桨顶部坐标是否大于 0。检查当您单击向上键时桨是否击中屏幕顶部。
    • right_paddle.bottom

球运动

ball=pygame.Rect(WIDTH //2 - BALL_RADIUS, HEIGHT //2 - BALL_RADIUS, BALL_RADUIS *2, BALL_RADIUS *2)

通过将球的速度添加到当前位置来移动球

球与顶壁和底壁碰撞

ball_speed_x=7
ball_speed_y=7
paddle_speed=10

如果球击中屏幕顶部或底部,则反转球的垂直方向

球与桨的碰撞

import pygame
import sys

如果球与球拍碰撞,则反转球的水平方向。

评分

pygame.init()
  • 如果球出界,则更新得分。
  • 将球重置到中心并反转其方向。

定时

#dimensions
WIDTH, HEIGHT=800,600
#frame rate
FPS=60
#the paddles at the side of ping pong
PADDLE_WIDTH, PADDLE_HEIGHT=15,90
#the balls radius
BALL_RADIUS=15
#the color of the ball and paddle
WHITE=(255, 255, 255)

限制游戏运行最高每秒60帧,确保游戏流畅。

完整代码

screen=pygame.display.set_mode((WIDTH,HEIGHT))
pygame.display.set_caption("Ping Pong")

Ping Pong game in Pygame python

以上是Pygame python 中的乒乓球游戏的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Python的执行模型:编译,解释还是两者?Python的执行模型:编译,解释还是两者?May 10, 2025 am 12:04 AM

pythonisbothCompileDIntered。

Python是按线执行的吗?Python是按线执行的吗?May 10, 2025 am 12:03 AM

Python不是严格的逐行执行,而是基于解释器的机制进行优化和条件执行。解释器将代码转换为字节码,由PVM执行,可能会预编译常量表达式或优化循环。理解这些机制有助于优化代码和提高效率。

python中两个列表的串联替代方案是什么?python中两个列表的串联替代方案是什么?May 09, 2025 am 12:16 AM

可以使用多种方法在Python中连接两个列表:1.使用 操作符,简单但在大列表中效率低;2.使用extend方法,效率高但会修改原列表;3.使用 =操作符,兼具效率和可读性;4.使用itertools.chain函数,内存效率高但需额外导入;5.使用列表解析,优雅但可能过于复杂。选择方法应根据代码上下文和需求。

Python:合并两个列表的有效方法Python:合并两个列表的有效方法May 09, 2025 am 12:15 AM

有多种方法可以合并Python列表:1.使用 操作符,简单但对大列表不内存高效;2.使用extend方法,内存高效但会修改原列表;3.使用itertools.chain,适用于大数据集;4.使用*操作符,一行代码合并小到中型列表;5.使用numpy.concatenate,适用于大数据集和性能要求高的场景;6.使用append方法,适用于小列表但效率低。选择方法时需考虑列表大小和应用场景。

编译的与解释的语言:优点和缺点编译的与解释的语言:优点和缺点May 09, 2025 am 12:06 AM

CompiledLanguagesOffersPeedAndSecurity,而interneterpretledlanguages provideeaseafuseanDoctability.1)commiledlanguageslikec arefasterandSecureButhOnderDevevelmendeclementCyclesclesclesclesclesclesclesclesclesclesclesclesclesclesclesclesclesclesandentency.2)cransportedeplatectentysenty

Python:对于循环,最完整的指南Python:对于循环,最完整的指南May 09, 2025 am 12:05 AM

Python中,for循环用于遍历可迭代对象,while循环用于条件满足时重复执行操作。1)for循环示例:遍历列表并打印元素。2)while循环示例:猜数字游戏,直到猜对为止。掌握循环原理和优化技巧可提高代码效率和可靠性。

python concatenate列表到一个字符串中python concatenate列表到一个字符串中May 09, 2025 am 12:02 AM

要将列表连接成字符串,Python中使用join()方法是最佳选择。1)使用join()方法将列表元素连接成字符串,如''.join(my_list)。2)对于包含数字的列表,先用map(str,numbers)转换为字符串再连接。3)可以使用生成器表达式进行复杂格式化,如','.join(f'({fruit})'forfruitinfruits)。4)处理混合数据类型时,使用map(str,mixed_list)确保所有元素可转换为字符串。5)对于大型列表,使用''.join(large_li

Python的混合方法:编译和解释合并Python的混合方法:编译和解释合并May 08, 2025 am 12:16 AM

pythonuseshybridapprace,ComminingCompilationTobyTecoDeAndInterpretation.1)codeiscompiledtoplatform-Indepententbybytecode.2)bytecodeisisterpretedbybythepbybythepythonvirtualmachine,增强效率和通用性。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境