soft-summer-2021 / summer2021

程序设计实践 (2021夏季学期)
34 stars 6 forks source link

pygame中如何解决没有按预期点击到设置的按钮的位置上就会闪退的问题 #72

Closed unique021203 closed 3 years ago

unique021203 commented 3 years ago

助教好,想问下在一开始选择模式的时候会出现没有点到按钮的位置上就会闪退要怎么解决呀,可以设置成点击其他的位置程序没有反应吗?

dyn1721 commented 3 years ago

啊 这肯定是你那部分代码运行时报错了才会闪退 仔细排查调试下?

unique021203 commented 3 years ago

嗯嗯写的时候只写了如果点击了按钮之后要做什么,没有写点击其他位置要怎么办。 我现在想用pygame.event.set_allowed()只让点击按钮的操作进入队列,但是用pygame.event.Event()自己定义事件的时候不知道怎么设置鼠标点击的位置(应该是一个范围

unique021203 commented 3 years ago

这是写难度选择部分的代码,辛苦助教了 https://paste.ubuntu.com/p/fCjYhMFNJp/

dyn1721 commented 3 years ago

这个问题应该不难发现吧 你下图13行那个循环就是判断点击选择难度的结果 通过flag_level指示器跳出循环 但是你这么写就成了只要鼠标点击了,不管是不是真的改变了难度,flag_level都会变成1 然后跳出循环
这就导致点到按钮以外的情况也认为选择好难度了,继续向下执行,此时status.game_level不是你预设的(1,2,3)中的一个
估计后面哪步就出错了 image

dyn1721 commented 3 years ago

你可以修改一下while循环条件,只有难度那个变量变成1 2 3中一个才跳出循环

unique021203 commented 3 years ago

好嘞好嘞, 谢谢助教