Création d'un petit jeux en flash

sidero68 Messages postés 3 Date d'inscription lundi 19 octobre 2009 Statut Membre Dernière intervention 3 novembre 2009 - 27 oct. 2009 à 13:48
sidero68 Messages postés 3 Date d'inscription lundi 19 octobre 2009 Statut Membre Dernière intervention 3 novembre 2009 - 3 nov. 2009 à 19:33
Bonjour,

je suis graphiste, et j'ai beaucoup de difficulté avec le code...
je sais faire un bouton, un clip et du drag... c'est à peu près tout, j'aimerai créer un jeux assez simple, mais même ça je ne sais pas le faire toute seule ! je m'explique :
plusieurs personnages sur la scène, et de l'autre côté des noms, en glissant le nom sur le bon personnage apparait un message "gagné" sinon "perdu !"
... soyez compréhensifs, je compte beaucoup sur vos lumières !
merci !

3 réponses

meumeu64 Messages postés 12 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 29 octobre 2009
29 oct. 2009 à 14:23
Salut,
Je débute en as3 mais j'ai fait ce code.
Il est super commenté et même s'il peut être aisément amélioré j'espère qu'il va pouvoir t'aider.
/// Déclaration des différentes variables ///
/* 
Dans un premier temps on stocke les clips dans des variables qu'on affichera par la suite.
var "le nom de la varible":"le nom du clip à stocker"="le nom du clip à stocker"();
*/
// les images
var img1:image1=new image1();
var img2:image2=new image2();
var img3:image3=new image3();
var img4:image4=new image4();
// les noms 
var nm1:nom1=new nom1();
var nm2:nom2=new nom2();
var nm3:nom3=new nom3();
var nm4:nom4=new nom4();

//Création d'une zone texte pour afficher les resultats dans une variable appelée zonetexte
var zoneTexte:TextField = new TextField();

/*
déclaration de variables pour chacunes des images
0: l'image n'est pas associée au bon nom/ 1:l'image est associée au bon nom
*/
var ver1=0;
var ver2=0;
var ver3=0;
var ver4=0;
//



//Afficher les clips: addChild("le nom de la variable à afficher");
addChild(zoneTexte);
//les images
addChild(img1);
addChild(img2);
addChild(img3);
addChild(img4);
//les noms
addChild(nm1);
addChild(nm2);
addChild(nm3);
addChild(nm4);
//

/* 
maintenant il te faut les positionner sur la scene comme tu le desir:
"le nom de la variable"."l'axe"="coordonée sur l'axe";
*/

//image
img1.x=20;
img1.y=30;
img2.x=20;
img2.y=100+img1.y;
img3.x=20;
img3.y=100+img2.y;
img4.x=20;
img4.y=100+img3.y;

//nom
nm1.x=400;
nm1.y=30;
nm2.x=400;
nm2.y=100+nm1.y;
nm3.x=400;
nm3.y=100+nm2.y;
nm4.x=400;
nm4.y=100+nm3.y;
// texte
zoneTexte.x=200;

//on passe les clips en mode bouton
nm1.buttonMode=true;
nm2.buttonMode=true;
nm3.buttonMode=true;
nm4.buttonMode=true;
//

//fonction qui me permet de gerer les différents drag & drop

function dragNm(evt:MouseEvent):void {
evt.currentTarget.startDrag();
}
function dropNm(evt:MouseEvent):void {
evt.currentTarget.stopDrag();
}

nm1.addEventListener(MouseEvent.MOUSE_DOWN, dragNm);
nm1.addEventListener(MouseEvent.MOUSE_UP, dropNm);
nm2.addEventListener(MouseEvent.MOUSE_DOWN, dragNm);
nm2.addEventListener(MouseEvent.MOUSE_UP, dropNm);
nm3.addEventListener(MouseEvent.MOUSE_DOWN, dragNm);
nm3.addEventListener(MouseEvent.MOUSE_UP, dropNm);
nm4.addEventListener(MouseEvent.MOUSE_DOWN, dragNm);
nm4.addEventListener(MouseEvent.MOUSE_UP, dropNm);
//


//Création d'un ecouteur de scene qui appel la fonction "verif"
stage.addEventListener(Event.ENTER_FRAME,verif);

function verif(e:Event) {

/*
J'appel une fonction appelée "test" qui permet de replacer les clips à
leur position de début si le nom touche la mauvaise image.
Voir la fonction test plus Bas.
*/
test(nm1,img2,img3,img4,30);
test(nm2,img1,img3,img4,60);
test(nm3,img2,img1,img4,90);
test(nm4,img2,img3,img1,120);
/*
Si j'amais le joueur trouve une des solutions
*/
if (nm1.hitTestObject(img1)==true&&ver1==0) {
nm1.x=img1.x;//je place le clip nom en dessous de l'image associée
nm1.y=img1.y+img1.height+20;
zoneTexte.text="bon";// la zone texte affiche "bon"
ver1=1;//le solution numero 1 est trouvée
nm1.stopDrag();//le clip ne se deplace plus
nm1.mouseEnabled=false;//on ne peut plus cliquer dessus
}

if (nm2.hitTestObject(img2)==true&&ver2==0) {
nm2.x=img2.x;
nm2.y=img2.y+img2.height+20;
zoneTexte.text="bon";
ver2=1;
nm2.stopDrag();
nm2.mouseEnabled=false;
}

if (nm3.hitTestObject(img3)==true&&ver3==0) {
nm3.x=img3.x;
nm3.y=img3.y+img3.height+20;
zoneTexte.text="bon";
ver3=1;
nm3.stopDrag();
nm3.mouseEnabled=false;
}

if (nm4.hitTestObject(img4)==true&&ver4==0) {
nm4.x=img4.x;
nm4.y=img4.y+img4.height+20;
zoneTexte.text="bon";
ver4=1;
nm4.stopDrag();
nm4.mouseEnabled=false;
}
/*
Si jamais le joueur trouve toutes les solutions
*/
if (ver1==ver2==ver3==ver4==1) {
zoneTexte.text="bravo";
}
}



function test(nomTeste,imageMauvaise1,imageMauvaise2,imageMauvaise3,positionDepartY) {


if (nomTeste.hitTestObject(imageMauvaise1)==true) {
nomTeste.stopDrag();// on arrete le deplacement
nomTeste.x=400;// l'objet nom revient à sa place
nomTeste.y=positionDepartY;
zoneTexte.text="faux";// la zone de texte affiche "faux"
}
if (nomTeste.hitTestObject(imageMauvaise2)==true) {
nomTeste.stopDrag();
nomTeste.x=400;
nomTeste.y=positionDepartY;
zoneTexte.text="faux";
}
if (nomTeste.hitTestObject(imageMauvaise3)==true) {
nomTeste.stopDrag();
nomTeste.x=400;
nomTeste.y=positionDepartY;
zoneTexte.text="faux";
}
}
0
sidero68 Messages postés 3 Date d'inscription lundi 19 octobre 2009 Statut Membre Dernière intervention 3 novembre 2009
31 oct. 2009 à 18:22
Merci beaucoup ! c'est sympa
je vais de ce pas me le mettre de côté, car j'ai eu une réponse d'un ami, qui me convient.
Je vais lui demander si je peux vous poster son code entièrement Flash, pour en faire profiter ceux que ça intéresse sur ce forum.
0
sidero68 Messages postés 3 Date d'inscription lundi 19 octobre 2009 Statut Membre Dernière intervention 3 novembre 2009
3 nov. 2009 à 19:33
Voici le code flash (AS2) avec des clips dont le noms sont par "I_1" "I_2" etc... pour les clips statiques (les personnages par ex)
et des clips "B_1" "B_2" etc... (pour les noms qui leur correspondent). Tous ces clips sont sur la scène. L'action ci-dessous se trouve sur la 1ère image du timeline, avec un stop.
..ça marche du tonnerre ! merci à Mathieu !
....................

// tous les clip commençant par I_ image B_
tab_texte = new Array();
tab_bout = new Array();
score = 0;
fin_jeu = 0;
function detect(cl) {


for (i=0; i<tab_texte.length; i++) {
if (cl.hitTest(tab_texte[i])) {

if (cl._name.substr(2) == tab_texte[i]._name.substr(2)) {

trace("ok ça touche");
cl.gotoAndStop(2);

score++;

texte_score = score+"/"+Tscore;
//instruction si gagné
_root.gagne.gotoAndStop(2);

} else {

trace("pas bon");
stop_detect(cl);
cl.gotoAndStop(3);
//instruction si perdu
_root.gagne.gotoAndStop(1);




}
fin_jeu++;
cl.enabled = false;

cl._x = (tab_texte[i]._x)+((tab_texte[i]._width-cl._width)/2);
cl._y = (tab_texte[i]._y)+((tab_texte[i]._height+5));
if (fin_jeu == Tscore) {
//fin du jeu
trace("ok john");
}
tab_texte.splice(i,1);

stop_detect(cl);
}




}




}
function stop_detect(cl) {
cl.stopDrag();


}
function init() {
for (i in this) {
trace(this[i]._name);
if (typeof (this[i]) == "movieclip" && (this[i]._name.substr(0, 2) == "I_" || this[i]._name.substr(0, 2) == "B_")) {
if (this[i]._name.substr(0, 2) == "B_") {
tab_bout.push(this[i]);

this[i].onPress = function() {
this.swapDepths(this.getNextHighestDepth()-1);
this.startDrag();

};
this[i].onRelease = function() {
detect(this);
stop_detect(this);


};
this[i].onReleaseOutside = function() {
detect(this);
stop_detect(this);


};
} else if (this[i]._name.substr(0, 2) == "I_") {
tab_texte.push(this[i]);
}

}


}

Tscore = tab_texte.length;
texte_score = score+"/"+Tscore;

}
ifFrameLoaded (this._currentframe) {
init();
}
0
Rejoignez-nous