Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
Пожалуйтса, подскажите как это реализовать!
Здесь нужно сделать так, что бы при нажатии кнопки "пробел" белые кубики случайным образом расставлялись на поле и не пересекались ни с черными ни с белыми.
7,9 - доп. клава.
4,8,6,2 - доп клава.
пробел.
------
управление

;We are not interested in this piece of code. See below.
;Смотрим в самый низ кода. Именно там функция расстановки кубиков.
Const gwidth=1024
Const gheight=768
Const gdeep=32
Const gmode=1
;-----------------------ВАжный участок-------------------------------------------------;
Const typecube=3;ДЛЯ КОЛЛИЗИИ КУБИКОВ
Const typecube2=4;ДЛЯ КОЛЛИЗИИ КУБИКОВ
;-----------------------ВАжный участок----------------------------------------------;
Const CFieldWidth=29
Const CFieldHeight=29
Const BoxUpperSide%=0
Const BoxFrontSide%=1
Const BoxBackSide%=2
Const BoxLeftSide%=3
Const BoxRighrtSide%=4
Dim masPrep(CFieldWidth,CFieldHeight)
Dim masBonuses(CFieldWidth,CFieldHeight)
Type cubes
Field obj
Field nomerX, nomerZ
End Type
Graphics3D gwidth,gheight,gdeep,gmode
SetBuffer BackBuffer()
SeedRnd MilliSecs()
fnLoadlevel("maps\null.txt")
fnCreateEnvir()
camera=CreateCamera()
EntityType camera,typecamera
PositionEntity camera,150,220,-150
RotateEntity camera,90,0,0
;-----------------------ВАжный участок--------------------------------------------------;
Collisions typecube,typecube2,2,3; КОЛЛИЗИИ!!!!!!!!!!!!
;-----------------------ВАжный участок-----------------------------------------------;
Repeat
Delay 1
If KeyHit(57) Then fnCreateRandScub1()
If KeyDown(72) Then MoveEntity camera,0,1,0
If KeyDown(80) Then MoveEntity camera,0,-1,0
If KeyDown(75) Then MoveEntity camera,-1,0,0
If KeyDown(77) Then MoveEntity camera,1,0,0
If KeyDown(71) Then MoveEntity camera,0,0,1
If KeyDown(73) Then MoveEntity camera,0,0,-1
UpdateWorld()
RenderWorld()
Flip
Until KeyHit(1)
End
Function fnLoadlevel(file$)
scub=CreateMesh()
surf=CreateSurface(scub)
AddBoxToSurface(Surf%,0,0,0,10)
UpdateNormals(scub)
EntityRadius scub,5
scub2=CreateMesh()
surf=CreateSurface(scub2)
AddBoxToSurface(Surf%,0,0,0,10)
UpdateNormals(scub)
EntityRadius scub2,5
;-----------------------ВАжный участок------------------------------------------;
EntityColor scub2,0,0,0; ЦВЕТ НЕПРОБИВАЕМОГО КУБИКА
;-----------------------ВАжный участок------------------------------------------;
width1=10
depth1=10
width2=10
depth2=10
stream=ReadFile(file$)
For x=0 To CFieldWidth
For z=0 To CFieldHeight
value=ReadShort (Stream)
masPrep(x,z) = 0
masBonuses(x,z) = 0
Select value
Case 1
masPrep(x,z) = 1
cube.cubes = New cubes
cube\obj = CopyEntity(scub)
EntityAlpha cube\obj,0.5
PositionEntity cube\obj,x*width1+5,5,-z*depth1-5
;-----------------------ВАжный участок-------------------------------------------------;
EntityType cube\obj,typecube;;ДЛЯ КОЛЛИЗИИ КУБИКОВ
;-----------------------ВАжный участок-------------------------------------------
EntityPickMode cube\obj,2
NameEntity (cube\obj,Handle (cube))
cube\nomerX = x
cube\nomerZ = z
Case 2
masPrep(x,z) = 2
cube.cubes = New cubes
cube\obj = CopyEntity(scub2)
PositionEntity cube\obj,x*width2+5,5,-z*depth2-5
;-----------------------ВАжный участок----------------------------------------;
EntityType cube\obj,typecube2;ДЛЯ КОЛЛИЗИИ КУБИКОВ
;-----------------------ВАжный участок--------------------------------------------------
EntityPickMode cube\obj,2
NameEntity (cube\obj,Handle (cube))
cube\nomerX = x
cube\nomerZ = z
End Select
Next
Next
CloseFile stream
FreeEntity scub
FreeEntity scub2
End Function
Function AddBoxSideToSurface(Surf%,BoxSide%,X#,Y#,Z#,C#)
Local X1#, Y1#, Z1#, X2#, Y2#, Z2#, X3#, Y3#, Z3#, X4#, Y4#, Z4#
Local V1%, V2%, V3%, V4%
Local T1%, T2%
C#=C#/2
Select BoxSide%
Case BoxUpperSide%
X1#=X#-C: X2#=X#+C: X3#=X#+C: X4#=X#-C
Y1#=Y#+C: Y2#=Y#+C: Y3#=Y#+C: Y4#=Y#+C
Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#+C: Z4#=Z#+C
Case BoxFrontSide%
X1#=X#-C: X2#=X#+C: X3#=X#+C: X4#=X#-C
Y1#=Y#-C: Y2#=Y#-C: Y3#=Y#+C: Y4#=Y#+C
Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#-C: Z4#=Z#-C
Case BoxBackSide%
X1#=X#-C: X2#=X#+C: X3#=X#+C: X4#=X#-C
Y1#=Y#+C: Y2#=Y#+C: Y3#=Y#-C: Y4#=Y#-C
Z1#=Z#+C: Z2#=Z#+C: Z3#=Z#+C: Z4#=Z#+C
Case BoxLeftSide%
X1#=X#-C: X2#=X#-C: X3#=X#-C: X4#=X#-C
Y1#=Y#-C: Y2#=Y#+C: Y3#=Y#+C: Y4#=Y#-C
Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#+C: Z4#=Z#+C
Case BoxRighrtSide%
X1#=X#+C: X2#=X#+C: X3#=X#+C: X4#=X#+C
Y1#=Y#+C: Y2#=Y#-C: Y3#=Y#-C: Y4#=Y#+C
Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#+C: Z4#=Z#+C
End Select
V1%=AddVertex(Surf%, X1#, Y1#, Z1#, 0, 0)
V2%=AddVertex(Surf%, X2#, Y2#, Z2#, 1, 0)
V3%=AddVertex(Surf%, X3#, Y3#, Z3#, 1, 1)
V4%=AddVertex(Surf%, X4#, Y4#, Z4#, 0, 1)
T1%=AddTriangle(Surf%, V1%,V3%,V2%)
T2%=AddTriangle(Surf%, V1%,V4%,V3%)
End Function
Function AddBoxToSurface(Surf%,X#,Y#,Z#,C#=1)
AddBoxSideToSurface(Surf%,BoxUpperSide%,X#,Y#,Z#,C#)
AddBoxSideToSurface(Surf%,BoxFrontSide%,X#,Y#,Z#,C#)
AddBoxSideToSurface(Surf%,BoxBackSide%,X#,Y#,Z#,C#)
AddBoxSideToSurface(Surf%,BoxLeftSide%,X#,Y#,Z#,C#)
AddBoxSideToSurface(Surf%,BoxRighrtSide%,X#,Y#,Z#,C#)
End Function
Function fnCreateEnvir()
light=CreateLight()
RotateEntity Light,45,0,0
Floorr=CreateCube()
FitMesh floorr ,0,-1,0, 290,1,-290
EntityColor floorr,0,255,0
EntityType floorr,typescene
wall1=CreateCube()
FitMesh wall1 ,0,0,0,290,5,2
EntityColor wall1,70,30,60
EntityType wall1, typewall
wall2=CreateCube()
FitMesh wall2 ,0,0,-291.5,290,5,2
EntityColor wall2,70,30,60
EntityType wall2, typewall
wall3=CreateCube()
FitMesh wall3 ,290,0,0,2,5,-290
EntityColor wall3,70,30,60
EntityType wall3, typewall
wall4=CreateCube()
FitMesh wall4 ,0,0,0,-2,5,-291
EntityColor wall4,70,30,60
EntityType wall4,typewall
End Function
;We are not interested in this piece of code. See below.
;+++++++++++++++++LOOK HERE+++++++++++++++++++++++++++++++++
Function fnCreateRandScub1()
cube.cubes = New cubes
scub=CreateMesh()
surf=CreateSurface(scub)
AddBoxToSurface(Surf%,0,0,0,10)
UpdateNormals(scub)
HideEntity scub
For i = 1 To Rand(90,115)
cube\obj = CopyEntity(scub)
PositionEntity cube\obj,Rand(5,285),5,Rand(-5,-285)
EntityColor cube\obj,255,255,255; ЦВЕТ ПРОБИВАЕМОГО КУБИКА
EntityType cube\obj,typecube
Next
FreeTexture tex1
NameEntity (cube\obj,Handle (cube))
End Function
;+++++++++++++++++LOOK HERE+++++++++++++++++++++++++++
|