Показать сообщение отдельно
Старый 15.02.2007, 13:48   #1
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
Вопрос Как работать с массивом?

Type Camera
     Field obj
End Type
Global terrain
Global  fontA=LoadFont ("Times new roman",20)
SetFont fontA

Graphics3D 640,480,16,2 
SetBuffer BackBuffer() 

 fnCreateCam1()
fnCreateTerr()

light=CreateLight() 
RotateEntity light,90,0,0 
cube1=CreateCube()
EntityColor cube1,0,0,255
cube2=CreateCube()
EntityColor cube2,255,0,0
PositionEntity cube2,10,0,0
Dim massiv(32,32)
Global c_x1=0,c_y1=0,c_x2=3,c_y2=0
Repeat
Cls
PositionEntity cube1,c_x1,0,c_y1
PositionEntity cube2,c_x2,0,c_y2
If KeyHit(2)
c_x1=c_x1+1
If(c_x1=c_x2) c_x1=c_x1-1
EndIf
If KeyHit(3)
c_x1=c_x1-1
If(c_x1=c_x2) c_x1=c_x1+1
EndIf
 

If(c_x1<0) c_x1=0
If(c_x1>32) c_x1=32
If(c_y1<0) c_y1=0
If(c_y1>32) c_y1=32
 
RenderWorld 
Text 0,0,"Use cursor keys to move about the terrain" 
For cam1.camera = Each camera
If KeyHit(1)
fnDeleteCam1(cam1)
End
FreeFont fonta
End If 
Next
If KeyHit(2) Then  freeTerrain()
Flip 
Forever
 
Function fnCreateTerr()
terrain=CreateTerrain(32) 
EntityColor terrain,0,128,255
EntityAlpha terrain,.5
End Function 
Function freeTerrain()
FreeEntity terrain 
End Function 
Function fnCreateCam1.camera()
     Local cam1.camera
     cam1 = New Camera
     cam1\obj = CreateCamera()
     ; CameraClsColor cam1\obj,0,255,0
     PositionEntity cam1\obj,15,25,15
     RotateEntity cam1\obj,90,0,0
     Return cam1
End Function
Function fnDeleteCam1(cam1.camera)
For cam1.camera = Each camera
     FreeEntity cam1\obj
     Delete cam1
      Next
End Function
На этом примере есть террайн 32 на 32
Массив 32 на 32
Дву кубика, один из них движется по нажатию 1 или 2 на клаве.

У меня есть этот семпл, но я никак не могу понять, как можно разбить карту на квадратики, и проверять, если клетка пустая, то кубик может туда идти, а елси там объект, то стоп...то есть так я собираюсь заменить коллизию и сделать удобным перемещение. Рднако я не до конца в этом разобрался + если удалить массив, то разницы никакой! Как мне это реализовать?

1) Что бы квадратик ходил при нажатии на 1 клетку, и, что бы эта клетка была "занята" когда квадратик там стоит
2) Нарисовать линии (или как-то спрайтами) ... что бы было видно, что террайн разделен на клетки...

Может я что-то не так описал, но я правда не очень понимаю как работает массив, но не прочь это усвоить!

Спасибо за внимание.
(Offline)
 
Ответить с цитированием