如何解决在PyGame中单击鼠标时的计分计数器循环
我正在用PyGame编写测试游戏,并且具有基于回合/阶段的系统(如Yu-Gi-Oh!),但是我遇到的问题是我想增加回合计数器(在“抽奖阶段”)它会无限期递增,直到再次按下鼠标单击以释放鼠标保持状态。有没有一种方法可以中断增量并在增量一次后立即进入下一阶段? 我认为问题出在游戏循环本身刷新如此之快。也许我可以冻结游戏循环?另一个选择是自动(而不是通过鼠标单击)从一个转弯到另一个转弯,但是我仍然必须按一个按钮才能进入下一阶段。有任何想法吗?我可以在游戏循环之外增加它吗?
#The Game Phases (outside of the game loop):
phases = "Coin Flip","Your Draw Phase","Your Standby Phase","Your Main Phase 1","Your Battle Phase","Your Main Phase 2","Your End Phase","Their Draw Phase","Their Standby Phase","Their Main Phase 1","Their Battle Phase","Their Main Phase 2","Their End Phase" #enemy phases
#Code Inside the game loop:
#If phase = A Draw Phase then the Turn Counter increments.
if phasecounter == 1:
turncounter += 1
elif phasecounter == 7:
turncounter += 1
#A Mouse Click that can will change the Phase on the Screen (displayed by Text).
if event.type == pygame.MOUSEBUTTONDOWN:
phasecounter += 1
#Loops the Phases.
if phasecounter > 12:
phasecounter = 1
currentphase = phases[phasecounter]
解决方法
在游戏循环中添加标志以跟踪鼠标按钮的单击。按下按钮时设置标志,按下按钮时取消设置。在按下按钮事件上设置变量。
尝试此更新:
mousedown = False # above game loop
#A Mouse Click that can will change the Phase on the Screen (displayed by Text).
if event.type == pygame.MOUSEBUTTONUP:
mousedown = False
if event.type == pygame.MOUSEBUTTONDOWN and not mousedown: # don't repeat
mousedown = True
phasecounter += 1
if phasecounter in [1,7]:
turncounter += 1
if phasecounter > 12:
phasecounter = 1
currentphase = phases[phasecounter]
,
感谢Mike67,他的解决方案确实为这个问题提供了很大帮助。但是,它仍然仅每2圈增加一次。我的解决方案是在没有“您的”或“他们的”的情况下进行阶段划分,而只对布尔值进行跟踪,以了解轮到谁了:
Id Date Stage
1 20-12-2013 Basic
1 20-10-2015 Basic
1 05-12-2018 Advanced
2 20-05-2019 Basic
2 15-12-2019 Advanced
3 20-01-2020 Advanced
4 20-10-2020 Basic
4 20-12-2020 Advanced
然后打开“打开计数器”
Id Date Stage Stage Changed Since
1 20-12-2013 Basic NaN
1 20-10-2015 Basic NaN
1 05-12-2018 Advanced 05-12-2018 - 20-10-2015
2 20-05-2019 Basic NaN
2 15-12-2019 Advanced 15-12-2019 - 20-05-2019
3 20-01-2020 Advanced NaN
4 20-10-2020 Basic NaN
4 20-12-2020 Advanced 20-12-2020 - 20-10-2020
因此它只需要增加一次,而不是每个列表增加两次。现在,它可以在“下一弯”完美地增加。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。