|
20鱼币
本帖最后由 flyps 于 2024-7-29 14:14 编辑
我在制作游戏时调用了下文的say函数,程序却卡住了,这是怎么回事- import pygame
- from pygame.locals import *
- pygame.init()
- Acolour = (255, 255, 255)
- def changeC(colour, acolour = Acolour):
- acolour = colour
- def say(story, surface, size, afont, k, colour = Acolour):
- Astory = list(story)
- Bstory = ""
- for i in Astory:
- Bstory = "".join([Bstory, i])
- pygame.draw.rect(surface, colour, (size[0]/2, size[1]/2, size[0], size[1]/4), 10)
- surface.blit(afont.render(Bstory, True, colour), (size[0]/2, size[1]/2))
- while not k[K_z]:
- surface.blit(afont.render(Bstory, True, colour), (size[0]/2, size[1]/2))
- pygame.time.delay(10)
复制代码
本帖最后由 smallwh 于 2024-7-29 15:36 编辑
可能因为 say 函数在一个模块里,pygame 把它里面的循环当作了主循环。
证据:当我在 say 函数的循环里加入事件监听时就不再卡住。在调用 say 函数的主程序的主循环中插入 print,只执行一次。
或许你应该删掉 say 函数的循环,在主循环中不断执行 say 函数
- def say(story, surface, size, afont, k, colour = Acolour):
- if k[K_z]: #必要时自己修改条件判断
- Astory = list(story)
- Bstory = ""
- for i in Astory:
- Bstory = "".join([Bstory, i])
- pygame.draw.rect(surface, colour, (size[0]/2, size[1]/2, size[0], size[1]/4), 10)
- surface.blit(afont.render(Bstory, True, colour), (size[0]/2, size[1]/2))
复制代码
|
最佳答案
查看完整内容
可能因为 say 函数在一个模块里,pygame 把它里面的循环当作了主循环。
证据:当我在 say 函数的循环里加入事件监听时就不再卡住。在调用 say 函数的主程序的主循环中插入 print,只执行一次。
或许你应该删掉 say 函数的循环,在主循环中不断执行 say 函数
|