pointeur dans une structure

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
minirop
Messages : 321
Inscription : mer. 02/août/2006 21:06

pointeur dans une structure

Message par minirop »

bonjour,
je m'amuse avec Dreamotion mais j'ai un problème de pointeur de structure contenant un pointeur :lol:

Code : Tout sélectionner

Structure Joueur
	*arme.Arme
	vie.l
	*cam.CEntity
EndStructure

Procedure CreateJoueur(*JMesh.Joueur)
	*JMesh\cam = DM_CreateCamera()
	DM_MoveEntity(*JMesh\cam, 0,0,-100)
	DM_CameraClsColor(*JMesh\cam, 125, 125, 125)
EndProcedure
çà me sort des trucs comme "Structure field missing" ou "structure not found cam"
j'ai tout essayer (mettre à * devant cam : *JMesh\*cam ou encore un . à la place du \,..ect...) mais rien à faire

merci à ceux qui "sauron"
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Voici un petit exemple qui pourait répondre a ta question:
d'abord un exemple de structure:

Code : Tout sélectionner

; exemple d'une structure
Structure cube
    *index.CEntity
    x.f
    Y.f
    z.f
EndStructure
; un tableau a partir de la structure créée
Dim cube.cube(1024) ; pour 1024 objets
puis la creation des objets peut ce faire de cette façon...

Code : Tout sélectionner

For objet=0 To 1023  
     cube(objet)\index=DM_CreateCube() ;  creer un Cube parmis 1024
next objet
... et pour manipuler tous ces objets:

Code : Tout sélectionner

for objet=0 to 1023
   cube(objet)\x=random(100)
   cube(objet)\Y=random(100)
   cube(objet)\z=random(100)
   DM_PositionEntity( cube(objet)\index, cube(objet)\x, cube(objet)\Y, cube(objet)\z)
next objet
en suite si tu veux ecrire une procedure, tu peux écrire:

Code : Tout sélectionner

Procedure Test( *cc.cube)
 *cc\index = DM_CreateCube()
EndProcedure
...
Test( @cube(nn] )
Force et sagesse...
minirop
Messages : 321
Inscription : mer. 02/août/2006 21:06

Message par minirop »

si tu regardes mon code c'est le même mais çà marche pas.
Et avec ton code j'ai un "invalid access memory"
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Etrange. Voici un code complet, et qui fonctionne chez moi:

Code : Tout sélectionner

; Fichiers Include 
IncludePath "Include\"  :  IncludeFile "dreamotion3d.pbi"


 
  ;  Initialisation des différents modules
  If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0 
    End
  EndIf

; exemple de structure
Structure cube
    *index.CEntity
    x.f
    Y.f
    z.f
EndStructure
; un tableau a partir de la structure créée
Dim cube.cube(24) ; 
; procedure pour créer un cube, pour l'exemple
Procedure Create( *cc.cube)
 *cc\index = DM_CreateCube()
EndProcedure 


  ; Initialise la fenêtre graphique
  DM_Graphics3D(800, 600, 32,  0, 1)
  ; Définit la couleur ambiante
  DM_AmbiantLight(100,  100,  100)
  DM_CreateLight(3)
  
  
  ; creation de mes 24 cubes
  For i = 0 To 23
   Create( @cube(i) )
   DM_TranslateEntity( cube(i)\index, i*3,0,0)
  Next
  
  
  ; ---------------------------------------
  ;          Gestion des caméras
  ; ---------------------------------------
  *camera   = DM_CreateCamera()
  DM_MoveEntity(*camera, 20,20,-50.0)
  DM_TurnEntity(*camera, 15,0,0)
  DM_CameraClsColor(*camera, 125, 125, 125)



  ; ---------------------------------------
  ;           Boucle principale
  ; ---------------------------------------
  Repeat
  	ExamineKeyboard()
  	ExamineMouse() 
  	ShowCursor_(1)

  	If KeyboardReleased(#PB_Key_Escape) Or WindowEvent()=#PB_Event_CloseWindow
  	  Quit=1
  	EndIf
      
      ; ---------------
      ;      Rendu
      ; ---------------
      DM_BeginScene()
        DM_RenderWorld()
       DM_EndScene()
      
      
Until Quit=1
DM_ClearGraphics()
End
Force et sagesse...
minirop
Messages : 321
Inscription : mer. 02/août/2006 21:06

Message par minirop »

c'est bon j'ai réussi à ne plus avoir de problème :) c'était que je passais un pointeur non initialisé :s
Répondre