假设我有20个攻击转弯的回合制游戏,并且玩家的攻击速度决定了他们攻击的频率,当一个人的攻击速度为5时,你将如何计算和/或绘制“谁攻击时”的表格另一个8的速度? (这些是测试值,我将使用的值会有所不同.20次攻击转弯将成为上限,但是,每个玩家将能够投入他们自己的攻击速度,其技能点最高可达10)
我已经在C中编程了大约2年,我正在玩Obj-C制作我的第一个indy游戏,任何建议或知识都会有很大的帮助。
答案 0 :(得分:0)
如果我理解正确的问题:
攻击的第一个将是min(a,b)
,其中a
和b
是您的初始“攻击速度”,5和8.然后减去两者的最小值,如果结果为0或更少再次添加攻击者的原始值。因此,在第一次攻击后,再次a=5
,但现在b=8-5=3
。然后轮到:
a = 5 - 8 = -3
b = 3 - 8 = -5
两者都小于零,所以再次添加5和8:
a = 2
b = 3
攻击:
a = -3 -> a = 2
b = -2 -> b = 6
因此得到了另一个打击。等等,直到你获得平局 - 你必然会遇到这种或那种方式。你可以返回一个“平局”结果,或让最后一个攻击者或最后一个后卫“赢”那一个。考虑一下,因为如果两个玩家都具有相同的“攻击”价值会怎样呢?
答案 1 :(得分:0)
这个数学问题告诉我轮到谁了 -
例如: 有11次攻击 你攻击8次,敌人攻击3次 确定均匀分布且始终可重复的攻击序列。
在这种情况下: 1.玩家1攻击 2.玩家1攻击 3.玩家2攻击 4.玩家1攻击 5.玩家1攻击 6.玩家1攻击 7.玩家2攻击 8.玩家1攻击 9.玩家1攻击 10.玩家1攻击 11.玩家2攻击 (只要需要重复这11个步骤)
我首先想到的是解决方案最好用分区完成,直到我遇到20个墙,所以
我选择减法bc它可以被再现并且以编程方式更好地工作,而不是通过除法创建攻击序列并将其存储为数组并在每次需要确定人员转弯时索引数组。
所以我的代码是:
答案 2 :(得分:0)
if (playerTwoWent == 0)
{
difference = difference - player_twos_speed;
}
else if (playerTwoWent == 1)
{
difference = player_ones_speed + difference;
playerTwoWent = 0;
}
if (difference >= 0)
{
printf("player 1s turn: %d\n", difference);
}
else if (difference < 0)
{
if (playerTwoWent == 0)
{
printf("player 2s turn: %d\n", difference);
playerTwoWent = 1;
}
}