我正在编写基于飞镖游戏的嵌入式设备程序,我正在为“计算机”播放器编写代码,基本上我会生成一系列随机分数,以便计算机尝试从501下降到零,所有都非常直接,直到得分低于170,这是在飞镖中你可以结账并完成双倍的数字,例如"40 = double 20, 16 = double 8 and so on..."
,我有一个数组“ Checkoutcodes“我可以查询允许计算机完成游戏的数字组合,例如145 = "t20t15d20"
转换为(3x20, 3x15, 2x20)
145
和游戏结束。现在显然在现实世界中,每次都不可能出去,所以我编写了代码来模仿结帐的尝试。
这些数字代表飞镖盘上圆形图案的顺序,注意5位于20
20,1,18,4,13,6,10,15,2,17,3,19,7,16,8,11,14,9,12,5
为了模仿尝试,我随机选择所需的数字或左边或右边的数字,因此对于145,对于第一部分“t20”,计算机可能会达到1,20,5或( 3X1),(3×20),(3×)。现在如果它选择“t20”以外的数字,那么我必须检索一个新的结账代码,所以如果一个(3x5)被击中,剩下的分数将是130而新的结账代码将是“t20t20d5”。这将重复,直到投掷3个飞镖,最后我的代码将评估剩余的总分与预期的剩余。如果它们不相等,那么我循环回来再试一次,这在PC上测试时可以正常工作,但是当加载到嵌入式设备上时,它的速度很慢。下面进一步解释了我的代码如何工作的流程。
//Successful mimic
145 - "t20t15d20" - (3x20) hit
85 - "t19d14" - (1x7) hit
78 - "t18d12" - (3x4) hit
Outcome is 66, expected was 66 so (3x20),(1x7),(3x4) is a valid combination
//Unsuccessful mimic
145 - "t20t15d20" - (1x5) hit
140 - "t20t20d10" - (3x20) hit
80 - "t20d10" - (1x1) hit
Outcome is 79, expected was 66 so (1x5),(3x20),(1x1) is not a valid combination, so code will loop till a valid combination is found.
当然必须有一种更聪明的方法来快速找出有效的模拟组合,我想在这一点上我有隧道视野,并希望一组新的眼睛可能发现我没有的东西