我正在使用@notifier = INotify::Notifier.new
@notifier.watch(DownloadHelpers::PATH.to_s, :create) do |file|
puts "Check: #{file.name}"
if file.name.eql?(File.basename(@filename.to_s))
@pdf = PdfReader.new(@filename)
# Check PDF
expect(@pdf.page_count).to eq(1)
expect(@pdf.pages[1]).to have_text("CONTRACTORS")
@notifier.stop # Stops the infinite loop watch
end
end
visit "/#/contractors_report"
within "#heading" do
expect(page).to have_text("Contractors")
end
click_on("pdf-btn")
@notifier.run # Make sure we finish our thread
和Python(很明显)创建一个网球游戏。我正在尝试实施一个计分板,以使当球停下时,假设其他玩家无法达到该分数,分数就会上升。
我尝试使用Pygame
语句检查球的速度是否已停止,但这几乎可以创建一个运行时钟。当球停在其起始位置时,我也不需要提高得分(尚未添加发球技巧)。
if
我希望球停下来后分数会更新。稍后实施服务机制时,我可能会担心重置球。
答案 0 :(得分:1)
由于网球的位置属性是浮点值,所以永远不会精确到0.0,但是获得的值非常接近0.0。
您必须执行Epsilon Comparison:
通过检查绝对值(abs()
)是否小于某个阈值(ε),来测试tennisball.speedx
和tennisball.speedy
是否接近0.0:
abs(tennisball.speedx) < espi and abs(tennisball.speedy) < espi:
在您的代码中更改术语tennisball.speedx == 0 and tennisball.speedy == 0
:
espi = 0.1
if abs(tennisball.speedx) < espi and abs(tennisball.speedy) < espi:
score = score + 1
请注意,您必须根据需要“选择” epsi
的值。
[...],但这几乎创建了一个运行时钟。
添加状态allow_score
,该状态指示是否允许得分并通过False
对其进行初始化:
allow_score = False
当球开始移动时,必须立即发出状态信号(allow_score = True
)。从现在开始就可以得分。
当球停下来并allow_score == True
时,就可以得分,但是只能得分一次,因此必须重置状态(allow_score = False
)。
这导致得分不会连续增加,因为要再次得分,球必须先移动:
while carryOn:
# [...]
moving = abs(tennisball.speedx) > espi or abs(tennisball.speedy) > espi
if moving:
allow_score = True
elif allow_score:
allow_score = False
score = score + 1
请注意,由于allow_score
已初始化False
,因此分数在开始时不会增加。