计算范围之间3种可能的数字组合的有效方法 - 飞镖游戏

时间:2014-07-15 21:22:08

标签: c#

我正在编写基于飞镖游戏的嵌入式设备程序,我正在为“计算机”播放器编写代码,基本上我会生成一系列随机分数,以便计算机尝试从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.

当然必须有一种更聪明的方法来快速找出有效的模拟组合,我想在这一点上我有隧道视野,并希望一组新的眼睛可能发现我没有的东西

0 个答案:

没有答案