我正在尝试想出一种从种子生成网格/关卡的方法。
我正在考虑使用一个6 x 6的网格,每个网格中有3个可能的瓦片。它的种子长度是108个字符,我怀疑没有人愿意复制108个字符长度的种子。(游戏可能会在iPhone上进行,所以种子将通过键盘输入)有没有办法缩短它?
我认为一种有趣的方式是使用文字。将网格分成三条2 x 6的线。并且每行用一个英文单词来表示。然后玩家只需输入3个单词,这就容易多了&给关卡起了一个名字。
对如何实现这一点有什么想法吗?
(我目前正在使用gamesalad)
谢谢您抽时间见我,
乔丹
发布于 2015-11-01 11:24:20
做空种子的。
好吧,108个字符有点过头了。你有6乘6的细胞,所以总共是36个细胞。每个单元格有3个不同的状态,而一个字符至少有64个不同的状态(A-Z,a-z,0-9,以及一些标点符号以保持它的简单性),所以即使有36个字符,我们也有远远超过我们需要的。
因此,让我们更详细地分析一下。计算机是以二进制方式工作的。比特是它可以使用的最小信息比特。一位可以打开或关闭,因此它有两种可能的状态。2位可以是off、off或off、on或on、off或on、on,因此这是4种不同的状态。如果我们再加一个比特,我们就会得到每个先前状态的两个状态,即3比特的4*2 =8个状态。乘以2,对于第四位,我们得到16个状态,同样是32,64,恰好是我们想要使用的字符数。因此需要6位来存储64种可能的状态。
现在让我们看一下网格。每个单元格都有3个状态。因此,两个单元格有9个可能的组合3*3,对于3个单元格,它的3*3*3 = 27接下来是3*3*3*3 = 81或3的4个单元格的幂或3^4 = 81。我们可以利用这个趋势来计算出所有36个单元格有多少种可能的组合。3的36次方。这是一个很大的数字150,094,635,296,999,121或150000万亿个组合。
那么我们需要多少位来存储这个数字。我可以作弊,问计算器,但那太简单了,
让我们看看,3个单元格有27个组合,5位有32个组合。因此,3个单元进入36个单元12次,每3个单元有5位,所以5*12是60位。这是一个很好的整数,因为我们的字符是每个6位,我们可以将每个可能的网格组合推到10个字符中,还有一些空闲的。我们每3个单元有5个备用组合,所以我们有60个组合备用12*5。如果我们再有4个组合就好了,那就是64,也就是2^6或6位或一个字符。我们不能删除半个字符,所以它必须是10个字符。顺便说一句,4个组合是两个位,所以从我们的60个字符位中提取出来,存储网格的最小位数是58。2的58次方应该恰好大于3的36次方。
因此,您的网格需要10个字符。每一个都是ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789:) perfect (8字节4个备用位)中的任何一个
我选择了我的第一个10个字符的种子BLINDMAN67现在怎么办?
https://stackoverflow.com/questions/33271904
复制相似问题