|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.03.2019, 17:12 | #1 |
Форумчанин
Регистрация: 30.06.2012
Сообщений: 145
|
Как рассчитать правильно координаты попадания в дартсе?
Доброго времени суток, уважаемые эксперты. Делаю игру Дартс. Столкнулся с проблемой. Координаты попадания в цель (и как итог - получаемые балы) иногда считает немного не правильно. Помогите найти ошибку или может по какой-то формуле попадания точек с окружность проще считать?
За основу взял центр круга и от него считаю абсолютную разницу координат выстрела и отнимаю центральную точку. В итоге беру наибольших сдвиг по координатам и считаю куда мы попали. При выстреле еще случайно смещаю дротик, чтобы больше рандома было в точности. Код и весь проект прилагаю: Код:
Скачать Дартс |
17.03.2019, 22:30 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,238
|
простите, а разве поле в Darts выглядит не так?
375px-Dartboard_diagram.svg.png вики - https://en.wikipedia.org/wiki/Darts |
17.03.2019, 22:53 | #3 |
Форумчанин
Регистрация: 30.06.2012
Сообщений: 145
|
Классическое - да. Но есть разные варианты и разные правила игры. В данном случае выбрана самая простая мишень.
|
17.03.2019, 23:57 | #4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 19,042
|
Почему бы расстояние от центра не считать или его квадрат? А то какой-то странный способ оценки положения точки относительно центра окружности. А если усложнить и считать угол, то можно и сектор определить, ну это так, вдруг настоящую мишень дартса захочешь использовать )
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 18.03.2019 в 00:00. |
18.03.2019, 10:06 | #5 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 979
|
По факту, как понял, тебе надо вычислить радиус относительно какого то центра. так и используй формулу круга. (х-а)^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. |
18.03.2019, 20:06 | #6 |
Форумчанин
Регистрация: 30.06.2012
Сообщений: 145
|
Спасибо. Формула круга идеально подошла. Спасибо огромное!
|
22.03.2019, 22:35 | #7 |
Заблокирован
Регистрация: 27.08.2010
Сообщений: 37
|
Ничего собственно рассчитывать не надо и не надо никаких формул. Есть простейшие алгоритмы, даже не алгоритмы а способы, реализовать куда и что попало. Они используются во всех профессиональных играх.
Причём само поле в вашем случае может быть любое. И не только круги, а самые замысловатые фигуры. Но, как вижу, вам этого уже не надо. Впрочем если всё же вас это заинтересует, пишите в личку. Я помогу вам. |
23.03.2019, 12:09 | #8 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Я бы для классического поля так бы сделал
Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
28.03.2019, 12:52 | #9 |
Форумчанин
Регистрация: 30.06.2012
Сообщений: 145
|
Спасибо за советы. Все таки пришлось по требованию преподавателя переделать под стандартную мишень. Но столкнулся с проблемой. У меня почему-то для нижней части мишени вроде считает правильно, а вот для верхней части - выдает неправильные результаты. Ошибка явно в формуле, которую я пытался адаптировать, но не могу понять где именно. Подскажите где я ошибся, пожалуйста.
Для наглядности я сделал показ угла, радиуса и набранных очков при движении мышкой над мишенью в заголовке формы. Код:
https://dropmefiles.com/lzauw |
28.03.2019, 13:55 | #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 |