首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scratch游戏评分错误

Scratch游戏评分错误
EN

Stack Overflow用户
提问于 2015-06-17 00:47:26
回答 6查看 1.2K关注 0票数 3

我在Scratch上做了一个划船游戏(只是为了好玩),我在得分上遇到了问题。如果你想看看我已经写的代码,游戏的链接是https://scratch.mit.edu/projects/66541388/。由于某些原因,当游戏进行时,得分变量实际上并不总是以1为单位改变。每次我测试它的时候,它都会改变一个不同的数字。有没有关于问题是什么或者如何解决它的想法?

以下是代码的核心:

代码语言:javascript
复制
when green flag clicked
set [Score v] to [0]
set x to (0)
set y to (0)
point in direction (pick random (-90) to (90))
forever
    if <(y position) < [-146]> then
        broadcast [gameOver v]
        stop [all v]
    end
    if <touching [Paddle v]?> then
        change [color v] effect by (pick random (1) to (1000))
        change [Score v] by (1)
        point in direction (pick random (-90) to (90))
    end
    move (10) steps
    if on edge, bounce
end
EN

回答 6

Stack Overflow用户

发布于 2016-08-20 08:32:03

虽然这两个答案都是正确的,但您可以简单地将评分放在不同的代码块中,使用wait until <not<touching [Paddle v]>>,如下所示:

代码语言:javascript
复制
when green flag clicked
forever
    if <touching [Paddle v]> {
        change [color v] effect by (pick random (1) to (1000))
        change [Score v] by (1)
        wait until <not<touching [Paddle v]>>
票数 3
EN

Stack Overflow用户

发布于 2015-06-17 00:56:04

您的问题是您正在处理竞争条件。当您测试划桨和企鹅之间的碰撞时,企鹅没有像再次调用检测那样快速地离开划桨,导致它在分数上增加了一个以上。您可以添加一些计时代码,以便只有在计时器大于比方说一秒的情况下,它才能将分数递增1。然后在每次“合法”命中后重置计时器。

还有其他方法来处理这些情况,但你必须有创造性。

票数 0
EN

Stack Overflow用户

发布于 2015-06-17 03:12:04

urnotsam's answer在技术上是正确的,但我想给出它背后的一些理由和一个替代解决方案。

问题在于企鹅不是正方形。当你击打球拍时,它会转向一个随机的方向,并移动10步。现在,如果它一开始是面向侧面的,随机方向也是相当横向的,它可以通过这10步逃脱。如果两者都是直立的,也是一样的。但是如果它从侧面开始并垂直结束,它现在比以前更低了,即使在移动了10步之后,它的一部分仍然接触到了球拍。在我看来,让它领先十步或二十步应该会让它逃脱,而不会弄乱你的得分。

代码语言:javascript
复制
if <touching [Paddle v]?> then
    change [color v] effect by (pick random (1) to (1000))
    change [Score v] by (1)
    point in direction (pick random (-90) to (90))
    move (20) steps
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30873574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档