begin process at 2010 03 22 12:30:33
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ActionScripts

 > JEU MEMORY

JEU MEMORY


 Information sur la source

Note :
9 / 10 - par 4 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :ActionScripts Niveau :Initié Date de création :07/03/2005 Date de mise à jour :09/03/2005 17:26:54 Vu / téléchargé :7 299 / 1 550

Auteur : adv

Ecrire un message privé
Commentaire sur cette source (23)
Ajouter un commentaire et/ou une note

 Description

Implémentation du jeu de mémoire consistant à retrouver des paires de cartes.
Deuxieme version complettant la mise en oeuvre de certains choix.
- donne la possibilité de créer différentes séries
- légère animations lors de la sélection d'une carte

Remarque:
cette nouvelle version est un peu plus complète et comporte plus de code que la précédentes. La lecture de ce fichier peut être difficile pour les non-initiés à une programmation orientée objet.



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

08 mars 2005 17:47:47 :
09 mars 2005 17:26:54 :

 Sources de la même categorie

Source avec Zip Source avec une capture LANCER UNE GALERIE LIGHTBOX À PARTIR D'UN FLASH par beladom
Source avec Zip SUPER TWEEN PACKAGE par Acidchlorhydrik
Source avec Zip NAVIGATION DANS UN FICHIER XML par inaden
Source avec Zip Source avec une capture TWSCROLLBAR, UNE CLASSE DE SCROLLBAR SIMPLE ET PRATIQUE À UT... par Twinspirit
Source avec Zip Source avec une capture REBOND DE BALLON AVEC TWEEN par habibcode

Commentaires et avis

Commentaire de pegase31 le 07/03/2005 19:54:49 administrateur CS

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 ?

Commentaire de SuperDevy le 07/03/2005 22:31:05

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]

Commentaire de adv le 08/03/2005 12:16: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

Commentaire de BananaTree le 08/03/2005 13:52:11

slt,

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

@+ et bon code.

Commentaire de adv le 08/03/2005 15:05:58

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

Commentaire de pegase31 le 08/03/2005 17:15:42 administrateur CS

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'

Commentaire de adv le 08/03/2005 17:45:31

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

Commentaire de pegase31 le 08/03/2005 19:03:03 administrateur CS

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)

Commentaire de novaflash le 09/03/2005 07:20:48

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

Commentaire de pegase31 le 09/03/2005 09:28:29 administrateur CS

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.

Commentaire de adv le 09/03/2005 17:30:03

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

Commentaire de BananaTree le 09/03/2005 18:59:48

slt,

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

vraiment une bonne astuce.

@+ et bon code

Commentaire de top30 le 09/03/2005 19:34:18

/*
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]
*/

Commentaire de adv le 09/03/2005 22:40:55

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

Commentaire de j75 le 26/04/2005 11:51:09

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.

Commentaire de adv le 26/04/2005 14:02:22

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

Commentaire de j75 le 26/04/2005 14:18:24

ok merci.

Commentaire de colinus le 12/06/2006 19:17:16

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

Commentaire de adv le 13/06/2006 09:43:29

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 ?

Commentaire de colinus le 13/06/2006 09:47:26

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

Commentaire de coach72 le 24/03/2007 11:01:54

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

Commentaire de adv le 24/03/2007 13:51:29

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

Commentaire de mpmk le 04/03/2009 20:51:27 10/10

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.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales