用python写一个和机器人大羽毛球的小游戏
时间: 2024-03-10 09:49:51 浏览: 87
使用Python写一个小游戏
好的,以下是一个简单的Python代码示例,可以实现和机器人大羽毛球的小游戏。这个游戏使用了Pygame库来实现游戏界面和游戏逻辑。
```python
import pygame
import random
# 初始化Pygame
pygame.init()
# 设置窗口大小和标题
WINDOW_SIZE = (640, 480)
WINDOW_TITLE = 'Robot Badminton'
screen = pygame.display.set_mode(WINDOW_SIZE)
pygame.display.set_caption(WINDOW_TITLE)
# 加载图片资源
ROBOT_IMAGE = pygame.image.load('robot.png')
BIRDIE_IMAGE = pygame.image.load('birdie.png')
NET_IMAGE = pygame.image.load('net.png')
# 设置游戏参数
ROBOT_SPEED = 5
BIRDIE_SPEED = 5
BIRDIE_START_POSITION = (WINDOW_SIZE[0] // 2, WINDOW_SIZE[1] // 2)
NET_POSITION = (WINDOW_SIZE[0] // 2, 0)
SCORE_POSITION = (50, 50)
# 定义颜色常量
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
# 初始化游戏
robot_position = [WINDOW_SIZE[0] // 2, WINDOW_SIZE[1] - ROBOT_IMAGE.get_height()]
birdie_position = list(BIRDIE_START_POSITION)
birdie_direction = [random.choice([-1, 1]), random.choice([-1, 1])]
score = 0
font = pygame.font.Font(None, 36)
# 主循环
while True:
# 处理Pygame事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
# 处理键盘输入
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and robot_position[0] > 0:
robot_position[0] -= ROBOT_SPEED
if keys[pygame.K_RIGHT] and robot_position[0] < WINDOW_SIZE[0] - ROBOT_IMAGE.get_width():
robot_position[0] += ROBOT_SPEED
# 更新羽毛球位置
birdie_position[0] += birdie_direction[0] * BIRDIE_SPEED
birdie_position[1] += birdie_direction[1] * BIRDIE_SPEED
# 判断羽毛球是否碰到边界
if birdie_position[0] < 0 or birdie_position[0] > WINDOW_SIZE[0] - BIRDIE_IMAGE.get_width():
birdie_direction[0] *= -1
if birdie_position[1] < 0 or birdie_position[1] > WINDOW_SIZE[1] - BIRDIE_IMAGE.get_height():
birdie_direction[1] *= -1
# 判断羽毛球是否碰到网子
if abs(birdie_position[0] + BIRDIE_IMAGE.get_width() // 2 - NET_POSITION[0]) < BIRDIE_IMAGE.get_width() // 2 and birdie_position[1] + BIRDIE_IMAGE.get_height() >= NET_POSITION[1]:
birdie_direction[1] *= -1
score += 1
birdie_position = list(BIRDIE_START_POSITION)
birdie_direction = [random.choice([-1, 1]), random.choice([-1, 1])]
# 绘制游戏界面
screen.fill(WHITE)
screen.blit(ROBOT_IMAGE, robot_position)
screen.blit(BIRDIE_IMAGE, birdie_position)
screen.blit(NET_IMAGE, (NET_POSITION[0] - NET_IMAGE.get_width() // 2, NET_POSITION[1]))
score_text = font.render('Score: {}'.format(score), True, BLACK)
screen.blit(score_text, SCORE_POSITION)
# 刷新屏幕
pygame.display.update()
```
这个代码会打开一个窗口,里面会显示一个机器人和一个羽毛球。玩家可以通过键盘控制机器人的移动。游戏的目标是在羽毛球碰到网子前尽可能多地击打羽毛球,获得高分数。每次成功击打羽毛球,玩家得到一分。如果羽毛球碰到了边界,则会反弹。如果羽毛球碰到了网子,则会反弹并且玩家得到一分。游戏会持续进行,直到玩家退出游戏窗口。
阅读全文