我的俄罗斯方块游戏需要一些帮助 我用C ++编写代码,这是我的问题:
俄罗斯方块块列表有7种类型: {'我','J','L','S','Z','O','T'}
我需要选择以上一个字符 选择S和Z的概率为每个1/12,并选择其他块 概率为每个1/6。
根据这些概率生成块的最佳方法是什么?
答案 0 :(得分:7)
声明并定义一个具有S和Z的单个出现的十二项数组;其余两次出现;并从中选择一个随机元素。
答案 1 :(得分:4)
像这样创建一个数组:
const char* block_distribution = {'I', 'I', 'J', 'J', 'L', 'L', 'S',
'Z', 'O', 'O', 'T', 'T'};
然后使用均匀分布从该数组中选择一个元素。
答案 2 :(得分:1)
将这些字符放在字符数组中,并使用srand()
生成0到6之间的随机值
比你随机得到
char myArray [] = {'我','J','L','S','Z','O','T'};
然后使用
获取值myArray [(rand()%5)+1]
答案 3 :(得分:0)
我能想到的最简单的解决方案是使用数值范围和伪随机数。
因此,首先为每个字母指定范围:
我:0到1
J:1到2
L:2到3
S:3到3.5
Z:3.5到4
O:4到5
T:5到6
然后生成0到6范围内的伪随机数。无论该数字落在哪个范围内,都是您选择的字母。
不幸的是我不知道C ++所以我无法为您提供代码,但我认为它不应该太难实现。