Un moment que j'ai pas codé et je me retrouve coincé avec une histoire de syntaxe.
Entre 2 moments de taf je me suis lancé dans l'adaptation d'un jeu de plateau en PB.
Plus pour m'entrainer et me lancer ensuite dans la création d'un jeu de mon cru.
J'ai donc fait comme ceci pour préparer un tableau avec des données structurées. J'ai seulement oublié la syntaxe pour passer mes infos dans un debug.
Code : Tout sélectionner
; LIBERTALIA by Ar-S
;
Declare.b ReadCards()
Macro RPS (key,defaut)
ReadPreferenceString(key,defaut)
EndMacro
Macro RPL (Numkey,Numdefaut)
ReadPreferenceLong(Numkey,Numdefaut)
EndMacro
Global Jour, EnMain, Abord, EnDefausse, NbrJoueurs, NbrButin
Global Pref$ = GetCurrentDirectory()+"pref\J1.txt"
Debug Pref$
#Equipage = 30 ; Nbr de carte totale par navire
#NbrJ = 7 ; 7 jrs de la semaine
Structure PERSO
Name.s ; Nom de l'unité
; Pouvoir, point de vie et point d attaque
ActionID.i
PV.i
PA.i
; Etapes d'un tour
J.b ; Jour
C.b ; Crepuscule
N.b ; Nuit
A.b ; Ancre
EndStructure
Global Dim Equipage.PERSO(30)
Procedure.b ReadCards()
If OpenPreferences(Pref$)
Debug "Ouverture Pref OK" ; TEST
ExaminePreferenceGroups()
While NextPreferenceGroup()
; Debug "GROUPNAME : " + PreferenceGroupName()
Equipage(i)\Name = RPS("NAME","")
Equipage(i)\ActionID = Val(PreferenceGroupName())
Equipage(i)\PV = Val(PreferenceGroupName())
Equipage(i)\PA = RPL("PA", 0)
Equipage(i)\J = RPL("J", 0)
Equipage(i)\C = RPL("C", 0)
Equipage(i)\N = RPL("N", 0)
Equipage(i)\A = RPL("A", 0)
Wend
ClosePreferences()
ProcedureReturn 1
Else
Debug "Erreur Lecture Pref"
ProcedureReturn 0
EndIf
EndProcedure
Debug ReadCards()
je souhaite maintenant debugger un des éléments du tableau.
Lorsque je fais de simple debug ça marche
Code : Tout sélectionner
Debug Equipage(5)\Name
Debug Equipage(5)\ActionID
Debug Equipage(5)\PV
Debug Equipage(5)\PA
Debug Equipage(5)\J
Debug Equipage(5)\C
Debug Equipage(5)\N
Debug Equipage(5)\A
Il me semble qu'array rentre en jeu mais je n'en suis plus sûr et la doc ne m'a pas avancée.
un truc du genre
Code : Tout sélectionner
Procedure DebugPerso(Array Equipage.PERSO(NumeroPerso) )
Debug Equipage(NumeroPerso)\Name
Debug Equipage(NumeroPerso)\ActionID
Debug Equipage(NumeroPerso)\PV
Debug Equipage(NumeroPerso)\PA
Debug Equipage(NumeroPerso)\J
Debug Equipage(NumeroPerso)\C
Debug Equipage(NumeroPerso)\N
Debug Equipage(NumeroPerso)\A
EndProcedure
If ReadCards() <> 0
DebugPerso( ????????? )
EndIf
Code : Tout sélectionner
Procedure DebugPerso(NumeroPerso)
Debug Equipage(NumeroPerso)\Name
Debug Equipage(NumeroPerso)\ActionID
Debug Equipage(NumeroPerso)\PV
Debug Equipage(NumeroPerso)\PA
Debug Equipage(NumeroPerso)\J
Debug Equipage(NumeroPerso)\C
Debug Equipage(NumeroPerso)\N
Debug Equipage(NumeroPerso)\A
EndProcedure
If ReadCards() <> 0
DebugPerso(5 )
EndIf
Merci pour le rappel.

======= CODE CORRIGE ========
Code : Tout sélectionner
; LIBERTALIA by Ar-S
;
Declare.b ReadCards()
Macro RPS (key,defaut)
ReadPreferenceString(key,defaut)
EndMacro
Macro RPL (Numkey,Numdefaut)
ReadPreferenceLong(Numkey,Numdefaut)
EndMacro
Global Jour, EnMain, Abord, EnDefausse, NbrJoueurs, NbrButin
Global Pref$ = GetCurrentDirectory()+"pref\J1.txt"
Debug Pref$
#Equipage = 30 ; Nbr de carte totale par navire
#NbrJ = 7 ; 7 jrs de la semaine
Structure PERSO
Name.s ; Nom de l'unité
; Pouvoir, point de vie et point d attaque
ActionID.i
PV.i
PA.i
; Etapes d'un tour
J.b ; Jour
C.b ; Crepuscule
N.b ; Nuit
A.b ; Ancre
EndStructure
Global Dim Equipage.PERSO(30)
Procedure.b ReadCards()
If OpenPreferences(Pref$)
ExaminePreferenceGroups()
While NextPreferenceGroup()
Debug "GROUPNAME : " + PreferenceGroupName()
i = Val(PreferenceGroupName() )
Equipage(i)\Name = RPS("NAME","")
Equipage(i)\ActionID = Val(PreferenceGroupName())
Equipage(i)\PV = Val(PreferenceGroupName())
Equipage(i)\PA = RPL("PA", 0)
Equipage(i)\J = RPL("J", 0)
Equipage(i)\C = RPL("C", 0)
Equipage(i)\N = RPL("N", 0)
Equipage(i)\A = RPL("A", 0)
Debug Equipage(i)\Name
Wend
ClosePreferences()
ProcedureReturn 1
Else
Debug "Erreur Lecture Pref"
ProcedureReturn 0
EndIf
EndProcedure
Procedure DebugPerso(Array Equipage.PERSO(1), NumeroPerso )
Debug Equipage(NumeroPerso)\Name
Debug Equipage(NumeroPerso)\ActionID
Debug Equipage(NumeroPerso)\PV
Debug Equipage(NumeroPerso)\PA
Debug Equipage(NumeroPerso)\J
Debug Equipage(NumeroPerso)\C
Debug Equipage(NumeroPerso)\N
Debug Equipage(NumeroPerso)\A
EndProcedure
If ReadCards() = 1
Debug ""
Debug "Test 1 : Nom du perso : " + Equipage(8)\Name
Debug "----LISTE Test 2----"
Debug ""
Debug DebugPerso(Equipage(),3 )
EndIf