使用Python编写开发弹球游戏 1.项目描述:设计一个弹球游戏。 2.系统设计说明: (1) 从窗口上方随机位置生成随机颜色的球(个数可设置); (2)使用左右方向键控制挡板拦截球,如果球碰撞挡板或窗口边缘则反弹; (3) 如果球全部掉落到挡板下方,则游戏结束,统计游戏时间。。请写出代码
时间: 2024-02-25 20:55:17 浏览: 18
好的,以下是一个简单的弹球游戏代码实现:
```
import pygame
import random
import time
# 定义一些常量
WIDTH, HEIGHT = 640, 480
BALL_RADIUS = 10
BALL_SPEED = 5
PADDLE_WIDTH, PADDLE_HEIGHT = 80, 10
PADDLE_SPEED = 5
FONT_SIZE = 36
# 初始化 Pygame
pygame.init()
# 创建窗口
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("弹球游戏")
# 创建字体对象
font = pygame.font.SysFont(None, FONT_SIZE)
# 定义球的类
class Ball:
def __init__(self):
self.color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
self.radius = BALL_RADIUS
self.speed = BALL_SPEED
self.rect = pygame.draw.circle(screen, self.color, (random.randint(0, WIDTH), self.radius), self.radius)
self.direction = [random.choice([-1, 1]), -1]
def move(self):
self.rect.move_ip(self.speed * self.direction[0], self.speed * self.direction[1])
def collide(self, paddle):
if self.rect.colliderect(paddle.rect):
self.direction[1] = -1
elif self.rect.left <= 0 or self.rect.right >= WIDTH:
self.direction[0] *= -1
elif self.rect.top <= 0:
self.direction[1] = 1
# 定义挡板的类
class Paddle:
def __init__(self):
self.width = PADDLE_WIDTH
self.height = PADDLE_HEIGHT
self.speed = PADDLE_SPEED
self.rect = pygame.Rect((WIDTH - self.width) // 2, HEIGHT - self.height - 10, self.width, self.height)
def move(self, direction):
if direction == "left":
self.rect.move_ip(-self.speed, 0)
elif direction == "right":
self.rect.move_ip(self.speed, 0)
# 创建主函数
def main():
# 初始化球和挡板
ball_list = [Ball() for _ in range(5)]
paddle = Paddle()
# 开始游戏循环
start_time = time.time()
while True:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
paddle.move("left")
elif event.key == pygame.K_RIGHT:
paddle.move("right")
# 移动球和挡板
for ball in ball_list:
ball.move()
ball.collide(paddle)
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
paddle.move("left")
elif keys[pygame.K_RIGHT]:
paddle.move("right")
# 绘制游戏界面
screen.fill((255, 255, 255))
for ball in ball_list:
pygame.draw.circle(screen, ball.color, ball.rect.center, ball.radius)
pygame.draw.rect(screen, (0, 0, 0), paddle.rect)
pygame.display.flip()
# 判断游戏是否结束
if all(ball.rect.bottom >= HEIGHT - PADDLE_HEIGHT for ball in ball_list):
end_time = time.time()
game_time = round(end_time - start_time, 2)
text = font.render("游戏结束,用时 {} 秒".format(game_time), True, (0, 0, 0))
screen.blit(text, ((WIDTH - text.get_width()) // 2, (HEIGHT - text.get_height()) // 2))
pygame.display.flip()
pygame.time.wait(3000)
break
# 退出 Pygame
pygame.quit()
quit()
if __name__ == "__main__":
main()
```
这个游戏有一些简单的动画效果,可以使用键盘上的左右箭头控制挡板移动,如果球全部掉落到挡板下方,则显示游戏结束信息并统计游戏时间。