Création Mémory : retourner en face cachée les cartes

Discussions sur le module de PréAO pour la réalisation de diaporamas sous Impress.

Modérateur : Vilains modOOs

Alex170994
Fraîchement OOthentifié
Messages : 2
Inscription : 27 avr. 2018 15:43

Création Mémory : retourner en face cachée les cartes

Message par Alex170994 »

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 :)
OpenOffice 4.1.3 - Windows 10
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: Création Mémory : retourner en face cachée les cartes

Message par Piaf »

Bonsoir
Une solution alternative éventuelle à partir d'un dialogue
Memory.png

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
A+
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