Показать сообщение отдельно
Старый 31.01.2009, 16:56   #8
zheland
Разработчик
 
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений
(для 95 пользователей)
Ответ: Координаты в изометрии

Вот новая версия:
Более удобно сделано,
и теперь можно изменять как хочешь точки
pxy[0]-pxy[3]
все вершины теперь прономерованы так
pxy[0]-pxy[7]=pxy1-pxy8
Нажмите на изображение для увеличения
Название: isometry.JPG
Просмотров: 1680
Размер:	8.6 Кб
ID:	5315
можно даже скручивать поле
можно так добиться красивого эффекта появления карты
Нажмите на изображение для увеличения
Название: isometry2.GIF
Просмотров: 1404
Размер:	16.2 Кб
ID:	5314
SuperStrict
Global current : Byte = 0
Global cx : Float
Global cy : Float
Global n : Float
Global px : Short[8]
Global py : Short[8]
px[0] = 200
py[0] = 300
px[1] = 500
py[1] = 0
px[2] = 800
py[2] = 300
px[3] = 500
py[3] = 600
Graphics 800,600,0,0
While Not KeyDown(KEY_ESCAPE)
Cls
SetColor 255,255,255
If MouseX() > 200 Then MoveMouse(200,MouseY())
If MouseY() > 200 Then MoveMouse(MouseX(),200)
DrawLine 200 , 200 , 200 , 600
DrawText "isometry test v 1.1",0,200

DrawText "MouseX: "+MouseX(),0,300
DrawText "MouseY: "+MouseY(),0,310
DrawText "px[0]: "+px[0]+"; py[0]: "+py[0],0,330
DrawText "px[1]: "+px[1]+"; py[1]: "+py[1],0,340
DrawText "px[2]: "+px[2]+"; py[2]: "+py[2],0,350
DrawText "px[3]: "+px[3]+"; py[3]: "+py[3],0,360
DrawText "px[4]: "+px[4]+"; py[4]: "+py[4],0,370
DrawText "px[5]: "+px[5]+"; py[5]: "+py[5],0,380
DrawText "px[6]: "+px[6]+"; py[6]: "+py[6],0,390
DrawText "px[7]: "+px[7]+"; py[7]: "+py[7],0,400
DrawText "cx : "+cx,0,410
DrawText "cy : "+cy,0,420

DrawText "current point: pxy["+current+"]",0,460
DrawText "USE KEYS:",0,470
DrawText "0,1,2,3 TO SET CURRENT",0,480
DrawText "LEFT; RIGHT; UP; DOWN",0,490
DrawText " TO MOVE",0,500

DrawText "31.01.2009",0,560
DrawText "Zheleznov",0,570
DrawText "Andrey Ivanovich",0,580

If KeyDown(KEY_0) Then current=0
If KeyDown(KEY_1) Then current=1
If KeyDown(KEY_2) Then current=2
If KeyDown(KEY_3) Then current=3
If KeyDown(KEY_LEFT) Then px[current]:-1
If KeyDown(KEY_RIGHT) Then px[current]:+1
If KeyDown(KEY_UP) Then py[current]:-1
If KeyDown(KEY_DOWN) Then py[current]:+1

SetColor 0,0,255
For n = 0 To 1.01 Step 0.1
DrawLine 200*n,0,200*n,200
DrawLine 0,200*n,200,200*n
DrawLine px[1]-(px[1]-px[0])*n,py[1]-(py[1]-py[0])*n,px[2]-(px[2]-px[3])*n,py[2]-(py[2]-py[3])*n
DrawLine px[1]-(px[1]-px[2])*n,py[1]-(py[1]-py[2])*n,px[0]-(px[0]-px[3])*n,py[0]-(py[0]-py[3])*n
Next
cx=Float(MouseX())/200
cy=Float(MouseY())/200
SetColor 0,255,0
px[4] = px[1]-(px[1]-px[0])*cx
py[4] = py[1]-(py[1]-py[0])*cx
px[5] = px[2]-(px[2]-px[3])*cx
py[5] = py[2]-(py[2]-py[3])*cx
px[6] = px[1]-(px[1]-px[2])*cy
py[6] = py[1]-(py[1]-py[2])*cy
px[7] = px[0]-(px[0]-px[3])*cy
py[7] = py[0]-(py[0]-py[3])*cy
DrawLine 200*cx-2,0,200*cx-2,200
DrawLine 0,200*cy-2,200,200*cy-2
DrawLine px[4] , py[4] , px[5] , py[5]
DrawLine px[6] , py[6] , px[7] , py[7]
SetColor 255,0,0

DrawRect 200*cx-2,200*cy-2,5,5
DrawRect px[4]-(px[4]-px[5])*cy-5,py[6]-(py[6]-py[7])*cx-5,10,10
Flip
Wend
End

Последний раз редактировалось zheland, 31.01.2009 в 17:01.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
MiXaeL (31.01.2009)