Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

Canvas круг столкновение со стеной - HTML5 Canvas
Помогите сделать столкновение со стеной как в игре Agario , там когда он сталкивается с ней по мере захождения за неё исчезает (вплоть до...

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

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

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

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

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

11
Spelcrawler
531 / 501 / 111
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
10.06.2015, 11:38 #2
Rube, а если брать размеры не экрана, а вьюшки где змея ползает?
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
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 / 111
Регистрация: 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,072
10.06.2015, 12:13  [ТС] #5
Spelcrawler, разницы нет, я и так работаю с целыми числами сейчас.
Имхо тупик работать с координатами пришел я к выводу.
0
EVP
489 / 257 / 44
Регистрация: 14.12.2010
Сообщений: 515
10.06.2015, 12:27 #6
Цитата Сообщение от Rube Посмотреть сообщение
Как я уже писал, дошло дело до изучения рисования. И вот решил велосипед змейку изобрести.
Цитата Сообщение от Rube Посмотреть сообщение
Кто нибудь подобное уже проходил?
У Марио Цехнера есть решение этой игры.

Насколько, помню, у него была была построена модель игры в логических координатах,
а отображалка рисовала под конкретное устройство.
Собственно, так обычно и делается: пишется модель игры и к ней контроллер,
которому позволено изменять её в логических координатах игры.
А представление только отображает ничего не меняя.
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
10.06.2015, 13:35  [ТС] #7
Еле нашел этого Марио Цехнера. Не нашел там ничего, может плохо искал.
0
EVP
489 / 257 / 44
Регистрация: 14.12.2010
Сообщений: 515
10.06.2015, 13:46 #8
Цитата Сообщение от Rube Посмотреть сообщение
Еле нашел этого Марио Цехнера. Не нашел там ничего, может плохо искал.
Глава 6. "Мистер Ном" покоряет Android.
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
10.06.2015, 14:02  [ТС] #9
На books.google.ru половина страниц отсутствует, но вроде как тоже используется массив с координатами.
0
EVP
489 / 257 / 44
Регистрация: 14.12.2010
Сообщений: 515
10.06.2015, 14:42 #10
Цитата Сообщение от Rube Посмотреть сообщение
но вроде как тоже используется массив с координатами.
Координаты будут всегда использоваться. Вопрос: какие это координаты?
Цитата Сообщение от Rube Посмотреть сообщение
Когда отступа не было, то все было в ажуре, змея упирается в край и появляется башка с противоположного края.
Тут у тебя проблема странная.
Если использовать паттерн MVC, то при изменениях отображения ничего в логике игры не меняется.
Никакие отступы игру не волнуют, т.к. модель и контроллер об этих вещах не знают.
За отступы отвечает представление, оно то и рассчитывает как рисовать поле.
А ты, судя по цитате, завязываешься на отображение и чего-то там считаешь, исходя из него.
Получается, что у тебя нет модели игры. А она нужна, чтобы не зависеть от экрана устройства.
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
10.06.2015, 14:55  [ТС] #11
Цитата Сообщение от EVP Посмотреть сообщение
Координаты будут всегда использоваться. Вопрос: какие это координаты?
Вот-вот, я об этом именно и спрашивал в шапке.
Цитата Сообщение от EVP Посмотреть сообщение
А ты, судя по цитате, завязываешься на отображение и чего-то там считаешь, исходя из него.
Вот пришел к выводу, что надо использовать другой подход.
0
EVP
489 / 257 / 44
Регистрация: 14.12.2010
Сообщений: 515
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
Привет! Вот еще темы с ответами:

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

Помогите продумать структуру БД - MS Access
Я вот думаю создать таблицы таблицу таблицу

Продумать логику авторизации в бд - C#
есть таблица созданная в Access (Login) в ней два поля (Логин и Пароль). Как реализовать проверку: водим логин в текстбокс1 и пароль в...

Продумать логику тестирования студентов - C#
Ку-ку ! Есть 3 класса: Student, Teacher, Test. Студент выбирает предмет и проходит экзамен, получает оценку. Учитель мониторит всё это...


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

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

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