Тема: 2d сетка
Показать сообщение отдельно
Старый 06.09.2015, 15:49   #32
polopok
ПроЭктировщик
 
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений
(для 71 пользователей)
Ответ: 2d сетка

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

псевдо 3д


ОСоБЕННОСТИ :
регулируемый наклон ;
произвольное количество тайлов (в пределах раумного конечно );
регулируемая высота и ширина тайла . . .
код прилагаю под спойлером:
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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
St_AnGer (06.09.2015)