gpt4 book ai didi

Python For 循环、函数问题

转载 作者:行者123 更新时间:2023-11-28 21:58:33 25 4
gpt4 key购买 nike

我正在尝试使用 Pygame 和 Python 创建一个猜国旗小游戏,但我创建的一些 for 循环和函数存在问题。我是 Python 的新手,有时我会很困惑。

无论如何,我正在测试我的游戏,我有四个国家:中国、加拿大、美国和法国。我已经将它们放入单独定义的函数中,将它们放入列表中并使用 random 模块来随机排列列表。我已将它放在一个 for 循环中,并试图让它按预期工作。

它正确地打乱了列表并选择了函数,但是有相同函数的重复并且它永远不会结束。

这是我的代码:

def pick_country():
global list1
main_font = "brain flower euro.ttf"
font1 = pygame.font.Font((main_font), 50)
font2 = pygame.font.Font((main_font), 40)
list1 = [france1, canada1, china1, usa1]
random.shuffle(list1)
for cur_country in list1:
cur_country()
pygame.display.update()

def france1():
screen.fill((255, 255, 255))
country = 'FRANCE'
flag = 'france_flag.jpeg'
flag1 = pygame.image.load(flag).convert()
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
pick_country()
screen.blit(flag1, (300, 350))
pygame.display.update()
def canada1():
name = ""
main_font = "brain flower euro.ttf"
font1 = pygame.font.Font((main_font), 50)
country = 'CANADA'
flag = 'canada_flag.jpeg'
black = 0, 0, 0
flag1 = pygame.image.load(flag).convert()
while True:
for evt in pygame.event.get():
if evt.type == KEYDOWN:
if evt.unicode.isalpha():
name += evt.unicode
elif evt.key == K_SPACE:
name += " "
elif evt.key == K_BACKSPACE:
name = name[:-1]
elif evt.type == QUIT:
pygame.quit()
sys.exit()
screen.fill((255, 255, 255))
screen.blit(flag1, (200, 25))
pygame.draw.line(screen, black, (200, 115), (0, 115), (6))
pygame.draw.line(screen, black, (600, 115), (800, 115), (6))
block = font1.render(name, True, black)
rect = block.get_rect(center = (400, 600))
screen.blit(block, rect)
pygame.draw.rect(screen, black, (275, 550, 250, 100), (2))
if name == "canada":
pick_country()
pygame.display.update()
def usa1():
screen.fill((255, 255, 255))
country = 'USA'
flag = 'usa_flag.jpeg'
flag1 = pygame.image.load(flag).convert()
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
pick_country()
screen.blit(flag1, (225, 300))
pygame.display.update()
def china1():
screen.fill((255, 255, 255))
country = 'CHINA'
flag = 'china_flag.jpeg'
flag1 = pygame.image.load(flag).convert()
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
pick_country()
screen.blit(flag1, (300, 350))
pygame.display.update()


pick_country()

不要问加拿大;这是我的主要国家测试区。

在你开始“你试过什么”之前,我试过以下方法:

1:将脚本的“list and shuffle”部分放在屏幕顶部的函数之外。1 的错误:它不知道列表中的函数是什么(还)。

2:将脚本的“list and shuffle”部分放在函数之外,在国家/地区函数之后,但在实际的pick_country() 之前。2的错误:它首先选择了国家,但显然不会去另一个国家。

有什么帮助吗?请!

最佳答案

这是发生了什么:

  • pick_country 调用 france1()
  • 当用户按下一个键时,将再次调用 pick_country()。这个新调用将从您的国家/地区列表的第一个条目开始,再次调用 france1()
  • 当用户按下一个键时,再次调用 pick_country()
  • 无限重复

您可能想要的是在按下某个键时从每个国家/地区的函数返回。这将使您回到原来的 pick_country 调用,允许它移动到列表中的第二个国家/地区。

关于Python For 循环、函数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18138799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com