Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,069
#1

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

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

Как я уже писал, дошло дело до изучения рисования. И вот решил велосипед змейку изобрести.
Тема такая, имеем отступ сверху, чтоб всякие тексты писать да рекорды показывать, и поле огopоженное бордюром для красоты.
Когда отступа не было, то все было в ажуре, змея упирается в край и появляется башка с противоположного края. Расчет легкий: y = бордюр --> y = MeasureSpec.getSize - бордюр.
А вот когда решил отступ сделать то тут появилась засада: экраны бывают разные, расчет слишком оказался сложный, т.к. надо учесть много параметров для такого отображения поля и начальной позиции змеи, чтобы ровно попасть башкой в стену или фрукт.
Теперь думаю может лучше иметь один массив, где и будут определятся и бордюры, и змеи и фрукты?
Кто нибудь подобное уже проходил?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Spelcrawler
522 / 492 / 110
Регистрация: 12.03.2014
Сообщений: 1,643
Завершенные тесты: 1
10.06.2015, 11:38     Змейка - продумать столкновение со стеной #2
Rube, а если брать размеры не экрана, а вьюшки где змея ползает?
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,069
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 минуту
Еще самый самолет будет когда высота будет нечетная.
Spelcrawler
522 / 492 / 110
Регистрация: 12.03.2014
Сообщений: 1,643
Завершенные тесты: 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 использовать - потом он нормально округлится.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,069
10.06.2015, 12:13  [ТС]     Змейка - продумать столкновение со стеной #5
Spelcrawler, разницы нет, я и так работаю с целыми числами сейчас.
Имхо тупик работать с координатами пришел я к выводу.
EVP
319 / 241 / 43
Регистрация: 14.12.2010
Сообщений: 461
10.06.2015, 12:27     Змейка - продумать столкновение со стеной #6
Цитата Сообщение от Rube Посмотреть сообщение
Как я уже писал, дошло дело до изучения рисования. И вот решил велосипед змейку изобрести.
Цитата Сообщение от Rube Посмотреть сообщение
Кто нибудь подобное уже проходил?
У Марио Цехнера есть решение этой игры.

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

Android Змейка на Android
Продумать логику авторизации в бд C#
Canvas круг столкновение со стеной HTML5 Canvas
Android Столкновение в libgdx через overlaps
C++ Qt Реализации блокировок движения, при столкновением со стеной

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

Или воспользуйтесь поиском по форуму:
EVP
319 / 241 / 43
Регистрация: 14.12.2010
Сообщений: 461
10.06.2015, 15:11     Змейка - продумать столкновение со стеной #12
Цитата Сообщение от Rube Посмотреть сообщение
Вот пришел к выводу, что надо использовать другой подход.
Этот новый подход зовётся MVC и Цехнер даёт одну из его реализаций в книжке.
Но вкратце я его уже рассказал выше
Более подробно можно в книжке почитать, если есть желание.
Для игрушек довольно интересная книжка.
Базовые вещи рассказывает.
Yandex
Объявления
10.06.2015, 15:11     Змейка - продумать столкновение со стеной
Ответ Создать тему
Опции темы

Текущее время: 02:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru