pygame - Pygame:在我放开按钮后,动作继续进行
问题描述
我已经做了几个项目,但是这次我遇到了一个问题。
当箭头穿过条形时,我制作了一个游戏类型,您单击一个按钮将其停止,并将其瞄准靠近中间。
您需要按下的按钮是随机的(w、a、s、d)。当一个按钮连续出现 2 次或更多次时,其他时间它会在第一帧中停止箭头,就像它一直被按下一样。当我完成箭头迷你游戏并进入类似 2D RPG 的游戏时也是如此。它继续朝着我上次按下的方向移动,就像按钮被卡住一样。
当我再次按下它时,它停止并且我可以自由移动。
如果你想看,我可以包含代码,但它又长又复杂,所以如果没有必要,我不想让你看整个事情。
如果您可以提供帮助或有任何问题,请写下来,谢谢。
编辑:我包含了箭头迷你游戏正在进行的部分代码,如果你想要一个完整版本,它大约是 200 行。谢谢。
while borba:
if enemyhp<=0:
break
crtanjeploceborbe()
crtanjeenemyhealthbar(enemyhp)
crtanjeneprijatelja((300+500)/2-100/2,10,neprijateljnb)
pygame.display.update()
mis=pygame.mouse.get_pos()
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
quit()
if event.type==pygame.MOUSEBUTTONDOWN:
if mis[0]<fightbuttonpos[2] and mis[0]>fightbuttonpos[0] and mis[1]<fightbuttonpos[1] and mis[1]>fightbuttonpos[3]:
fightmeterx=random.randint(actionspaceavailablex[0]-1,actionspaceavailablex[1])
fightmetery=random.randint(actionspaceavailabley[0]-1,actionspaceavailabley[1])
button=random.choice(["w","a","s","d"])
poztipke=fightmeterx-45
brzinatipke=2.5
natezanje=True
while natezanje:
if poztipke>=fightmeterx+380-45:
poztipke=fightmeterx+380-45
pygame.time.wait(2500)
dmg=5
break
for event in pygame.event.get():
if event.type==pygame.KEYDOWN:
if event.key==pygame.K_w:
buttonpress="w"
elif event.key==pygame.K_a:
buttonpress="a"
elif event.key==pygame.K_d:
buttonpress="d"
elif event.key==pygame.K_s:
buttonpress="s"
if buttonpress==button:
if poztipke+45<=fightmeterx+104 or poztipke>=fightmeterx+344:
dmg=5
elif poztipke+45<=fightmeterx+190 or poztipke>=fightmeterx+302:
dmg=10
elif poztipke+45<=fightmeterx+261:
dmg=20
else:
dmg=40
pygame.time.wait(1500)
borba=True
natezanje=False
crtanjeploceborbe()
crtanjeenemyhealthbar(enemyhp)
crtanjeneprijatelja((300+500)/2-100/2,10,neprijateljnb)
crtanjefightmetera(fightmeterx,fightmetery)
if button == "w":
crtanjewtipke(poztipke,fightmetery-90)
elif button == "a":
crtanjeatipke(poztipke,fightmetery-90)
elif button == "s":
crtanjestipke(poztipke,fightmetery-90)
else:
crtanjedtipke(poztipke,fightmetery-90)
pygame.display.update()
brzinatipke=brzinatipke*1.015
poztipke+=brzinatipke
enemyhp-=dmg
解决方案
我从不改回按下的按钮,所以它会记住上次迷你游戏(循环)按下的按钮
推荐阅读
- javascript - Vue.js - 在悬停时添加删除按钮并在按下按钮时删除它
- asp.net - 用户“SQLLogin”的 Asp.net LocalDB (SQL) 登录失败
- node.js - 使用 eventemitter 监听事件
- hive - Impala - 将 MON-YY 转换为 YYYYMM
- arduino - Sony Spresense + Arduino:连接基于 W5500 的以太网,如果
- apache-spark - 每次触发后如何更新 HDFS 文件?
- javascript - 在 marklogic 中找不到来自不同数据库的模块
- java - 如何引用部署在 jboss 环境中的 src/main/resources 文件夹中的文件?
- d3.js - 如何在转换中伪造计算经过的时间和消息?
- python-3.x - 在一行中获取多个输入的问题