![](images/chestnut/misc/left.gif) |
2D-программирование Вопросы, касающиеся двумерного программирования |
01.09.2015, 17:07
|
#31
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: 2d сетка
Сообщение от St_AnGer
Прикладывай хотя бы скриншоты, а лучше всё таки переходи на распространённые нынче вещи ![:)](images/smilies/smile.gif)
|
Распространенные и доступные (JS! ![;)](images/smilies/wink.gif) )
|
(Offline)
|
|
06.09.2015, 15:49
|
#32
|
ПроЭктировщик
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений (для 71 пользователей)
|
Ответ: 2d сетка
Собственно с чего начался пост ... сетка вида ... ну типа перспектива
псевдо 3д
ОСоБЕННОСТИ :
регулируемый наклон ;
произвольное количество тайлов (в пределах раумного конечно ![crazy](images/smilies/bm.gif) );
регулируемая высота и ширина тайла . . .
код прилагаю под спойлером:
![](images/chestnut/misc/code_html.gif)
Global mz#,grx ,gry
Graphics 800,600 ,32,2
SetBuffer BackBuffer()
grx = GraphicsWidth()/2 : gry = GraphicsHeight()/2
tile_sizeX = 50
tile_sizeY = 20
a = 5
b = a+a+1
ClsColor 34 ,139 ,34
While Not KeyHit(1)
Cls
mx# = MouseX() : my# = MouseY() : mz# = MouseZ()*0.1+1
For y = 1 To b
For x = -a To a
px# = x*tile_sizeX +(y*mz)*x
py# = y*tile_sizeY
Color 3 ,35, 3
If x<a Line grx + px,py +gry , grx + ( (x+1)*tile_sizeX )+((y*mz)*(x+1)),py+gry
If y<b Line grx + px,py+gry , grx + ( x*tile_sizeX )+((y+1)*mz*x) ,(y+1)*tile_sizeY+gry
If y<b And x<a Text grx +px+20 ,py+2+gry , (x+a+1)+" : "+y
Next
Next
; номера тайла по Х и Y координатам мыши
ym# = Floor#((my-gry) / tile_sizeY )
xx# = Floor#( (( mx-grx ) / (((my-gry) / tile_sizeY )*mz+tile_sizeX) ) )
Text mx,my-10,Int(xx+a+1) +" : "+Int(ym)
Text 20,20,"MouseX : "+Int(mx)+" MouseY : "+Int(my)+" MouseZ : "+mz
Text 20,40,"X : "+Int(xx+a+1)
Text 20,60,"Y : "+Int(ym)
DrawSelectTile(xx,ym,tile_sizeX,tile_sizeY)
Flip
Wend
End
Function DrawSelectTile#(ntx,nty,tileSizeX,tileSizeY )
Color 255,255,255
tx# = ntx*tileSizeX +(nty*mz)*ntx : ty# = nty*tileSizeY : ty2# = (nty+1)*tileSizeY
tx2# = ((ntx+1)*tileSizeX +((nty+1)*mz)*(ntx+1) )
px# = (tx+tx2)/2
py# = (ty+ty2)/2
Oval grx +px -4,gry + py -4,8,8
;Line grx +tx ,gry + ty ,grx +tx2 ,gry + ty2
End Function
__________________
Мой проект здесь
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
25.04.2016, 07:54
|
#33
|
ПроЭктировщик
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений (для 71 пользователей)
|
Ответ: 2d сетка
Возвращаясь к теме.
А теперь внимание, )) правильные формулы :
; вычисление координат ячейки
; tileNumberY , tileNumberX --> количество ячеек по вертикали и горизонтали
; tileSizeY , tileSizeX --> размер ячеек по вертикали и горизонтали
; tileSpaceY , tileSpaceX --> смещение ячеек по вертикали и горизонтали
; tileView --> параметр задающий искажение по горизонтали ("перспектива")
for j = 0 to tileNumberY
for i = 0 to tileNumberX
x = i * tileSizeX + j * (i * tileView) + tileSpaceX
y = j * tileSizeY + tileSpaceY
next:next
; вычисление номеров ячейки по координатам мыши
ym = floor((mouseY() - tileSpaceY) / tileSizeY);
xm = floor((mouseX() - tileSpaceX) / tileView / (((mouseY() - thisY - tileSpaceY) / tileSizeY) + (tileSizeX/tileView ))) + tileNumberX;
__________________
Мой проект здесь
|
(Offline)
|
|
06.01.2018, 14:17
|
#34
|
AnyKey`щик
Регистрация: 05.01.2018
Сообщений: 1
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: 2d сетка
--- ![:SOS:](images/smilies/help.gif)
|
(Offline)
|
|
06.01.2018, 22:09
|
#35
|
Разработчик
Регистрация: 06.06.2011
Адрес: Ирк. обл.
Сообщений: 541
Написано 133 полезных сообщений (для 220 пользователей)
|
Ответ: 2d сетка
Сообщение от denis2000513
--- ![:SOS:](images/smilies/help.gif)
|
Че надо то?
__________________
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:33.
|