2016-11-15 49 views
2

我试图制作一个游戏,其中两名玩家参与战斗并按下屏幕上的按钮以对对方造成伤害。角色可以处理的伤害应该是1到10之间的随机数。受到攻击的角色受到的伤害应该是相同的随机数。多种语言的随机数

这款游戏可以在Android和iOS上玩(Java和Swift),但是如何确保生成相同的随机数字以获得伤害和伤害?我意识到我可以将受到的伤害发送给受到攻击的玩家,并从他们的健康中扣除该金额,但我想知道是否有办法在Java和Swift中生成相同的随机数序列,这样我就不会有通过服务器。

+0

如果使用种子创建“Random”,它将遵循确定性序列。 – shmosel

+0

@shmosel你可以在Swift中使用相同的种子,仍然可以获得相同的序列吗? – 4castle

+0

@ 4castle我假设没有。 – shmosel

回答

1

您可能可以让每个对等端都是客户端和服务器。这被称为点对点网络。但是,您必须确保客户端不被黑客入侵。这可能很难实施。这是一个艰难的情况,一个小型服务器将是最好的方式。

(PS这个最好的语言最有可能是Haxe。我用这之前语言)

...其实,我想过这个问题,你可以有一个是共享的随机种子同行。你可以计算双方对双方的伤害,以确保它是有效的。

编辑: 根据文档,Haxe的Math.random()似乎在具有给定种子的平台上是相同的。它可以编译为iOS和Android代码以及其他平台。

1

你应该为此编写自己的课程。在两种语言中使用内置的随机数生成器并不能保证这一点。但是,您可以编写确保这一点的自定义逻辑。

例如,您可能会得到0到1之间的100,000个随机数的列表。您可以将该列表另存为文本文件并从两个项目中引用它。

上面是最接近你可以解决你的问题,而没有使两个客户端相互沟通。既然你问了一个没有使用服务器的解决方案,那是我的答案。但是,使用服务器或其他形式的网络通信似乎是正确的答案。