一百行代码教你用Python,pygame做个弹乒乓小游戏

import pygame, sys,random

# 控制球的反弹
def ball_animation():
    global ball_speed_x,ball_speed_y
    ball.x += ball_speed_x
    ball.y += ball_speed_y
    if ball.top <= 0 or ball.bottom >= screen_height:
        ball_speed_y *= -1
    if ball.left <= 0 or ball.right >= screen_width:
        ball_restart()

    if ball.colliderect(player) or ball.colliderect(opponent):
        ball_speed_x *= -1

# 控制挡板不能超过屏幕
def player_animation():
    player.y += player_speed
    if player.top <= 0:
        player.top = 0
    if player.bottom >= screen_height:
        player.bottom = screen_height

# 挡板的AI行动
def opponent_ai():
    if opponent.top < ball.y:
        opponent.top += opponent_speed
    if opponent.bottom > ball.y:
        opponent.bottom -= opponent_speed
    if opponent.top <= 0:
        opponent.top = 0
    if opponent.bottom >= screen_height:
        opponent.bottom = screen_height

# 游戏结束后重启
def ball_restart():
    global ball_speed_x,ball_speed_y
    # 如果球撞到了屏幕,那么就回到起点,再继续移动
    ball.center = (screen_width/2,screen_height/2)
    ball_speed_y *= random.choice((1,-1))
    ball_speed_x *= random.choice((1,-1))

pygame.init()
clock = pygame.time.Clock()

screen_width = 1280
screen_height = 960
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption('Pong')

ball = pygame.Rect(screen_width / 2 - 15, screen_height / 2 - 15, 30, 30)  # 创建一个矩形,前两个是他距离左边上面的位置,后面两个是宽高
player = pygame.Rect(screen_width - 20, screen_height / 2 - 70, 10, 140)
opponent = pygame.Rect(10, screen_height / 2 - 70, 10, 140)

bg_color = pygame.Color('grey12')
light_grey = (200, 200, 200)

ball_speed_x  = 7 * random.choice((1,-1))
ball_speed_y = 7 * random.choice((1,-1))
player_speed = 0

opponent_speed = 7
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_DOWN:
                player_speed += 7
            if event.key == pygame.K_UP:
                player_speed -= 7
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_DOWN:
                player_speed -= 7
            if event.key == pygame.K_UP:
                player_speed += 7



    ball_animation()
    player_animation()
    opponent_ai()




    screen.fill(bg_color)

    # rect(Surface, color, Rect, width=0) -> Rect
    # 在Surface对象上绘制一个矩形。Surface绘制在哪里
    # rect代表你要绘制图像的参数,宽高和位置
    # color指定颜色。
    # width参数指定边框的宽度,如果设置为0则表示填充该矩形。
    pygame.draw.rect(screen, light_grey, player)
    pygame.draw.rect(screen, light_grey, opponent)

    # ellipse 椭圆的意思
    # 椭圆,参数:操作对象,颜色(RGB数组),外接矩形的左上角和右下角坐标,宽度
    # 如果不填宽度,则会填充椭圆
    # pygame.draw.ellipse(screen, (0, 255, 0), (0, 0, 200, 300),width=1)
    pygame.draw.ellipse(screen, light_grey, ball)

    # pygame.draw.aaline(Surface,color,start_pos,end_pos,blend=1)
    # Surface可以理解为该直线完毕显示在哪个surface上
    # color直线的颜色,为RGB三元组或RGBA四元组
    # start_pos,end_pos分别为直线的起点坐标和终点坐标均为二元组
    # width为直线的宽度,默认为1
    # blend为是否打开直线边缘的融合效果,一般不对其设置使用其默认值
    pygame.draw.aaline(screen, light_grey, (screen_width / 2, 0), (screen_width / 2, screen_height))

    pygame.display.update()
    clock.tick(60)

代码我后面会出视频讲解

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以这样实现: 首先,我们需要导入必要的库,比如pygame。 然后,我们需要定义游戏窗口的大小,并初始化游戏环境。 接着,我们可以定义一个乒乓球拍,并让它在屏幕上移动。 接下来,我们可以定义一个乒乓球,并让它在屏幕上运动,每当它碰到拍子时,我们可以让它反。 最后,我们可以通过检测乒乓球是否离开屏幕边界来判断游戏是否结束,并在游戏结束时显示相应的提示。 这是一个简单乒乓球游戏的实现方式,更详细的代码实现可以参考其他教程或资源。 ### 回答2: 乒乓球手机小游戏是一款在手机上模拟乒乓球比赛的游戏。使用Python这款游戏,可以通过调用相关库和模块来实现游戏的各种功能。 首先,需要导入一些库,比如pygame库来处理游戏界面和用户输入,random库来生成随机数等。 接着,可以创建一个乒乓球类,该类包含球的初始位置、速度、大小等属性,并定义球的移动、碰撞等方法。可以通过更新球的位置和速度来模拟球的飞轨迹,并利用碰撞检测来实现球与挡板和边界的交互。 然后,创建一个挡板类,包含挡板的位置、大小等属性,并定义挡板的移动方法。可以通过监听用户输入来实现挡板的上下移动,并设置挡板的边界限制。 接下来,可以创建一个游戏类,该类包含游戏的初始化、运、结束等方法。在初始化方法中,可以设置窗口大小、背景音乐等,并创建球和挡板实例。在运方法中,可以通过循环不断更新球和挡板的位置,并检测游戏是否结束。可以设置游戏结束的条件,比如球触碰边界或挡板等。在结束方法中,可以显示游戏结束的信息,并退出游戏。 最后,可以创建一个主函数,调用游戏类的运方法来启动游戏。可以设置游戏的帧率和循环延时,以控制游戏的流畅性和难度。 总结来说,使用Python乒乓球手机小游戏需要利用相关库和模块来处理游戏界面、用户输入和物体交互等,需要定义乒乓球、挡板和游戏类以及相关方法,最后通过主函数调用游戏类的运方法来启动游戏。 ### 回答3: 乒乓球是一种非常有趣和受欢迎的运动,而手机小游戏则是现代人们休闲娱乐的一种方式。使用Python一个乒乓球手机小游戏可以让玩家在手机上随时随地进乒乓球对战。 在编这个小游戏时,我们需要通过Python的图形库,如Pygame,来创建游戏的界面和交互。首先,我们会创建一个乒乓球游戏场景,包括乒乓球台和两个球拍。玩家可以通过手机的触摸屏或者按键来控制球拍的移动,以接住由另一侧发射过来的乒乓球游戏的规则可以包括两个玩家对战,或者与计算机对战。当乒乓球碰到球拍时,会根据碰撞的位置和角度改变乒乓球的运动方向。如果乒乓球碰到乒乓球台的边界,玩家将失去一分,并且乒乓球将重新回到另一侧进发射。当玩家达到一定分数或者某一方失去所有生命时,游戏结束并显示玩家的得分。 为了增加游戏的趣味性和挑战性,我们可以增加一些额外的功能,如增加乒乓球的速度、引入特殊道具或技能等。 编这个乒乓球手机小游戏需要熟悉Python的基本语法和图形库的使用,以及游戏设计的基本原则。通过使用适当的变量、函数和逻辑判断,在合适的时候更新游戏界面和检测碰撞等,可以实现一个简单而有趣的乒乓球手机小游戏。 总之,通过使用Python乒乓球手机小游戏可以让玩家在手机上随时享受乒乓球对战的乐趣,并且可以锻炼编程和逻辑思维能力。希望以上回答对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值