Тема: Vivo
Показать сообщение отдельно
Старый 17.03.2012, 14:19   #244
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Vivo

Global rc=CountGfxModes()
Global R1=GfxModeWidth(rc)
Global R2=GfxModeHeight(rc)

Graphics R1,R2
Global fnt1=LoadFont("Arial",24)
SetFont fnt1
SetBuffer BackBuffer()
Dim TileImg(50)
TileImg(0)=LoadImage("ground.bmp")
TileImg(1)=LoadImage("grass.bmp")
Global cx#,cy#,plx#,ply#,tdst,tfps,fps
Global lfps=60
Type tl
 Field x,y,z,id
End Type
Dim tld(10000,10000)
For i=0 To 1
MaskImage TileImg(i),255,255,255
MidHandle TileImg(i)
Next
Dim ObjImg(50)
For i=0 To 2
ObjImg(i)=LoadImage("rock"+(i+1)+".bmp")
MaskImage ObjImg(i),255,255,255
HandleImage ObjImg(i),48,32
Next

Type obj
 Field x,y,z,id,life
End Type 
For i=0 To 1
MaskImage TileImg(i),255,255,255
MidHandle TileImg(i)
Next
Dim pl(2,2)
For i=-1 To 1
For i1=-1 To 1
pl(i+1,i1+1)=LoadImage("pl"+i+","+i1+".bmp")
MaskImage pl(i+1,i1+1),255,255,255
MidHandle pl(i+1,i1+1)
Next
Next

Global dx,dy
CreateWorld()


Function CreateWorld()
For i=0 To 500
 For j=0 To 500
 tld(i,j)=Rnd(0,1)
 Next
Next
End Function 


Function UpdateTiles()

For i=0 To 500
For j=0 To 500

If (i-j)*32+32>-cx And (i-j)*32-32<R1-cx And (i+j)*16+32>-cy And (i+j)*16-32<-cy+R2
DrawImage TileImg(tld(i,j)),(i-j)*32,(i+j)*16
EndIf

Next
Next
End Function

Function UpdatePlayer()
If KeyDown(17) Then
cy=cy+2.5
dy=1
dx=0
EndIf
If KeyDown(31) Then
cy=cy-2.5
dy=-1
dx=0
EndIf
If KeyDown(30) Then
cx=cx+5
dx=-1
If KeyDown(31)=0 And KeyDown(17)=0 Then  
dy=0
EndIf
EndIf
If KeyDown(32) Then
cx=cx-5
dx=1
If KeyDown(31)=0 And KeyDown(17)=0 Then
dy=0
EndIf
EndIf

Origin cx,cy

plx=R1/2-cx
ply=R2/2-cy
DrawImage pl(dx+1,dy+1),plx,ply
End Function

Function ClObj(x,y)
For o.obj=Each obj
If Int(o\x/64)=x And Int(o\y/32)=y Then
Return True
EndIf
Next
Return False

End Function

Function UpdateFPS()
If MilliSecs()-tfps<1000 fps=fps+1
If MilliSecs()-tfps>1000 Then
lfps=fps
tfps=MilliSecs()
fps=0
EndIf
Color 255,0,255
Text -cx,-cy,lfps
End Function

While Not KeyHit(1)


UpdateTiles()

UpdateFPS()
UpdatePlayer()



Flip
Cls
Wend
В предыдущем коде вам вряд ли многое понятно, так что выкладываю нормальную версию. В общем, нужна помощь в определении i,j ячейки массива зная его координаты.
(Offline)
 
Ответить с цитированием