本文介绍了在关闭跟踪器的情况下,有没有一种方法可以不使用creen.update()来更新屏幕?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是新手,不熟悉使用Python编程。大约三周前,我使用海龟模块完成了一个俄罗斯方块的克隆,以测试我的技能。我的印象是,当我关闭动画跟踪程序时,我必须使用update()
方法手动更新窗口。昨天,在用海龟模块编写一个克隆蛇的代码时,我不得不向一个朋友解释为什么我要手动更新屏幕。为了证明,我打开了俄罗斯方块,并注释掉了update()
方法,以显示游戏不会运行。令我惊讶的是,它实际上起作用了,我搞不懂它是怎么做到的,因为如果没有update()
方法,就连我的蛇代码都不能工作。
以下是俄罗斯方块代码主循环的一部分:
while not game_over:
if not current_piece.does_piece_fit(starting_row + 2, starting_column, current_piece.current_piece):
game_over = True
wn.update()
movement()
marco.update_grid()
marco_next.show_next_piece(next_piece)
show_score()
current_piece.proyeccion()
marco_next.show_text(x_text_next_piece, y_text_next_piece, "Next Piece:", normal_style)
marco_next.show_text(x_text_hold, y_text_hold, "Hold:", normal_style)
show_instructions(x_text_instructions, y_text_instructions, instructions_text, smaller_style)
if holding:
marco_hold.show_hold_piece(hold_piece)
如果wn.update()
行被注释掉,它应该不起作用,但不知何故它起作用了。代码有点长,而且我是新来这个网站的,所以我不知道完全发布它对我来说是不是很糟糕或粗鲁。感谢您阅读本文,对于糟糕的英语和混乱的代码,我深表歉意。
推荐答案
某些Turtle命令调用update()
独立于您的调用。有些像end_fill()
直接做,有些像dot()
通过它们调用的其他方法间接做:
from turtle import *
tracer(False)
dot(100) # change 'dot' to 'forward' and run again
done()
如果您运行上面的命令,尽管调用tracer(False)
,您仍会得到一个点。如果将dot
更改为forward
,则将出现空白屏幕,除非您注释掉对tracer
的调用。
我对update()
的经验法则是:
不要以为任何人都会为您打电话
不要以为你是唯一一个这样认为的人
不仅仅是巨蟒海龟的情况。我的建议是,将您的update()
调用放回您认为需要的地方,否则Turtle的未来更新可能会破坏您的代码。
这篇关于在关闭跟踪器的情况下,有没有一种方法可以不使用creen.update()来更新屏幕?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!