Чтение записи после перезагрузки приложения
Здраствуй Булка!!! Живали еще ты?!)))
Вот код. Закоментите текстуру если лень добавлять свою пжлст.
Код:
Graphics3D 800,600,16
SetBuffer BackBuffer()
font=LoadFont("Blitz",14,True)
SetFont font
Camera=CreateCamera()
PositionEntity Camera,0,2,-2
plan=CreatePlane()
Texture=LoadTexture("text.jpg")
ScaleTexture(Texture,3,3)
EntityTexture(plan,Texture)
Global xm=3,zm=5
Global Newz,ner,Select1
Type Neur
Field x#,y#,z#
Field mass
Field func
Field Ent
Field Child[99],CountChld
End Type
Type Buton
Field x,y
Field Status
End Type
Save=CreateCube();save
ScaleEntity Save,0.51,0.1,0.51
EntityPickMode Save,2
PositionEntity Save,-2,0,5
Load=CreateCube();load
ScaleEntity Load,0.51,0.1,0.51
EntityPickMode Load,2
PositionEntity Load,-4,0,5
Light=CreateLight()
RotateEntity Light,90,0,0
For i=0 To xm
For i2=0 To zm
NewNeur.Neur=New Neur
NewNeur\Ent=CreateCube()
ScaleEntity NewNeur\Ent,0.3,0.1,0.3
NameEntity(NewNeur\Ent, Handle(NewNeur)) ;"Neur"+Str( i )+","+Str(i2))
NewNeur\x=(i2)
NewNeur\y=0
NewNeur\z=i
PositionEntity(NewNeur\Ent,NewNeur\x,NewNeur\y,NewNeur\z)
EntityPickMode NewNeur\Ent,2
Next
Next
While Not KeyDown(1)
CameraProject(camera,EntityX(Save),EntityY(Save),EntityZ(Save))
x1b=ProjectedX()
y1b=ProjectedY()
CameraProject(camera,EntityX(Load),EntityY(Load),EntityZ(Load))
x2b=ProjectedX()
y2b=ProjectedY()
select1=0
If MouseHit(1)
CameraPick(camera,MouseX(),MouseY())
If PickedEntity()=Save
File=WriteFile("save01.dat")
WriteInt(File,xm)
WriteInt(File,zm)
For NewNeur.Neur=Each Neur
WriteInt(File,NewNeur\CountChld)
For i=1 To NewNeur\CountChld
WriteInt(File,NewNeur\Child[i])
Next
Next
CloseFile(File)
ElseIf PickedEntity()=Load
File=OpenFile("save01.dat")
If File<>0
xm=ReadInt(File)
zm=ReadInt(File)
For NewNeur.Neur=Each Neur
NewNeur\CountChld=ReadInt(File)
For i=1 To NewNeur\CountChld
NewNeur\Child[i]=ReadInt(File)
Next
Next
CloseFile(File)
EndIf
Else
select1=1
EndIf
ElseIf MouseHit(2)
CameraPick(camera,MouseX(),MouseY())
If PickedEntity()=Save
ElseIf PickedEntity()=Load
Else
select1=2
EndIf
Else
EntityPick(Save,0)
EndIf
If PickedEntity()<>0
ext=0
If select1=1
If LastEnt=0
LastEnt=PickedEntity()
EntityColor(LastEnt,250,50,50)
Else
If LastEnt<>PickedEntity()
NewNeur.Neur=Object.Neur(EntityName(LastEnt))
mem=0
For i=1 To NewNeur\CountChld
If NewNeur\Child[i]=PickedEntity()
ext=1
Exit
Else
ext=0
EndIf
Next
If ext=0
;Stop()
NewNeur\CountChld=NewNeur\CountChld+1
NewNeur\Child[NewNeur\CountChld]=PickedEntity()
EndIf
Else
EntityColor(LastEnt,250,250,250)
LastEnt=0
EndIf
EndIf
EndIf
If select1=2
If LastEnt<>PickedEntity() And LastEnt<>0
NewNeur.Neur=Object.Neur(EntityName(LastEnt))
ext=0
For i=1 To NewNeur\CountChld
If NewNeur\Child[i]=PickedEntity()
ext=1
Exit
EndIf
Next
If ext=1
NewNeur\Child[i]=NewNeur\Child[NewNeur\CountChld]
NewNeur\CountChld=NewNeur\CountChld-1
EndIf
EndIf
EndIf
EndIf
mxspd#=MouseXSpeed()*0.25
myspd#=MouseYSpeed()*0.25
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
campitch#=EntityPitch(Camera)+myspd#
If campitch#<-85 Then campitch#=-85
If campitch#>85 Then campitch#=85
RotateEntity Camera,campitch#,EntityYaw(Camera)-mxspd#,EntityRoll(Camera)
If KeyDown(17) MoveEntity Camera,0,0,.2
If KeyDown(31) MoveEntity Camera,0,0,-.2
If KeyDown(32) MoveEntity Camera,.2,0,0
If KeyDown(30) MoveEntity Camera,-.2,0,0
RenderWorld
UpdateWorld
If KeyHit(57) Then w=1-w
WireFrame w
Text 10,10,"----------TESTING----------"
For NewNeur.Neur=Each Neur
CameraProject(camera,EntityX(NewNeur\Ent),EntityY(NewNeur\Ent),EntityZ(NewNeur\Ent))
xb=ProjectedX()
yb=ProjectedY()
Text xb,yb,EntityName(NewNeur\Ent)
For i=1 To NewNeur\CountChld
CameraProject(camera,EntityX(NewNeur\Child[i]),EntityY(NewNeur\Child[i]),EntityZ(NewNeur\Child[i]))
Line(xb,yb,ProjectedX(),ProjectedY())
Text(10,30,NewNeur\CountChld)
Next
Next
Color(250,50,50)
Text(x1b,y1b-30,"Save")
Text(x2b,y2b-30,"Load")
Flip
Wend
End
Function UpdateNeurs()
End Function
;__________________________________________________________________
EntityColor(PickedEntity(),10,210,10)
If LastEnt<>0
EntityColor(LastEnt,250,250,250)
EndIf
If Select1<1 Select1=Select1+1
If Select1=2
If LastEnt<>PickedEntity()
NewNeur.Neur=Object.Neur(EntityName(LastEnt))
NewNeur\CountChld=NewNeur\CountChld+1
NewNeur\Child[NewNeur\CountChld]=PickedEntity()
Else
Select1=0
LastEnt= 0
EndIf
Else
;Stop()
If LastEnt=0 LastEnt=PickedEntity()
EndIf
;ElseIf LastEnt<>0
If Select1=0
EntityColor(LastEnt,250,250,250)
ElseIf Select1=1
EntityColor(LastEnt,250,50,50)
EndIf
Вопрос в следующем. Если сохранять и загружать сохранения в запущенной программе то никаких проблем. Но перезагрузив программу уже считать то что было сохранено в последний раз не выходит. Подскажите нюанс, чего не доделал?
Цитата:
Сохраняю чилды объектов. Чтобы добавить чилд к объекту надо щелкнуть по нему, и после щелкнуть по объекту который нужно к нему подцепить. закончить добавление щелчком по объекту к которому добавляли чилды.
|
|