使用pygame做多个触壁反弹小球

颜色随机,小球个数number适当调整,在这种算法下比较吃显卡import pygameimport sysfrom pygame.sprite import Groupfrom pygame.sprite import Spriteimport random#小球个数number = 20move_speed = 5up_left = 7up_right = 9dow...
摘要由CSDN通过智能技术生成

代码少,就把类文件和函数文件放一块了。颜色随机,小球个数number适当调整,在这种算法下比较吃显卡

import pygame
import sys
from pygame.sprite import Group
from pygame.sprite import Sprite
import random

#小球个数
number = 20
move_speed = 5
up_left = 7
up_right = 9
down_left = 3
down_right = 1

black = (0,0,0)

windows_width = 1200
windows_height = 600

#小球类
class Bound(Sprite):
    def __init__(self,direction,start_x,start_y,color):
        super(Bound,self).__init__()
        self.color = color
        self.start_direction = direction
        self.rect = pygame.Rect(start_x,start_y,20,20)

    #检查边界,并设置反弹
    def check_border(self):
        if self.rect.top <= 0:
            #左上
            if self.start_direction == up_left:
                self.start_direction = down_left
            #右上
            elif self.start_direction == up_right:
                self.start_direction = down_righ
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的基于 Pygame小球碰到下方挡板反弹的游戏: ```python import pygame import random # 初始化 Pygame pygame.init() # 设置窗口尺寸和标题 SCREEN_WIDTH = 500 SCREEN_HEIGHT = 500 screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) pygame.display.set_caption("小球反弹") # 定义颜色 BLACK = (0, 0, 0) WHITE = (255, 255, 255) RED = (255, 0, 0) # 定义小球属性 BALL_RADIUS = 10 ball_pos = [SCREEN_WIDTH // 2, BALL_RADIUS * 2] ball_vel = [random.randint(-3, 3), random.randint(2, 5)] # 定义挡板属性 PAD_WIDTH = 80 PAD_HEIGHT = 10 pad_pos = [SCREEN_WIDTH // 2 - PAD_WIDTH // 2, SCREEN_HEIGHT - PAD_HEIGHT - 10] pad_vel = [0, 0] # 定义游戏结束标志 game_over = False # 游戏循环 while not game_over: # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: game_over = True elif event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: pad_vel[0] = -5 elif event.key == pygame.K_RIGHT: pad_vel[0] = 5 elif event.type == pygame.KEYUP: if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: pad_vel[0] = 0 # 清屏 screen.fill(WHITE) # 更新小球位置 ball_pos[0] += ball_vel[0] ball_pos[1] += ball_vel[1] if ball_pos[0] <= BALL_RADIUS or ball_pos[0] >= SCREEN_WIDTH - BALL_RADIUS: ball_vel[0] = -ball_vel[0] if ball_pos[1] <= BALL_RADIUS: ball_vel[1] = -ball_vel[1] elif ball_pos[1] >= SCREEN_HEIGHT - BALL_RADIUS: if ball_pos[0] >= pad_pos[0] and ball_pos[0] <= pad_pos[0] + PAD_WIDTH: ball_vel[1] = -ball_vel[1] else: game_over = True # 更新挡板位置 pad_pos[0] += pad_vel[0] if pad_pos[0] <= 0: pad_pos[0] = 0 elif pad_pos[0] >= SCREEN_WIDTH - PAD_WIDTH: pad_pos[0] = SCREEN_WIDTH - PAD_WIDTH # 绘制小球和挡板 pygame.draw.circle(screen, RED, ball_pos, BALL_RADIUS) pygame.draw.rect(screen, BLACK, [pad_pos[0], pad_pos[1], PAD_WIDTH, PAD_HEIGHT]) # 更新屏幕 pygame.display.update() # 退出 Pygame pygame.quit() ``` 这个游戏中,小球会在窗口中自由移动,当小球碰到窗口的左右边缘时会反弹,当小球碰到窗口的下边缘时会判断是否和挡板碰撞,如果碰撞则小球反弹,否则游戏结束。玩家可以通过键盘左右箭头控制挡板的移动。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值