Bonjour à tous,
Dans le cadre de mes études, je dois créer un mémory interactif. Je n'ai trouvé aucune application permettant d'avoir 32 images d'un coup. J'ai donc commencé à créer mon mémory avec OpenOffice Impress. J'ai créé plusieurs diapositives afin d'utiliser les hyperliens permettant d'avoir une seule image qui s'affiche, tout ceci me prend beaucoup de temps mais je m'en sors.
Mon problèmes est que :
je ne sais pas comment faire retourner les cartes en face cachée une fois que deux cartes sont retournées
Savez-vous comment faire ? Svp
En vous remerciant d'avance
Création Mémory : retourner en face cachée les cartes
Modérateur : Vilains modOOs
-
- Fraîchement OOthentifié
- Messages : 2
- Inscription : 27 avr. 2018 15:43
Création Mémory : retourner en face cachée les cartes
OpenOffice 4.1.3 - Windows 10
-
- GourOOu
- Messages : 5622
- Inscription : 25 nov. 2011 18:07
- Localisation : Guyane
Re: Création Mémory : retourner en face cachée les cartes
Bonsoir
Une solution alternative éventuelle à partir d'un dialogueA+
Une solution alternative éventuelle à partir d'un dialogue
Code : Tout sélectionner
Dim oDlg As Object
Global Compte as Integer
Global Chemin as String, Carte(1) as String, Ctrl(1) as String
Sub Main
Dim oURL as Variant
Dim tabCartes as Variant,Tirage(32) as Double, i as Integer
oURL = split(thisComponent.URL,"/")
oURL(UBound(oURL)) = ""
Chemin = Join(oURL,"/")
DialogLibraries.LoadLibrary("Standard")
oDlg = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
tabCartes = Array("Dos.gif","AsPique.gif","RoiPique.gif","ReinePique.gif","ValetPique.gif","10Pique.gif","09Pique.gif","08Pique.gif","07Pique.gif", _
"AsTrefle.gif","RoiTrefle.gif","ReineTrefle.gif","ValetTrefle.gif","10Trefle.gif","09Trefle.gif","08Trefle.gif","07Trefle.gif", _
"AsCarreau.gif","RoiCarreau.gif","ReineCarreau.gif","ValetCarreau.gif","10Carreau.gif","09Carreau.gif","08Carreau.gif","07Carreau.gif", _
"AsCoeur.gif","RoiCoeur.gif","ReineCoeur.gif","ValetCoeur.gif","10Coeur.gif","09Coeur.gif","08Coeur.gif","07Coeur.gif")
Tirage = Combinaison(32,32)
For i = 1 to 32
oDlg.getControl(i).Model.ImageURL = ConvertToURL(Chemin & tabCartes(0))
oDlg.getControl(i).Model.Tag = ConvertToURL(Chemin & tabCartes(Tirage(i)))
Next i
oDlg.Execute()
End Sub
Sub CliqueCarte(oEv as Object)
Dim i as Integer
Compte = Compte + 1
oEv.Source.Model.ImageURL = oEv.Source.Model.Tag
If Compte = 1 Then
Carte(0) = Left(Split(oEv.Source.Model.Tag,"/")(UBound(Split(oEv.Source.Model.Tag,"/"))),2)
Ctrl(0) = oEv.Source.Model.Name
Else
Carte(1) = Left(Split(oEv.Source.Model.Tag,"/")(UBound(Split(oEv.Source.Model.Tag,"/"))),2)
Ctrl(1) = oEv.Source.Model.Name
End If
If compte = 2 Then
Wait 1500
For i = 1 to 32
oDlg.getControl(i).Model.ImageURL = ConvertToURL(Chemin & "Dos.gif")
Next i
If carte(0) = carte(1) Then
oDlg.getControl(Ctrl(0)).Model.Enabled = False
oDlg.getControl(Ctrl(1)).Model.Enabled = False
End If
Compte = 0
Redim carte(1)
Redim Ctrl(1)
End If
End Sub
'https://forum.openoffice.org/fr/forum/viewtopic.php?f=15&t=30263
'Renvoie un tableau aléatoire sans répétitions de <nbrTirages> entiers de 1 à <GammeValeurs>
'Le tableau commence à l'indice 1 et bien sûr nbrTirages ne peut être supérieur à GammeValeurs
'Macro de Bernard Marcelly
Function Combinaison(GammeValeurs As Integer, nbrTirages As Integer)
Dim res(1 To nbrTirages) As Double
Dim valeurs(1 to GammeValeurs) As Integer
Dim i As Long, v As Long, valMax As Integer
If (nbrTirages > GammeValeurs) Or (nbrTirages < 0) Or (GammeValeurs < 0) Then err = 14
For i = 1 To GammeValeurs
valeurs(i) = i
Next
valMax = GammeValeurs
For i = 1 to nbrTirages
Do
v = 1 +Int(Rnd*valMax)
Loop Until v <= valMax
res(i) = valeurs(v)
valeurs(v) = valeurs(valMax)
valMax = valMax -1
Next
Combinaison=res
End Function
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64