JEU MEMORY

pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 - 7 mars 2005 à 19:54
fuzefu Messages postés 3 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 10 mai 2011 - 31 janv. 2011 à 16:02
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/29975-jeu-memory

fuzefu Messages postés 3 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 10 mai 2011
31 janv. 2011 à 16:02
D'ailleurs une fois n'est pas coutume je galère donc si je pouvais te demander un dernier petit coup de main ça serait fantabuleux !

Ze noob en flash.
fuzefu Messages postés 3 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 10 mai 2011
31 janv. 2011 à 14:31
Tout d'abord merci beaucoup.
En fait l'idée c'est que les cartes soient simplement visibles durant 2 secondes pour ensuite les chercher une fois retournées.
cs_adv Messages postés 149 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 28 janvier 2011 2
28 janv. 2011 à 13:47
Salut,
Je viens de regarder ce code (qui date un peu maintenant...). Comme je comprends pas vraiment le but, c'est pas forcément ce que tu cherches.

Tu peux essayer ainsi:
- Clip "classesJeu", Calque "Cartes"
Dans la fonction "clsCarte.prototype.ctrlLoadImg", tu ajoutes les 2 lignes suivantes
après la ligne "this._visible = true; //rendre la carte visible":
1. "this.montrer();"
2. "this.libre = true;"

Ainsi, après leur chargement, les cartes se montrent et sont libres pour être cliquées.

A plus,
adv
fuzefu Messages postés 3 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 10 mai 2011
28 janv. 2011 à 11:21
Salut,
Merci énormément pour le code, il fonctionne du tonnere.
J'avais juste une petit question : je galère pour trouver le code qui permettrait d'avoir toutes les cartes retournées dès le début donc si quelqu'un pouvait me donner un coup de pouce là dessus ça serait fabuleux !
Merci encore !
Utilisateur anonyme
4 mars 2009 à 20:51
Salut,
Juste pour dire merci, parce que j'ai utilisé ton code. Ca fonctionne super bien. J'ai changé quelques trucs (surtout la présentation et le xml), mais j'ai à peine touché au code.

Si ça t'intéresse, tu peux voir le jeu là: http://lpfmk.free.fr/
Au départ c'est un site qui présente des animations en patamod réalisées par des enfants dans le cadre d'un atelier d'arts plastiques. le memory est fait pour eux, à partir de gravures qu'ils ont dessinées.

Deux petits défauts quand même:
- Pas de boutons pour retourner au menu avant d'avoir fini le memory (pas bien grave, j'en ai rajouté un).
- Les images se chargent par paires, donc quand les images apparaissent, tu peux déduire ou sont les paires. Par exemple, quand il reste deux images à charger, tu sais qu'elles sont identiques. C'est sûr faut le savoir... (là par contre j'ai rien fait parce que ça dépasse mes maigres compétences en AS!)

Merci encore et A+

PS: le site est full-flash. Pour accéder au memory depuis la page d'accueil, il faut cliquer sur la grenouille en haut à droite.
cs_adv Messages postés 149 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 28 janvier 2011 2
24 mars 2007 à 13:51
Hello,
en VBA?
Ce code est de l'AS1, c'est quand même éloigné de ce que tu cherches. Les structures sont bien différentes.

VBA, c'est bien Visual Basic for Application?
Pour quelle application dois-tu développer ça?

A plus,
adv
coach72 Messages postés 2 Date d'inscription samedi 3 mars 2007 Statut Membre Dernière intervention 24 mars 2007
24 mars 2007 à 11:01
salut,
J'aimerais savoir comment obtenir ta programmation vba de ton jeu sans passer par le fichier ZIP que je ne peut pas lire
Ton jeu m'intéresse car j'ai un projet à faire et c'est exactement la même chose
Merci
cs_colinus Messages postés 4 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 13 juin 2006
13 juin 2006 à 09:47
Salut ADV,
en fait c'est oki, comme un gros naze j'avais pas uploadé le fichier xml. Alors ça le faisait pas.
Pour un link, pas possible pour l'instant, le site de mon client n'est pas encore public. Je poste ici quand c'est ouvert.

Merci!
colinus
cs_adv Messages postés 149 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 28 janvier 2011 2
13 juin 2006 à 09:43
Hello,
normalement, il n'y a rien à modifier pour mettre en ligne.
Que ce passe-t-il une fois sur le serveur ?
Je peux tester à une adresse ?
cs_colinus Messages postés 4 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 13 juin 2006
12 juin 2006 à 19:17
Hello tous!
J'arrive à fair fonctionner le memory en local, mais pas une fois uploadé sur le serveur... j'ai pourtant édité le chamin des images dans le fichier xml, mais ça fonctionne pas... j'ai oublié qqch?

Merci!
colinus
cs_j75 Messages postés 2 Date d'inscription mardi 26 avril 2005 Statut Membre Dernière intervention 26 avril 2005
26 avril 2005 à 14:18
ok merci.
cs_adv Messages postés 149 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 28 janvier 2011 2
26 avril 2005 à 14:02
Hello,
tout le code se trouve dans les 2 symboles "classesJeu" et "classesMenu".
C'était un test afin de centraliser le code, afin de ne pas avoir des petit bout partout.
Voilà, à plus.
adv
PS : les fichiers ont été écrits sour Flash MX
cs_j75 Messages postés 2 Date d'inscription mardi 26 avril 2005 Statut Membre Dernière intervention 26 avril 2005
26 avril 2005 à 11:51
Bonjour,
Je suis peut être un peu bête, mais je n'arrive pas à avoir accès à ton code, mais pourtant ça marche. Je comprends pas tout... Sinon, d'aspect extérieur, je trouve ça bien.
Merci.
PS : J'ai Flash MX 2004.
cs_adv Messages postés 149 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 28 janvier 2011 2
9 mars 2005 à 22:40
Hello,
je prends très bonne note de ces quelques points. En m'en vais prochainement reécrire une nouvelle versions sur ces bases.
Merci,
adv
top30 Messages postés 1158 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 6 août 2010
9 mars 2005 à 19:34
/*
Quelque conseils si tu en souhaites.

Plutot que de te taper du : "this.xmlMenu.firstChild.childNodes ..." à en plus finir ( même si c'est du copier-coller, je devine )tu devrais plus adopter la forme :
*/
var serie = this.xmlMenu.firstChild.childNodes[i].attributes ;
var init = {} ;
init.nom = serie.nom ;
init.tailleImag = int ( serie.tailleImg ) ;
// etc...

/*
De plus si tu est bien organisé ( et tu m'as l'air vu que tes variables d'initialisation ont le mème nom que tes attributs tu pourrait gagner encore du temps et des lignges dans une boucle rapide ;
*/
var serie = this.xmlMenu.firstChild.childNodes[i].attributes ;
var init = {} ;
for ( var i in serie ) {
var value = serie[i] ;
var isString = isNaN ( value ) ;
init[i] = isString ? value : int(value) ;
}



/*
Voir mème encore plus fort passer l'object "attribut en tant qu'init comme l'exemple suivant ; A toi de convertir un Number les données devant être traduite comme telle après ;
*/
var init = this.xmlMenu.firstChild.childNodes[i].attributes ;
//ajouter l'étiquette au menu
this.cont.attachMovie("mcElementMenu", ["elem" + i], i, init );




// au lieu de :
clsDebut.prototype.traiteXml = function(){
decY = 25 ;
for (i=0; i<this.xmlMenu.firstChild.childNodes.length; i++){
init={ nom : this.xmlMenu.firstChild.childNodes[i].attributes.nom,
tailleImg : int(this.xmlMenu.firstChild.childNodes[i].attributes.tailleImg),
espaceX : int(this.xmlMenu.firstChild.childNodes[i].attributes.espaceX),cartes en x
espaceY : int(this.xmlMenu.firstChild.childNodes[i].attributes.espaceY),
nbreCol : int(this.xmlMenu.firstChild.childNodes[i].attributes.nbreCol),
nbreLigne : int(this.xmlMenu.firstChild.childNodes[i].attributes.nbreLigne),
nbrePaire : int(this.xmlMenu.firstChild.childNodes[i].attributes.nbrePaire),
repertoire : this.xmlMenu.firstChild.childNodes[i].attributes.repertoire};images de la série
this.cont.attachMovie("mcElementMenu", ["elem" + i], i, init);
this.cont["elem" + i]._x = 0;
this.cont["elem" + i]._y = i * decY;
}
}


// tu aurais donc :
clsDebut.prototype.traiteXml = function() {
var series = this.xmlMenu.firstChild.childNodes ;
var i = -1 ;
while ( ++i < series.length ) {
var init = { _y:(i*25) } ; // Le _x etant à 0 autant ne pas le mettre ;
// Attributs : nom, tailleImg, espaceX, espaceY, nbreCol, nbreLigne nbrePaire et répertoire ;
var config = series[i].attributes ;
for ( var a in config ) init[a] = isNaN (config[a]) ? config[a] : int(config[a]) ;
this.cont.attachMovie("mcElementMenu", ["elem" + i], i, init );
}
}

/*
Personnellement je préfères.
Sinon je suis d'accord avec toi, partissant du maximun d'extériorisation ; Moins au touche au Fla, mieux sait.
Sinon c'est toujours intéressant de voir du codes fait par des prog de formation se mettant au Flash ;

A plus et bon courage

PS : ya un temps j'avait aussi fait un "composant" comme ca : http://www.flashkod.com/code.aspx?id=18544...
[7/10]
*//*
Quelque conseils si tu en souhaites.

Plutot que de te taper du : "this.xmlMenu.firstChild.childNodes ..." à en plus finir ( même si c'est du copier-coller, je devine )tu devrais plus adopter la forme :
*/
var serie = this.xmlMenu.firstChild.childNodes[i].attributes ;
var init = {} ;
init.nom = serie.nom ;
init.tailleImag = int ( serie.tailleImg ) ;
// etc...

/*
De plus si tu est bien organisé ( et tu m'as l'air vu que tes variables d'initialisation ont le mème nom que tes attributs tu pourrait gagner encore du temps et des lignges dans une boucle rapide ;
*/
var serie = this.xmlMenu.firstChild.childNodes[i].attributes ;
var init = {} ;
for ( var i in serie ) {
var value = serie[i] ;
var isString = isNaN ( value ) ;
init[i] = isString ? value : int(value) ;
}



/*
Voir mème encore plus fort passer l'object "attribut en tant qu'init comme l'exemple suivant ; A toi de convertir un Number les données devant être traduite comme telle après ;
*/
var init = this.xmlMenu.firstChild.childNodes[i].attributes ;
//ajouter l'étiquette au menu
this.cont.attachMovie("mcElementMenu", ["elem" + i], i, init );




// au lieu de :
clsDebut.prototype.traiteXml = function(){
decY = 25 ;
for (i=0; i<this.xmlMenu.firstChild.childNodes.length; i++){
init={ nom : this.xmlMenu.firstChild.childNodes[i].attributes.nom,
tailleImg : int(this.xmlMenu.firstChild.childNodes[i].attributes.tailleImg),
espaceX : int(this.xmlMenu.firstChild.childNodes[i].attributes.espaceX),cartes en x
espaceY : int(this.xmlMenu.firstChild.childNodes[i].attributes.espaceY),
nbreCol : int(this.xmlMenu.firstChild.childNodes[i].attributes.nbreCol),
nbreLigne : int(this.xmlMenu.firstChild.childNodes[i].attributes.nbreLigne),
nbrePaire : int(this.xmlMenu.firstChild.childNodes[i].attributes.nbrePaire),
repertoire : this.xmlMenu.firstChild.childNodes[i].attributes.repertoire};images de la série
this.cont.attachMovie("mcElementMenu", ["elem" + i], i, init);
this.cont["elem" + i]._x = 0;
this.cont["elem" + i]._y = i * decY;
}
}


// tu aurais donc :
clsDebut.prototype.traiteXml = function() {
var series = this.xmlMenu.firstChild.childNodes ;
var i = -1 ;
while ( ++i < series.length ) {
var init = { _y:(i*25) } ; // Le _x etant à 0 autant ne pas le mettre ;
// Attributs : nom, tailleImg, espaceX, espaceY, nbreCol, nbreLigne nbrePaire et répertoire ;
var config = series[i].attributes ;
for ( var a in config ) init[a] = isNaN (config[a]) ? config[a] : int(config[a]) ;
this.cont.attachMovie("mcElementMenu", ["elem" + i], i, init );
}
}

/*
Personnellement je préfères.
Sinon je suis d'accord avec toi, partissant du maximun d'extériorisation ; Moins au touche au Fla, mieux sait.
Sinon c'est toujours intéressant de voir du codes fait par des prog de formation se mettant au Flash ;

A plus et bon courage

PS : ya un temps j'avait aussi fait un "composant" comme ca : http://www.flashkod.com/code.aspx?id=18544...
[7/10]
*/
BananaTree Messages postés 337 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 2 novembre 2010
9 mars 2005 à 18:59
slt,

j'avais pas imaginé un truc dans ce genre.
c'est exellent.

vraiment une bonne astuce.

@+ et bon code
cs_adv Messages postés 149 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 28 janvier 2011 2
9 mars 2005 à 17:30
Hello,
voici une nouvelle version du memory.
Suite au message de BananaTree, j'avais envie de répartir le code différement dans le fla. Cela m'a permis d'ajouter quelques fonctionnalités.
A plus,
adv
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
9 mars 2005 à 09:28
Ben pour mes codes, désolé, mais je ne peux pas.. pas interessants hors contexte.

Mais un jour, promis s'il ya qqch d'interessant à vous montrer.
novaflash Messages postés 65 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 5 avril 2009
9 mars 2005 à 07:20
Pffff, te decourage pas ADV,
merci au nom des graphistes cools qui apprécient les
contributions quelqu'elles soient.
Qd à Peg, le nombre de fois où j'ai lu ces
remarques aigres sur le code des autres
que s'en est enervant à force...
Peg si au lieu de râler tu nous balancait
tes superbes codes on te promet de trouver
un autre râleur :)

eric
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
8 mars 2005 à 19:03
Bon, on va remettre les choses au point :

Flash est, au départ, un logiciel d'animation sur lequel on a greffé des bouts de code pour donner une certaine intéraction. Malheureusement (oui, car je ne pense pas que ce soit une bonne chose) Depuis Flash MX 2004, on a un virage à 180° qui à trnasformé Flash en un espèce de truc de programmation super développé avec ajout d'un langage bizarre : l'AS2. Il a apparement été créé pour attirer les programmeurs sur ce logiciel qui à la base, je le rappelle, est un logiciel de graphisme vectoriel animé.

Donc comprend que nous, simples graphistes (même si je fais du flash depuis un certain moment et que j'ai commencé comme programmeur) ayons du mal à nous faire à tout ces trucs bizarres qui arrivent directement du monde de la prog pure et dure... autant que vous ne compreniez pas que nous trouvions un flash sans animations complètement inutile et sans interêt ... puisque c'est sa fonction première !

Donc, MX 2004 à créé une fracture entre prog pur et graphiste ... et j'en suis réellement navré !

Peg'

Ps : pour mon solitaire, remets dans le cadre, je commençais à faire de la prog sur flash et c'était sous Flash 4.0 porté en flash 5.0 (un tout petit peu, alors)
cs_adv Messages postés 149 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 28 janvier 2011 2
8 mars 2005 à 17:45
Hello Peg',
Effectivement, je viens du monde de la programmation. Je me suis mis à Flash, il y a quelques temps afin de voir ce qu'il proposait pour le monde duquel je viens. Les possibilités m'ont parrues très interésentes.
Ensuite, je me suis mis à offrir mes services à des graphistes qui n'ont pas la possibilité de créer ce qu'ils désirent. Il y en a un grand nombre qui n'ont pas le courage, ou les possibilités, de se lancer comme tu l'as fait.
Dès lors, je fréquence périodiquement ce site. J'ai donc constaté qu'il y a beaucoup plus de graphiste que de programmeur qui le fréquente. Un programmeur qui veut apprendre le flash (comme je l'ai fait) et qui télécharge, par exemple, ton solitaire, n'y comprendra absolument rien. Ceci non pas parce que c'est mal fait, mais car c'est beaucoup trop éloigner de ce qu'il sait faire et pas suffisement commenté à son goût.
Voilà un peu pourquoi, je me suis décidé dernièrement à déposser une source sur ce site. Je ne te cache pas que tu ne m'encourage pas à poursuivre.

En ce qui concerne le chargement dynamique des images, en ligne, cela fait le loading de l'animation. Tout d'abord, les images ne sont pas chargée au clique, mais dès que l'animation est chargée. Ensuite, il n'est pas possible de cliquer sur une carte dont l'image n'est pas chargée, car elle n'est pas visible. Je n'arrive pas à comprendre pourquoi tu t'acharnes comme ça sur ces images.

Merci pour ton message, je vais changer le niveau en moyen. A plus,
adv
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
8 mars 2005 à 17:15
Je ne suis pas ok avec toi pour dire que le fait de charger les images à part allège le poids du flash, car au final il faudra tout charger .. alors même si tu charges tes images au clic (ce qui est assez limite pour une vilaine connection) ça fonctionne bien en local (rien à redire) mais cette méthode n'est stable sur le net ...

Ensuite, je n'avais pas vu que tu avais mis ta source au niveau "débutant". Moi je ne connais aucun débutant qui utilise des prototypes ... moi même qui ne suis pas un expert (mais je suis juste un graphiste, donc c'est excusable) je n'en utilise jamais.
Je mets au défi n'importe quel gars qui fait du flash depuis peu de comprendre et réutiliser ta source ...

Peut-être que pour toi, grand programmeur, ça te semble simple, mais n'oublies pas qu'ici c'est pas le cas.

Peg'
cs_adv Messages postés 149 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 28 janvier 2011 2
8 mars 2005 à 15:05
Hello,
je ne trouve pas ta question bête. Je n'ai simplement jamais pensé à la faire. Je pense également que c'est par mimétisme, car je n'ai jamais vu de code qui le faissait.
C'est donc pour moi plus une sugestion qu'une question.
Merci,
adv
BananaTree Messages postés 337 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 2 novembre 2010
8 mars 2005 à 13:52
slt,

je pose une peut être quetion bête, mais pourquoi ne pas avoir centralisé toutes les classes ?

@+ et bon code.
cs_adv Messages postés 149 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 28 janvier 2011 2
8 mars 2005 à 12:16
Merci pour vos commentaires.
J'ai fais cette source suite à la lecture d'un message sur le forum où quelqu'un cherchais un memory comme exemple.

Pour répondre à pegase31 :
L’intérêt de charger les images dynamiquement :
- limite le poids du swf
- l'apparition des cartes fait office de loading
- grande facilité d'adaptation pour différents niveaux de jeu avec des images différentes et le nombre de carte également.

Programmation OO:
- 30 x 8 fonctions (c'est de la POO), rien à dire
- structure simple à lire et à comprendre

Pour le dernier point qui concerne l'absence d'animation :
- le but de ma fréquentation de ce site n'est pas de me la peter. Et de recevoir plein de message, magnifique ce jeu, mais je n'arrive malheureusement rien comprendre au code...
- ce code est une base de travail fonctionnel dans le but de peut-être rendre service et de voir une approche différente de l’utilisation de flash.

et enfin, oui je programme dans d'autres langages (Java, VB, Prolog, Ada, ....), mais ça fait un bon moment que je fais du flash.

adv
SuperDevy Messages postés 842 Date d'inscription dimanche 24 novembre 2002 Statut Membre Dernière intervention 2 juillet 2007
7 mars 2005 à 22:31
Moi, je trouve ça correcte. C'est intelligent de charger de images externes : ça pourrai permettre de faire un jeu di style "jouer avec la tête de vos copains" où chaqun upload sa photo le jeu évolue ainsi ...

Sinon, question code, je trouve ça bien : c'est programmé OO AS1.

Question animations, il n'y en a pas. C'est pas grave ! C'est pas parce que l'on fait du Flash qu'on est obligé de faire tout bouger ! L'animation pourrait éventuellement être dans les vignettes (si elles sont remplacées par des swfs.

[8/10]
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
7 mars 2005 à 19:54
Alors déjà, je ne vois pas l'interêt de faire toutes tes images en load, car il aurait été plus simple de toutes les mettre dans l'animation de base plutôt que d'avoir 15 images en vrac dans le site .. flash permet de contenir toutes les images dans un seul fichier et je trouverais ça plus interessant. Même si ça permet de les changer sans recompiler l'animation, ça reste pas pratique !

Ensuite, ton code est sur chaque clip de cartes, soit 30 x 8 fonctions identiques sur l'animation générale .. n'aurais-tu pas pu faire plus simple et tout mettre sur la frame de base en appellant la Timeline de base ?

Pour ce qui est du jeu, question animation, c'est pauvre .. on a l'impression de se retrouver devant un jeu en Vb de base sans possibilités de faire des animations. Flash peut faire tourver des images, les réduire, faire des fades etc .. utilise ces fonctions, ça ne demande pas plus de poids.
Pour les cartes, tu le laisses pas la possibilité de recliquer sur une image pour la reselectionner si tu trouves un double .. ça t'oblige à retenir la place du double trouvé et d'aller cliquer sur la première puis la seconde qui vient de se retourner ... pas trés pratique.

Bref, un petit jeu fait avec un programme moyennement ficelé et moyennement jouable ...

Peg'

PS: tu programme en un autre langage et tu viens de te mettre à Flash, non ?
Rejoignez-nous