Вниз  RFO BASIC
- 15.02.2015 / 04:15
oslopov1991
  Пользователь

oslopov1991 
Сейчас: Offline
А! Значит сперва рисовать всю карту, затем выдерживать кусочек, размерами на один тайл больше, чем помещается на экране, затем плавно скролить, пока не достигнет краю скрытой за экраном группы тайлов, после чего отрисовывать строку и/или столбец за экраном в том направлении, в этом каком было движение. Вопрос. Как тогда отрезать ту часть тайлов, что оказалась за экраном с противоположной стороны от той где дорисовывали тайлы. Это что надо за индексами массива следить постоянно и на опережение рисовать?
- 15.02.2015 / 11:34
Magatino
  Администратор

Magatino 
Сейчас: Offline
Цитата oslopov1991:
А! Значит сперва рисовать всю карту, затем выдерживать кусочек, размерами на один тайл больше, чем помещается на экране, затем плавно скролить, пока не достигнет краю скрытой за экраном группы тайлов,
Не будет рисовать всю карту, короче забей.

Объясни что это?
  1. image_move:
  2.  object=1
  3.  for cy=1 to 32
  4.   for cx=1 to 32
  5.    gr.modify object,"x",x+(64*(cx-1))
  6.    gr.modify object,"y",y+(64*(cy-1))
  7.    object=object+1
  8.   next cx
  9.  next cy
  10. return

А что это?
  1. map_made:
  2.  object=1
  3.  for cy=1 to 32
  4.   for cx=1 to 32
  5.    gr.bitmap.draw object,img+(im[cx,cy]),x+(64*(cx-1)),y+(64*(cy-1))
  6.    object=object+1
  7.   next cx
  8.  next cy
  9. return


Изменено Magatino (15.02 / 12:02) (всего 1 раз)
- 15.02.2015 / 14:09
oslopov1991
  Пользователь

oslopov1991 
Сейчас: Offline
Magatino, image_move перемещает карту, map_made создаёт карту. Но только сейчас обнаружил, что можно склеивать отдельные тайлы в один bitmap и уже его двигать. Вот пример:
  1. x=0
  2. y=0
  3.  
  4. gr.open 255,0,0,0
  5.  
  6. gr.bitmap.load img1,"/grafics/океан 1.png"
  7. gr.bitmap.load img2,"/grafics/трава 1.png"
  8.  
  9. gr.bitmap.draw im1,img1,x,y
  10. gr.bitmap.draw im2,img2,x+64,y
  11. gr.screen.to_bitmap all
  12.  
  13. gr.hide im1
  14. gr.hide im2
  15. gr.bitmap.draw screen,all,x,y+100
  16.  
  17. while 1=1
  18.  gr.render
  19. repeat

Если убрать gr.hide, то будут видны оба варианта, сверху вариант из отдельных тайлов, а снизу созданная из них картинка, вот думаю, чтоб отрисовывать сетку при инициализации обычным циклом, затем снимать с сетки тайлов склеенный вариант, потом гасить сетку, чтоб та не решалась и после этого быстро скролить склеенную карту. Так наверно лучше?
- 15.02.2015 / 15:15
Magatino
  Администратор

Magatino 
Сейчас: Offline
oslopov1991, Что то я нифига не врубаюсь что твой код делает :dum:

Короче, объясню в словах, берётся одна большая картинка и эту картинку ты программно режешь на тайлы.

Потом создаёшь или загружаешь массив карты.

Скроллинг включается тогда когда идёт перемещение персонажа.
Затем вычисляешь область отсечения.

В двух циклах рисуешь и перемещаешь тайлы.
- 15.02.2015 / 18:30
oslopov1991
  Пользователь

oslopov1991 
Сейчас: Offline
Да уже другой способ нашел. Как известно чем меньше картинок загружено тем быстрее они обрабатываются. Вот я и нашёл как уменьшить число картинок на экране и при этом отрисовывать большую карту. Вот что вышло:
Очень длинный код
Этот код читает массив по частям(ровно столько сколько умещается на экране тайлов), потом каждую часть по отдельности склеивает в большие рисунки. Далее, эти рисунки выводятся в нужном порядке и наконец сводятся с помощью виртуального джойстика на четыре стрелки. В итоге при альбомной ориентации планшета, экране разрешением 1024х552 . размер карты сокращается с 32х32 тайла до 2х4 картинки. Картинки можно считать новыми тайлами. Есть тормоза только потому, что бейсик этот интерпретатор, а не компилятор. Думаю если скомпилить прошу, то она будет летать как надо. Проца же не надо будешь распознавать операторы.

Изменено Ксакеп (15.02 / 23:09) (всего 1 раз)
- 15.02.2015 / 18:33
Naik
  Пользователь

Naik 
Сейчас: Offline
oslopov1991, data нужно генерировать в файл и читать из него потом, а не в исходник забивать вручную
- 15.02.2015 / 18:38
oslopov1991
  Пользователь

oslopov1991 
Сейчас: Offline
Да нельзя отсекать в этом бейсике. Можно только отрисова,скрыть или показать, но не отсечь совсем. Скрывать тайлы не подходит, просто на месте скрытого пустота остаётся и мешает что либо нарисовать ещё.
- 15.02.2015 / 18:41
oslopov1991
  Пользователь

oslopov1991 
Сейчас: Offline
Naik, на твой пост (#401541) отвечу, Знаю, что в bin или dat надо пихать, но пока что с байтами не работаю. И размер карты не очень большой. Вручную минут пятнадцать уходит чтоб забить в массив.
- 15.02.2015 / 20:28
kingdosya
  Пользователь

kingdosya 
Сейчас: Offline
oslopov1991, Когда покажешь свою первую игру на этом языке? Я хочу чтобы ты это сделал + подробно описал сборку. Спасибо за ране.
- 15.02.2015 / 21:11
oslopov1991
  Пользователь

oslopov1991 
Сейчас: Offline
kingdosya, с удовольствием тебе отвечу, Сомневаюсь, что она получится достаточно быстрой. Как никак бейсик интерпретатор, потому и тормозит. Так и не разобрался как делать плавный скроллинг достаточно быстро. Придётся скроллинг карт делать прерывистым, чтоб хоть как-то сносно игралось. Хотя может после компиляции тормоза пропадут всилу упрощения кода до ассемблера или что там в андроидах базовое. Про сборку напишу если соберу.

Изменено oslopov1991 (15.02 / 21:12) (всего 1 раз)
Наверх  Всего сообщений: 2716
Фильтровать сообщения
Поиск по теме
Файлы топика (511)