ПроЭктировщик
Регистрация: 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
__________________
Мой проект здесь
|