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

После долгого отсутствия ...
Вот код , переделана математическая часть ,что по моему мнению стало лучше ,как читабельно ,так и в понимании .Думаю код будет полезен .

;
Const ttx = 40 , tty = 30 , KolvoBlock= 13 , GrX = 330 , GrY = 50
Dim MapX(KolvoBlock,KolvoBlock) ,  MapY(KolvoBlock,KolvoBlock) ,MapCenterX(KolvoBlock,KolvoBlock) ,  MapCenterY(KolvoBlock,KolvoBlock) ,map(KolvoBlock,KolvoBlock)

Graphics 800,600,32,2
SetBuffer BackBuffer()

For y = 0 To KolvoBlock
	For x = 0 To KolvoBlock
		px# =( x-5)*(ttx+(y)) ;-5
		py# = y*tty
		pcx# =(( x-5)*(ttx+y)) +(ttx/2+(y/2))
		pcy# =y*(tty)+tty/2
		
		MapX(x,y) = px
		MapY(x,y) = py
		
		If y<KolvoBlock And x<KolvoBlock Then
			MapCenterX(x,y) = pcx
			MapCenterY(x,y) = pcy	
		EndIf 	
	Next
Next
;Origin 200,100
ClsColor 150,150,150
While Not KeyHit(1)
Cls 
mx# = MouseX() : my# = MouseY()
	ty = Int(Floor( (my-GrY )/tty ))
	tx = Int(Floor( ((mx-GrX ) / (ttx+(ty)))) +5 );
Draw()

;Line mx-100,0,mx-100,500
If tx>=0 And tx < KolvoBlock And ty>=0 And ty<KolvoBlock Then
Text  GrX *0.5-100,GrY +KolvoBlock*tty+10 ,tx+" : "+ty
EndIf
Flip 
Wend
End 

Function DrawBackgraund()

End Function 

Function Draw()
	Rect 5,5,790, GrY +KolvoBlock*tty+25,0
For y = 0 To KolvoBlock
	For x = 0 To KolvoBlock
		Plot GrX +MapCenterX(x,y),GrY +MapCenterY(x,y) 
		Line GrX +MapX(x,0) , GrY , GrX +MapX(x,KolvoBlock) ,GrY +KolvoBlock*tty 
		Line GrX +MapX(0,y) ,GrY +MapY(0,y) ,GrX +MapX(KolvoBlock,y) ,GrY +MapY(KolvoBlock,y)
	Next
Next
End Function
__________________
Мой проект здесь
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
LLI.T.A.L.K.E.R. (16.05.2014)