简介
我在一段时间间隔内对实时改组球和接球进行了非常简单的模拟
https://github.com/gaplo917/Mark6-java/blob/master/src/Mark6.java
我想要模拟的是:
一台机器共有49个球,机器将继续洗球。一段时间后,机器将打开门拣出一个球。 以下是视频:http://youtu.be/5QHsYA2lcI0?t=2m2s
我写的是什么(极易版): 有49个球,我用了49 + 1个空间。
如果将球拖入额外的空间,则每次随机抽球。
经过一段时间后,我会检查额外的空间,看看球被换成了它并将其取出。
然后用-1标记空格以表示空格不再有效。
相反,我应该随机选择一个球,但不要使用额外的空间。只是忽略这种情况......
完成这项工作后,我将尝试使用Android Game引擎来模拟重力和碰撞以达到学习目的。
回到我的问题:
用-1表示使用过的数据是一种好方法吗?它是真实世界应用中的常规方法吗?
答案 0 :(得分:2)
更加面向对象的方法是创建一个BallSlot类,其中包含球号的单独成员以及它是否有效。
使用像0或-1这样的标记值通常不是一个好主意。它将多个语义含义重载为单个数据值,这使得解析值变得复杂。实际上,它意味着使用该值的所有代码都充满了if()语句。
答案 1 :(得分:1)
将球模型化为对象会更像Java,即使现在它们只有一个字段“id”。您可能想要添加其他属性(位置,动量等,如果您将其扩展为按照您的指示进行物理模拟),那么您将需要它们作为对象!
如果您只是使用int来表示球,是的,通常的做法是做“-1表示空”。但是,请不要变得“聪明”并开始使用“-2”和“-3”表示其他类型的东西。 =)