forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   2d сетка (http://forum.boolean.name/showthread.php?t=17416)

moka 01.09.2015 17:07

Ответ: 2d сетка
 
Цитата:

Сообщение от St_AnGer (Сообщение 299192)
Прикладывай хотя бы скриншоты, а лучше всё таки переходи на распространённые нынче вещи :)

Распространенные и доступные (JS! ;))

polopok 06.09.2015 15:49

Ответ: 2d сетка
 
Собственно с чего начался пост ... сетка вида ... ну типа перспектива

псевдо 3д


ОСоБЕННОСТИ :
регулируемый наклон ;
произвольное количество тайлов (в пределах раумного конечно :crazy: );
регулируемая высота и ширина тайла . . .
код прилагаю под спойлером:
Код:

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


polopok 25.04.2016 07:54

Ответ: 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;

denis2000513 06.01.2018 14:17

Ответ: 2d сетка
 
---:SOS:

L-ee-X 06.01.2018 22:09

Ответ: 2d сетка
 
Цитата:

Сообщение от denis2000513 (Сообщение 314565)
---:SOS:

Че надо то?


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot