У меня есть следующий код для боя, но пользователь выиграет примерно в 99,9% случаев (проверено с 5000 случайных циклов)
У меня есть следующие переменные, которые влияют на бой
сила | защита | ловкость | повреждение | сложность портала (всегда +1 для остановки * на 0) | критический
Это то, что у меня есть до сих пор
//player variable
//(int) player.itemDamage = 20
//(int) player.itemStr = 2
//(int) player.itemDex = 4
int defense = (int)Math.Round((((portal + 1) * ((rand.NextDouble() + 0.5))) + 5) / 2, 0);
int damage = (int)Math.Round((((portal + 1) * ((rand.NextDouble() + 0.5))) + player.itemDamage), 0);
int str = (int)Math.Round((((portal + 1) * ((rand.NextDouble() + 0.5))) + player.itemStr), 0);
int dex = (int)Math.Round((((portal + 1) * ((rand.NextDouble() + 0.5))) + player.itemDex), 0);
while(true)
{
for (int i = 0; i < 10; i++)
{
critical += rand.NextDouble();
}
eHP -= (int)Math.Round((((player.itemDamage + player.itemStr) - defense) * critical) / 2, 0);
critical = 1;
for (int i = 0; i < 10; i++)
{
critical += rand.NextDouble();
}
HP -= (int)Math.Round((((damage + str) - 5) * critical) / 2, 0);
if (eHP <= 0)
{
return;
}
else if (HP <= 0)
{
return;
}
}
Что я могу изменить в следующем коде, чтобы пользователь (HP) выигрывал в 70% случаев. Могу ли я получить некоторые предложения, пожалуйста? Я ужасно разбираюсь в алгоритмах. Изменить: хотя я хочу, чтобы пользователь выигрывал в 70% случаев, я все же хочу, чтобы он был круглым на основе урона, а не с использованием простого утверждения if (0 > 70) win else, потому что это не было бы очень интересный бой.
if(rand.nextDouble()<0.7) win(); else lose();
- person John Dvorak   schedule 25.11.2012