Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
1

Змейка - продумать столкновение со стеной

10.06.2015, 11:19. Просмотров 329. Ответов 11
Метки нет (Все метки)

Как я уже писал, дошло дело до изучения рисования. И вот решил велосипед змейку изобрести.
Тема такая, имеем отступ сверху, чтоб всякие тексты писать да рекорды показывать, и поле огopоженное бордюром для красоты.
Когда отступа не было, то все было в ажуре, змея упирается в край и появляется башка с противоположного края. Расчет легкий: y = бордюр --> y = MeasureSpec.getSize - бордюр.
А вот когда решил отступ сделать то тут появилась засада: экраны бывают разные, расчет слишком оказался сложный, т.к. надо учесть много параметров для такого отображения поля и начальной позиции змеи, чтобы ровно попасть башкой в стену или фрукт.
Теперь думаю может лучше иметь один массив, где и будут определятся и бордюры, и змеи и фрукты?
Кто нибудь подобное уже проходил?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2015, 11:19
Ответы с готовыми решениями:

Синхронизация со стеной вконтакте
Подскажите пожалуйста как сделать так чтоб в приложении отображались лента...

Canvas круг столкновение со стеной
Помогите сделать столкновение со стеной как в игре Agario , там когда он...

Определить импульс, полученный стеной
Шарик массой m=300 г. ударился о стену и отскочил от нее. Определить импульс P1...

Определние угла между палкой и стеной
Около стены наклонно стоит палка длиной 4.5 м. Нижний конец находится на...

Реализации блокировок движения, при столкновением со стеной
Всем доброго времени суток! При написании игры, возникла некая проблема, а...

11
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
10.06.2015, 11:38 2
Rube, а если брать размеры не экрана, а вьюшки где змея ползает?
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
10.06.2015, 11:44  [ТС] 3
Я и беру вьюшку pY = MeasureSpec.getSize(heightMeasureSpec) + отступ(top).
cWidth - это ширина змеи и бордюра тоже.
Рисую бордюр canvas.drawRect(pX, pY, width-cWidth/2, height-cWidth/2 + top, cPaint);

Добавлено через 1 минуту
Еще самый самолет будет когда высота будет нечетная.
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
10.06.2015, 11:52 4
Rube, а если вьюшку переписать и получать размеры вот так:
Java
1
2
3
4
5
6
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        float width = canvas.getWidth();
        float height = canvas.getHeight();
    }
Добавлено через 2 минуты
Там и с нечетным размером норм будет, если float использовать - потом он нормально округлится.
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
10.06.2015, 12:13  [ТС] 5
Spelcrawler, разницы нет, я и так работаю с целыми числами сейчас.
Имхо тупик работать с координатами пришел я к выводу.
0
EVP
503 / 266 / 59
Регистрация: 14.12.2010
Сообщений: 531
10.06.2015, 12:27 6
Цитата Сообщение от Rube Посмотреть сообщение
Как я уже писал, дошло дело до изучения рисования. И вот решил велосипед змейку изобрести.
Цитата Сообщение от Rube Посмотреть сообщение
Кто нибудь подобное уже проходил?
У Марио Цехнера есть решение этой игры.

Насколько, помню, у него была была построена модель игры в логических координатах,
а отображалка рисовала под конкретное устройство.
Собственно, так обычно и делается: пишется модель игры и к ней контроллер,
которому позволено изменять её в логических координатах игры.
А представление только отображает ничего не меняя.
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
10.06.2015, 13:35  [ТС] 7
Еле нашел этого Марио Цехнера. Не нашел там ничего, может плохо искал.
0
EVP
503 / 266 / 59
Регистрация: 14.12.2010
Сообщений: 531
10.06.2015, 13:46 8
Цитата Сообщение от Rube Посмотреть сообщение
Еле нашел этого Марио Цехнера. Не нашел там ничего, может плохо искал.
Глава 6. "Мистер Ном" покоряет Android.
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
10.06.2015, 14:02  [ТС] 9
На books.google.ru половина страниц отсутствует, но вроде как тоже используется массив с координатами.
0
EVP
503 / 266 / 59
Регистрация: 14.12.2010
Сообщений: 531
10.06.2015, 14:42 10
Цитата Сообщение от Rube Посмотреть сообщение
но вроде как тоже используется массив с координатами.
Координаты будут всегда использоваться. Вопрос: какие это координаты?
Цитата Сообщение от Rube Посмотреть сообщение
Когда отступа не было, то все было в ажуре, змея упирается в край и появляется башка с противоположного края.
Тут у тебя проблема странная.
Если использовать паттерн MVC, то при изменениях отображения ничего в логике игры не меняется.
Никакие отступы игру не волнуют, т.к. модель и контроллер об этих вещах не знают.
За отступы отвечает представление, оно то и рассчитывает как рисовать поле.
А ты, судя по цитате, завязываешься на отображение и чего-то там считаешь, исходя из него.
Получается, что у тебя нет модели игры. А она нужна, чтобы не зависеть от экрана устройства.
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
10.06.2015, 14:55  [ТС] 11
Цитата Сообщение от EVP Посмотреть сообщение
Координаты будут всегда использоваться. Вопрос: какие это координаты?
Вот-вот, я об этом именно и спрашивал в шапке.
Цитата Сообщение от EVP Посмотреть сообщение
А ты, судя по цитате, завязываешься на отображение и чего-то там считаешь, исходя из него.
Вот пришел к выводу, что надо использовать другой подход.
0
EVP
503 / 266 / 59
Регистрация: 14.12.2010
Сообщений: 531
10.06.2015, 15:11 12
Цитата Сообщение от Rube Посмотреть сообщение
Вот пришел к выводу, что надо использовать другой подход.
Этот новый подход зовётся MVC и Цехнер даёт одну из его реализаций в книжке.
Но вкратце я его уже рассказал выше
Более подробно можно в книжке почитать, если есть желание.
Для игрушек довольно интересная книжка.
Базовые вещи рассказывает.
1
10.06.2015, 15:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2015, 15:11

Игра "Змейка": чтобы змейка не съедала сама себя
Здравствуйте! Пишу змейку на VB 2010. Не получается составить условие того,...

Определить значение угла α между палкой и стеной при заданных значениях
Около стены наклонно стоит палка.Длина палки-X.Нижний конец палки расположен на...

Продумать
Здравствуйте! Помогите пожалуйста! Не могу сообразить как сделать экспертную...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru