- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我必须使用 Zelle 图形包为我的中级 Python 类制作一个太空入侵者游戏。我在射弹方面遇到了一些问题,它将运行代码,射击子弹,并继续移动子弹,但是当子弹移动时,我无法移动角色。我认为这是一个非常简单的问题,但我的编程经验还不够。谢谢。
from graphics import *
from time import *
game_over = False
win = GraphWin("skulls and bones", 500, 500)
skull = Image(Point(250, 450), "skull_2.gif")
skull.draw(win)
bullet = Circle(Point(250, 250), 10)
bullet.setFill("red")
def bone():
value = 0
key = win.getKey()
if key == "x":
bullet.draw(win)
return bullet
def space_ship_move():
key = win.getKey()
if key == "a":
skull.move(-10, 0)
if key == "d":
skull.move(10, 0)
if key == "x":
bone()
for i in range(100):
sleep(1)
bone().move(0, -5)
return key
while not game_over:
space_ship_move()'''
最佳答案
有两个问题:首先,win.getKey()
会阻塞,直到用户按下某个键。您不想这样做 - 请使用 win.checkKey()
。其次,您需要将动画和输入处理分离,因为您希望子弹在没有输入的情况下也能移动。您可以使用以下结构来完成此操作:
def space_ship_move():
handle_input()
animate()
sleep(0.1)
handle_input()
大部分是您已经拥有的内容:
bullet = None
bulletAnimStep = -1
def bone():
global bullet, bulletAnimStep
if bullet is not None:
bullet.undraw()
bullet = Circle(Point(250, 250), 10)
bullet.setFill("red")
bullet.draw(win)
bulletAnimStep = 0
def handle_input():
key = win.checkKey()
if key == "a":
skull.move(-10, 0)
if key == "d":
skull.move(10, 0)
if key == "x":
bone()
我认为 bone()
应该负责创建新的子弹。这就是当前函数的作用。它还将 bulletAnimStep
设置为 0
,表示我们正处于子弹动画的开头。我们的 animate() 可以使用该信息来决定何时停止子弹动画。它看起来是这样的:
def animate():
global bulletAnimStep
#animate bullet
if bulletAnimStep >= 0:
bulletAnimStep += 1
bullet.move(0, -5)
if bulletAnimStep >= 100:
#the bullet has gone far enough
bullet.undraw()
bulletAnimStep = -1
关于python - 我无法在Python太空入侵者游戏中射击时移动我的角色(使用Zelle图形包),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59308083/
渲染此 mandelbrot 集仅需 100 次迭代就需要一个多小时,而渲染 10,000 次迭代则需要 10 个小时。有没有办法让它更快: from graphics import * width
我正在模拟交通灯和汽车。当灯变绿时,汽车应该移动。 (我知道实际的红绿灯不会从绿色跳到红色,或从红色跳到黄色,但是......就这样吧)。该程序接受用户的输入,确定红绿灯应该循环多长时间;它首先保持红
我试图找出为什么我的一个函数中的 while 循环仍在运行,即使在我的图形中的点相等之后,也就是我将其设置为停止时。我做错了什么吗?我试图改变其他事情来让它工作但没有运气。这是一个游戏——当角色到达终
请注意:这与 eval() 的使用无关,它与使用和教授它的书籍的潜在质量(或缺乏质量)有关。所以在 Python 中已经有无数关于 eval() 的线程。 冒着招致 SO 愤怒和反对票的风险,我还是决
我想制作一个简单的程序来提高我对此类编程的了解。我发现了一个非常有用的库 pyeasyGA,并通过它我尝试使用graphics.py 制作一个简单的程序,该程序从随机生成的“pass”序列中创建一个收
我是 Java 新手,我只是想得到一些简单的东西,可能类似于 Zelle's graphics对于Python。 最佳答案 Java 类 Graphics和 Graphics2D应该包含 Zelle
该程序似乎有效,但是创建的线性回归线似乎并不是真正的最佳拟合线。 我认为问题在于方程的实现。我不确定我的解释是否正确,我也不确定我是否在做练习最后一段应该做的事情。 这是图形库:http://mcsp
由于我在尝试使用 J Zelle 教授的graphics.py 通过屏幕窗口输入信息时遇到一些问题,我正在阅读一些关于“http://anh.cs.luc.edu/python/hands-on/3.
我是一名优秀的程序员,十分优秀!