Darts Game - подсчет очков
Существует задача консольно реализовать подсчет очков в Дартсе:
Существуют две величины (координаты x и y) они получают значения и сравниваются с кругами, которые имеют определенный порог величины (ну классические круги в дартсе)
Сами интервалы значений, которые и определяет, куда попадет бросок (значение x и y) - больше 10 = 0, меньше 10 = 1, меньше 5 = 5, меньше 1 = 10. Я пытался реализовать через конструкцию if, но я не могу выполнить все тест кейсы.
Так я хотел бы понять - существует ли способ точнее сравнивать интервалы, чтобы <10 и <5 не накладывались на друг друга.
public static int GetScore(double x, double y)
{
if (x < 1 & y < 1)
{
return 10;
}
if (x < 5 & y < 5)
{
return 5;
}
if (x < 10 & y < 10)
{
return 1;
}
else
{
return 0;
}
}
Ответы (2 шт):
Доска для дартса - круг. Чем ближе к центру - тем большо очков. Вам надо считать радиус того круга, куда попал дротик и исходить от него Центр круга должен быть в 0:0.
public static GetScore(double x, double y){
double r = Math.Sqrt(x * x + y * y);
if(r < 1) return 10;
if(r < 5) return 5;
if(r < 10) return 1;
return 0;
}
Можно даже без корней :)
public static int GetScore(double x, double y)
{
double r = x*x+y*y;
if (r < 1) return 10;
if (r < 25) return 5;
if (r < 100) return 1;
return 0;
}
Или
public static int GetScore(double x, double y)
{
double r = x*x+y*y;
return (r < 1) ? 1 : (r < 25) ? 5 : (r < 100) ? 1 : 0;
}
