如果我想要根据用户输入建立多张这样的卡片并让它居中在屏幕的正下方呢
时间: 2024-02-25 22:53:18 浏览: 25
要根据用户输入建立多张卡片,可以使用一个列表来存储所有的卡片。具体实现可以参考下面的代码:
```python
import pygame
# 初始化 Pygame
pygame.init()
# 设置窗口大小
WINDOW_SIZE = (800, 600)
screen = pygame.display.set_mode(WINDOW_SIZE)
pygame.display.set_caption("Card Flip")
# 加载正反两面的图片
front_img = pygame.image.load("front.jpg")
back_img = pygame.image.load("back.jpg")
# 读取用户输入,建立多张卡片
cards = []
while True:
num_cards = input("请输入卡片数量:")
if num_cards.isdigit():
num_cards = int(num_cards)
break
for i in range(num_cards):
card = {
"img": front_img,
"rect": front_img.get_rect(),
"flipped": False
}
card["rect"].centerx = screen.get_rect().centerx
card["rect"].bottom = screen.get_rect().bottom - 50 * (num_cards - 1 - i)
cards.append(card)
# 主循环
running = True
while running:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.MOUSEBUTTONDOWN:
# 点击卡片时,翻转卡片
for card in cards:
if card["rect"].collidepoint(event.pos):
card["flipped"] = not card["flipped"]
if card["flipped"]:
card["img"] = back_img
else:
card["img"] = front_img
# 绘制卡片
screen.fill((255, 255, 255))
for card in cards:
screen.blit(card["img"], card["rect"])
pygame.display.flip()
# 退出 Pygame
pygame.quit()
```
在这个程序中,我们首先读取用户输入,建立多张卡片,并将它们居中在屏幕的正下方。然后在主循环中,处理鼠标点击事件。如果点击了某张卡片,就翻转该卡片。最后在每个循环中,绘制所有的卡片并使用 `pygame.display.flip()` 函数更新窗口的显示。
需要注意的是,在这个程序中我们使用了一个字典来存储每张卡片的信息。这个字典包含了卡片的图片、矩形区域、以及是否被翻转的状态。在绘制卡片的时候,我们遍历所有的卡片,根据它们的状态来选择相应的图片进行绘制。