python - 限制在pygame中可以按下一个键的次数
问题描述
我正在用 pygame 制作一个简单的骰子游戏,我试图只允许最多按下空格键 5 次,直到游戏完成并显示分数。这是我的代码片段:
...
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
for i in range (5): #number of wanted rounds
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
dice1.roll = True #rolls dice
dice2.roll = True #rolls dice
player_one.new_score(dice1_set) #calculates P1 new score
player_two.new_score(dice2_set) #calculates P2 new score
但是,这仍然允许按任意次数的空格键,并且无论何时按下骰子仍然会滚动。如何确保在按下空格键五次后,再次按下它不会使骰子再次开始滚动,而是可以开始打印分数等?
谢谢!
解决方案
您需要某种计数器或标志来知道何时停止掷骰子或通常触发或停止某些动作。像这样的工作:
if event.type == pg.KEYDOWN:
if event.key == pg.K_SPACE and SPACE_COUNTER < 5:
SPACE_COUNTER +=1
else:
print("PUT YOUR CODE FOR SCORE RESET")
if event.key == pg.K_RETURN and SPACE_COUNTER >= 5:
SPACE_COUNTER = 0
我假设所有这些都发生在你的内部main_loop
所以SPACE_COUNTER
是全局变量,它被定义为SPACE_COUNTER = 0
循环之外。最后一行用于重新启动变量,当您按 Enter 并且计数器已经在 5 上时,它会将其重置为 0 您也可以单独创建用于计数的函数。希望这可以帮助。
推荐阅读
- verilog - 如何在时钟的 posedge 和 negedge 设置信号?
- python - 将常量列表添加到 pandas 列
- javascript - 使用 Firebase JS SDK 将 Unity WebGL 表单发布到 Cloud Firestore
- javascript - 如何从 date.now 转换为太平洋时间
- android-recyclerview - Android:带有卡片的水平 RecyclerView 布局正在切断较大布局的底部
- python - 为什么 time.sleep 不能等待超过 1 分钟?
- android - 如何在 Android 上测试 BLE 对象?
- javascript - 在 URL 中追加查询而不是使用 Express.js 删除它们?
- regex - 删除大小写匹配的停用词
- sql - 如何从 SQL 计数中排除特定行