|
06.05.2012, 16:58
|
#331
|
Знающий
Регистрация: 01.04.2011
Адрес: Екатеринбург
Сообщений: 232
Написано 48 полезных сообщений (для 82 пользователей)
|
Ответ: Vivo
У меня ваще черный экран.
1920x1080
|
(Offline)
|
|
06.05.2012, 17:18
|
#332
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Vivo
Перезайди, это проблема с генерацией мира.
|
(Offline)
|
|
06.05.2012, 22:06
|
#333
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Vivo
dx=KeyDown(KEY_D)-KeyDown(KEY_A)
If dx=1 dpic=1 это для картинки
If dx=-1 dpic=0
If camera_x+50*dx>0 And camera_x+R1+50*dx<map_width*16 And camera_y-g>0 And camera_y+R2-g*20<map_height*16 проверяем, не выходит ли камера за пределы карты
If solid[map[Int((camera_x+R1/2)/16),Int((camera_y-g+R2/2+48)/16)]]=1 Or solid[map[Int((camera_x+24+R1/2)/16),Int((camera_y-g+R2/2+48)/16)]]=1 Or solid[map[Int((camera_x+15+R1/2)/16),Int((camera_y-g+R2/2+48)/16)]]=1 проверяем на наличие твёрдого блок под игроком. +48 - из-за того, что размеры картинки игрока 28 на 48. Три раза проверяем потому что игрок может занять сразу три блока.
g=0 Останавливаем скорость игрока по оси y
If KeyDown(KEY_SPACE) g=7 Проверяем на нажатие пробела
camera_y=(Int(camera_y+49)/16)*16-38-g !!!!! ВОТ ОНО. ВОТ ЭТОТ БРЕД МОИХ КОШМАРОВ!!! объясняю логику. camera_y+49 - из-за размеров картинки, то есть проверяем пикслель под игроком. /16 - переводим координаты в блоки, *16 - обратно в нормальную систему. -g - это для поднятия игрока, если он прыгает. -38 - наш злобный враг. В нём вся соль. Дело в том, что если мыслить логически, то мы должны написать -49( мы ведь проверяли блок под(!) игроком, а камера находится на уровне головы), но вот в практике -49 не даёт результата. Точнее оно может дать результат на каком-то разрешении. -38 даёт результат на высоте экрана в 600( лично у меня ). Дальше комментировать думаю не стоит, ибо там всё понятно, да и ошибка не там.
Else
g=g-0.4
If g<-20 g=-20
If g>0
If solid[map[Int((camera_x+R1/2+28)/16),Int((camera_y+R2/2-1)/16)]]=0 And solid[map[Int((camera_x+R1/2)/16),Int((camera_y+R2/2-1)/16)]]=0 And solid[map[Int((camera_x+R1/2+16)/16),Int((camera_y+R2/2-1)/16)]]=0
camera_y=camera_y-g
Else
g=-g
EndIf
Else
camera_y=camera_y-g
EndIf
EndIf
If Not collision()
camera_x=camera_x+dx*speed
EndIf
EndIf
End Function
Function collision()
For i=1 To 3
If solid[map[Int((camera_x-2+dx*speed+R1/2)/16),Int((camera_y-1+R2/2)/16)+i]]=1
camera_x=(Int((camera_x)/16)-1)*16+16
Return True
EndIf
Next
For i=1 To 3
If solid[map[Int((camera_x+dx*speed+28+R1/2)/16),Int((camera_y-1+R2/2)/16)+i]]=1
'camera_x=(Int((camera_x+32)/16))*16
Return True
EndIf
Next
End Function
Так, мне нужна ваша помощь, и сейчас это действительно серьёзно. Я вообще не понимаю почему код не работает. Точнее сказать работает, но только на каких-то разрешениях экрана, хотя не ясно как это вообще взаимосвязано.
И проверьте новую версию, возможно нашёл ошибку.
Последний раз редактировалось Nikich, 06.05.2012 в 23:30.
|
(Offline)
|
|
07.05.2012, 11:30
|
#334
|
ПроЭктировщик
Регистрация: 16.04.2008
Сообщений: 161
Написано 36 полезных сообщений (для 63 пользователей)
|
Ответ: Vivo
Пашет норм бегает сделай по плавнее его движение и ваще классно будет.
FPS:60 стабильно
разрешение:1280х1024
---------------------------
Плавность движения по x а то как то немного резковато
__________________
форум эт вещь... и почему я раньше им не пользовался?
AMD Phenom(tm) II X6 3.20GHz 8GB GTX 550(1Gb)
Последний раз редактировалось Spy4433, 07.05.2012 в 16:05.
|
(Offline)
|
|
07.05.2012, 21:12
|
#335
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Vivo
Хорошо, сейчас сделаю ускорение, чтобы он не мгновенно разгонялся. И всё же сделал полную поддержку любого разрешение( играл на 240х320, даже там всё работает). Пока что заливать не буду, а то кроме этого ничего не добавлено.
Кстати, может кто-нибудь помочь с мультиплеером?
|
(Offline)
|
|
08.05.2012, 17:39
|
#336
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Vivo
Global rr2=Graphics(800,600,0,60,0)
EndGraphics
Global rr1=Graphics(R1,R2,0,60,0)
...
If KeyHit(KEY_F11)
EndGraphics
SetGraphics(rr1)
EndIf
If KeyHit(KEY_F12)
EndGraphics
SetGraphics rr2
EndIf
Можете подсказать, в чём ошибка? Не совсем понимаю, как вообще изменять риалтайм разрешение.
|
(Offline)
|
|
08.05.2012, 17:50
|
#337
|
ПроЭктировщик
Регистрация: 16.04.2008
Сообщений: 161
Написано 36 полезных сообщений (для 63 пользователей)
|
Ответ: Vivo
а в чем проблема то ?
Global rr1=Graphics(800,600,0,60,0)
Repeat
DrawRect 10,10,100,40
If KeyHit(KEY_E) Then
set=1-set
If set=0 Then
EndGraphics
rr1=Graphics(800,600,0,60,0)
SetGraphics(rr1)
EndIf
If set=1 Then
EndGraphics
rr2=Graphics(320,240,0,60,0)
SetGraphics(rr2)
EndIf
EndIf
Flip
Until KeyHit(KEY_ESCAPE)
__________________
форум эт вещь... и почему я раньше им не пользовался?
AMD Phenom(tm) II X6 3.20GHz 8GB GTX 550(1Gb)
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.05.2012, 18:16
|
#338
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Vivo
А-а-а, понял. Надо заново создавать Graphics при каждом переключении, а не предварительно. Спасибо!
|
(Offline)
|
|
08.05.2012, 21:12
|
#339
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Vivo
Новая версия.
- F11 - переключение на оконный\полноэкранный режим
- 1,2,3,4,5,6,7,8 - переключение между клетками инвентаря.
- На колёсико мыши можно менять используемую ячейку на панели быстрого доступа.
- Теперь нельзя ставить\разрушать блоки на далёкой дистанции.
- Теперь блоки не разрушаются мгновенно, требуется некоторое время(!)
Последний раз редактировалось Nikich, 08.05.2012 в 23:53.
|
(Offline)
|
|
02.06.2012, 14:20
|
#340
|
|
Ответ: Vivo
Работа с пиксмапой ничего не требует. Вся работа с ней скрыта за тенью LoadImage LoadAnimImage. И ты просто можешь менять разрешение "на лету" не перезагружая заново все ресурсы как бы это надо было бы делать в Blitz3D.
|
Ты тлько не забывай что она требует повышенный расход оперативной памяти, причем стандартным сборщиком мусора он никак не учитывается. Класс TPixmap - это ненужный балласт для системы, через него очень проблематично пользоваться функцией Read\WritePixel(), он не обеспечивает управления картинкой в реальном времени, и еще как минус - отсутствие быстро читать и писать пикселя. - Слишком много минусов ради одного пункта удобности, автомотической перегрузки графики при потере девайса.
А вот Blitz3D - устроен куда правильнее. Я лучше вручную буду перегружать всю графику, чем иметь такой геморой как в BlitzMax.
|
|
|
Сообщение было полезно следующим пользователям:
|
|
04.06.2012, 23:50
|
#341
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Vivo
Сообщение от Diablo1909
Я лучше вручную буду перегружать всю графику, чем иметь такой геморой как в BlitzMax.
|
Я даже в своё время "отпиливал" TPixmap, но увы сорс ныне утерян.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
05.06.2012, 23:56
|
#342
|
Знающий
Регистрация: 04.11.2011
Сообщений: 285
Написано 66 полезных сообщений (для 159 пользователей)
|
Ответ: Vivo
Сообщение от Nikich
Новая версия.
- F11 - переключение на оконный\полноэкранный режим
- 1,2,3,4,5,6,7,8 - переключение между клетками инвентаря.
- На колёсико мыши можно менять используемую ячейку на панели быстрого доступа.
- Теперь нельзя ставить\разрушать блоки на далёкой дистанции.
- Теперь блоки не разрушаются мгновенно, требуется некоторое время(!)
|
будь другом, откомпилируй, пожалуйста(нет blitzmax, лень искать и качать)
|
(Offline)
|
|
06.06.2012, 16:48
|
#343
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Vivo
Так в архиве ведь .exe.
|
(Offline)
|
|
07.08.2012, 06:52
|
#344
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Ответ: Vivo
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:29.
|