![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 30.06.2012
Сообщений: 145
|
![]()
Доброго времени суток, уважаемые эксперты. Делаю игру Дартс. Столкнулся с проблемой. Координаты попадания в цель (и как итог - получаемые балы) иногда считает немного не правильно. Помогите найти ошибку или может по какой-то формуле попадания точек с окружность проще считать?
За основу взял центр круга и от него считаю абсолютную разницу координат выстрела и отнимаю центральную точку. В итоге беру наибольших сдвиг по координатам и считаю куда мы попали. При выстреле еще случайно смещаю дротик, чтобы больше рандома было в точности. Код и весь проект прилагаю: Код:
Скачать Дартс |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
простите, а разве поле в Darts выглядит не так?
375px-Dartboard_diagram.svg.png вики - https://en.wikipedia.org/wiki/Darts |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 30.06.2012
Сообщений: 145
|
![]()
Классическое - да. Но есть разные варианты и разные правила игры. В данном случае выбрана самая простая мишень.
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Почему бы расстояние от центра не считать или его квадрат? А то какой-то странный способ оценки положения точки относительно центра окружности. А если усложнить и считать угол, то можно и сектор определить, ну это так, вдруг настоящую мишень дартса захочешь использовать )
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 18.03.2019 в 00:00. |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 977
|
![]()
По факту, как понял, тебе надо вычислить радиус относительно какого то центра. так и используй формулу круга. (х-а)^2+(y-b)^2=R^2
тебе надо найти R=((x-a)^2+(y-b))^0.5 и потом проверять какой радиус по твоим if. где a-центр по х (175), b-центр по y (175), x координата дротика гризонтальная y координата вертикальная. да и if лучше заменить на case или использовать else.
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
Последний раз редактировалось IliaIT; 18.03.2019 в 10:11. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 30.06.2012
Сообщений: 145
|
![]()
Спасибо. Формула круга идеально подошла. Спасибо огромное!
|
![]() |
![]() |
![]() |
#7 |
Заблокирован
Регистрация: 27.08.2010
Сообщений: 37
|
![]()
Ничего собственно рассчитывать не надо и не надо никаких формул. Есть простейшие алгоритмы, даже не алгоритмы а способы, реализовать куда и что попало. Они используются во всех профессиональных играх.
Причём само поле в вашем случае может быть любое. И не только круги, а самые замысловатые фигуры. Но, как вижу, вам этого уже не надо. Впрочем если всё же вас это заинтересует, пишите в личку. Я помогу вам. |
![]() |
![]() |
![]() |
#8 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]()
Я бы для классического поля так бы сделал
Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 30.06.2012
Сообщений: 145
|
![]()
Спасибо за советы. Все таки пришлось по требованию преподавателя переделать под стандартную мишень. Но столкнулся с проблемой. У меня почему-то для нижней части мишени вроде считает правильно, а вот для верхней части - выдает неправильные результаты. Ошибка явно в формуле, которую я пытался адаптировать, но не могу понять где именно. Подскажите где я ошибся, пожалуйста.
Для наглядности я сделал показ угла, радиуса и набранных очков при движении мышкой над мишенью в заголовке формы. Код:
https://dropmefiles.com/lzauw |
![]() |
![]() |
![]() |
#10 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]()
2*pi накинуть чтобы угол был положительным.
Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Даны координаты трёх точек, являющихся вершинами некоторого параллелограмма. Найти координаты четвертой вершины. | yamato_pm | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 18.12.2013 19:42 |
Подъёмная сила крыла. Как правильно рассчитать ? | pompiduskus | Свободное общение | 7 | 05.10.2013 22:12 |
Как правильно расположить изображение на веб-странице, задав его координаты в CSS? | Michael_Ardan | HTML и CSS | 2 | 07.02.2013 19:07 |
Не правильно исчисляются координаты. | pastuhdima | Помощь студентам | 2 | 17.11.2011 16:09 |
Как правильно получить координаты по клику на ячейку таблицы? | Stilet | JavaScript, Ajax | 3 | 26.08.2009 16:19 |