Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Проекты > Проекты на BlitzMax

Ответ
 
Опции темы
Старый 17.02.2012, 21:53   #151
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Vivo

Сейчас рисуется DrawImage(). Её нельзя загрузить одной картинкой, так как она меняется в зависимости от освещения. Если день то картинка одна, если ночь друга, если ночь и рядом факел - такая же как днём. Также, обратил внимание на то, что Cls ничего не делает( по крайней мере видимо). На что он влияет?
(Offline)
 
Ответить с цитированием
Старый 17.02.2012, 22:31   #152
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Vivo

Ясно.
А cls (сокращенно от 'clear screen') - команда которая стирает все с экрана.
Так как в большинстве игр экран все равно перерисуется целиком, чаще всего не используется.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Старый 17.02.2012, 22:36   #153
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Vivo

И что, получается кроме drawimage() ничего не остаётся? И ещё вопрос: почему так требовательно. Рисуется только 1280 картинок, а в минуса уходит 500 фпс.
(Offline)
 
Ответить с цитированием
Старый 17.02.2012, 22:39   #154
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Vivo

ну дык 1280 DIP это немало, неплохо бы оптимизировать было
__________________
(Offline)
 
Ответить с цитированием
Старый 17.02.2012, 22:45   #155
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Vivo

Вот и думаю, как бы это сделать. Пытался сделать так, чтобы рисовалась только та земля что видна, правда функция на проверку требует столько же(если не больше)
(Offline)
 
Ответить с цитированием
Старый 18.02.2012, 00:50   #156
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Vivo

Ни за что не поверю что простая проверка пересечения прямоугольников потребует больше времени чем вызов такой тяжелой функции как DIP.
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Dzirt (18.02.2012)
Старый 18.02.2012, 01:07   #157
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Vivo

Функция делает перебор по всем элементам типа земля и по всем элементам типа камни. То есть, если на карте 100 камней, ты мы проверяем 1280 блоков земли на эти 100 камней, только ради того чтобы не рисовать 100 блоков земли под ними.
(Offline)
 
Ответить с цитированием
Старый 18.02.2012, 01:28   #158
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Vivo

А зачем вообще блоки земли хранятся? Разве с ней можно что-то сделать (имею ввиду игровой процесс)?
Пусть рисует поблочно землю только на текущем экране, с учетом освещения, все как надо, а как объекты ее не хранит вообще.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Старый 18.02.2012, 01:34   #159
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Vivo

а без типов тут не обойтись, это нужно для удобного расчета расстояния от блока земли до факела.
(Offline)
 
Ответить с цитированием
Старый 18.02.2012, 02:14   #160
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Vivo

Но ведь можно в том месте, где происходит отрисовка всего,
тупо пустить цикл рисования тайлов земли, и на каждом шагу цикла
будут доступны координаты тайла земли (иначе как их рисовать?),
и следовательно можно будет рассчитать и расстояние до источников света, и подходящий цвет.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Старый 18.02.2012, 13:00   #161
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Vivo

Function Close2Stone(lx,ly)
For m.Main=Each Main
If ImagesOverlap(m\stone,m\x,m\y,dground,lx,ly) Then
Return True
EndIf
Return False
Next
End Function





Function UpdateMap()
For g1.groundmap=Each groundmap

If day=1 Then
g1\light=1
EndIf
If NTT(g1\x,g1\y)=False And day=0 Then
g1\light=0
EndIf
If g1\light=0 And NTT(g1\x,g1\y) Then
g1\light=1
EndIf 
If g1\light=1 Then
DrawImage ground,g1\x,g1\y
EndIf
If g1\light=0 Then
DrawImage dground,g1\x,g1\y
EndIf
Next
End Function
Результат -2 FPS.
(Offline)
 
Ответить с цитированием
Старый 18.02.2012, 16:58   #162
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Vivo

Function CreateArrow(x2,y2)
ar.arrow_=New arrow_
ar\x=x2
ar\y=y2
ar\angle=ATan2(MouseY()-y,MouseX()-x)+180
End Function

Function UpdateArrow()
For ar.arrow_=Each arrow_
ar\x=ar\x+Cos(ar\angle)*15
ar\y=ar\y+Sin(ar\angle)*15
DrawImage arrow1(Int(ar\angle)),ar\x,ar\y
If ar\x>R1 Or ar\x<0 Or ar\y>R2 Or ar\y<0
Delete ar
EndIf
Next
End Function
Почему-то, стрела летит в противоположную сторону от курсора. Если поменять "+Cos(ar\angle)*15" на "-" то полетит куда надо, вот только рисоваться тогда будет не той стороной Можете подсказать что не так?
Также, нужны картинки лука, стрелы, копья, верстака, крабового мяса, сундука, двери. Всё кроме верстака 32х32, верстак 64х32. Заранее спасибо!
UPD
Всё проблема решена: просто перевернул картинку стрелы. Хотя, не ясно почему нужен минус, а не плюс.
(Offline)
 
Ответить с цитированием
Старый 18.02.2012, 21:07   #163
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Vivo

Function UpdateMap()
cwidth=40
cheight=30 (поменять, в зависимости от того, сколько блоков вмешается на экран по ширине и высоте соответственно)

For x=0 to cwidth
   For y=0 to cheight
      light = False
      If day=1 Then
         light=True
      EndIf
      If NTT(x*32, y*32)=False And day=0 Then
         light=False
      EndIf
      If Not light And NTT(x*32, y*32) Then
         light=True
      EndIf 
      If light Then
         DrawImage ground, x*32, y*32
      EndIf
      If Not light Then
         DrawImage dground, x*32, y*32
      EndIf
   Next
Next
End Function
Я имел ввиду что-то вроде этого.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Старый 18.02.2012, 21:19   #164
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Vivo

а на сколько это более выгодно, чем использовать типы?
(Offline)
 
Ответить с цитированием
Старый 18.02.2012, 21:24   #165
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Vivo

Экономит память. Делает код немого понятнее. А быстродействие надо затестить.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 08:00.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com