begin process at 2012 02 10 06:22:09
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > SPLIT FROG

SPLIT FROG


 Information sur la source

Note :
Aucune note
Catégorie :Jeux Classé sous :Concours Flash, reflexion, taquin, puzzle Niveau :Initié Date de création :30/08/2008 Date de mise à jour :30/08/2008 17:05:00 Vu / téléchargé :5 182 / 734

Auteur : wetboy

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

 Description

Cliquez pour voir la capture en taille normale
Jeu genre puzzle réalisé pour le concours de développement de jeux flash.
Le but du jeu est de reconstituer l'image choisie par l'utilisateur  

Source

  • /************************
  • IMPORTS
  • ************************/
  • import dimArray;
  • import item;
  • import flash.net.SharedObject;
  • stop();
  • /************************
  • INITS
  • ************************/
  • indication.visible = false;
  • //script principal d'éxécution
  • var grille:dimArray = new dimArray (5,5);
  • //nombre d'image
  • var nbImage:int = grille.length - grille.colonne;
  • //création d'un objet item
  • var myItem:item;
  • //variable utile pour le menu
  • var myItemPreview:Sprite = new Sprite();
  • var score:int = 0;
  • var nbLife:int = 3;
  • var timer:int = 90000;
  • var lifeStartTime:int;
  • var lifeTimeTo:int;
  • var interval:int = 1000;
  • var prevtime:int;
  • //var de controle d'animation
  • var isMoving:Boolean = false;
  • //tableau d'item contenant les images
  • var itemList:Array = new Array ();
  • //dimension d'une case
  • var caseHeight:Number = 100;
  • var caseWidth:Number = 100;
  • //variable de limite
  • var maxLine:int = grille.ligne;
  • var maxRow:int = grille.colonne;
  • //point de départ de la découpe
  • var ptX:Number = 0;
  • var ptY:Number = 0;
  • //variable de parcours
  • var line:int = 1;
  • var row:int = 0;
  • //point d'origine de la grille
  • var xGridOrigin:Number = 64;
  • var yGridOrigin:Number = 56;
  • //point maximun de la grille
  • var xGridMax:Number = xGridOrigin + (maxLine-1)*caseWidth;
  • var yGridMax:Number = yGridOrigin + (maxRow-1)*caseHeight;
  • //position du curseur dans le tableau
  • var curseurLine:int = 0;
  • var curseurRow:int = 0;
  • //variable de destination de l'item
  • var dest:int = -1;
  • //variable pour l'éxectution (doEveryFrame)
  • var curLine:int;
  • var curRow:int;
  • var mypreview:DisplayObject;
  • var img:Bitmap;
  • //récupération de l'image dans la bibliothéque en fonction du niveaux
  • var monImage:*;
  • // gestion du son
  • var mus:musique = new musique();
  • var be:beep = new beep();
  • //création d'un sharedObject pour le highscore
  • var mySo:SharedObject;
  • mySo = SharedObject.getLocal("highScore");
  • if(mySo.size == 0)
  • {
  • mySo.data.now = new Date().time;
  • }
  • switch (level)
  • {
  • case 1 :
  • monImage = new level1(0,0);
  • break;
  • case 2 :
  • monImage = new level2(0,0);
  • break;
  • default:
  • break;
  • }
  • // creation des éléments du jeux
  • for (var i:int = 0;i<nbImage;i++)
  • {
  • myItem = new item ("image"+i);
  • myItemPreview = new Sprite();
  • //creation d'un bitmapData
  • var myBmpData:BitmapData = new BitmapData(caseWidth, caseHeight , true, 0x0000CC44);
  • //création des objet pour la découpe d'image
  • var myRect:Rectangle = new Rectangle(ptX, ptY, caseWidth,caseHeight );
  • var myPt:Point = new Point(0, 0);
  • //découpe de l'image
  • myBmpData.copyPixels(monImage, myRect, myPt);
  • //creation d&#8217;une enveloppe Bitmap pour le zone de jeu
  • var myBmp:Bitmap = new Bitmap (myBmpData);
  • //creation d&#8217;une enveloppe Bitmap pour la preview
  • var myBmp2:Bitmap = new Bitmap (myBmpData);
  • // ajout à l'affichage
  • myItem.addChild (myBmp);
  • myItemPreview.addChild(myBmp2);
  • //chargement du reflet
  • var myReflet:reflet = new reflet ();
  • //myReflet.cacheAsBitmap();
  • myItem.addChild (myReflet);
  • itemList.push(myItem);
  • //gestion de la zone "menu"
  • //ajout de l'image de preview
  • myItemPreview.scaleX *= 0.3;
  • myItemPreview.scaleY *= 0.3;
  • myItemPreview.x = 1+ptX*0.3;
  • myItemPreview.y = 1+ptY*0.3;
  • myItemPreview.name = myItem.name;
  • menu.preview.addChild (myItemPreview);
  • //création de la case correspondante
  • var caseIn:gridCase = new gridCase(ptX+xGridOrigin,ptY+yGridOrigin+caseHeight,"image"+i);
  • grille.addToTab(line,row,caseIn);
  • if (ptX == 400)
  • {
  • ptY += caseHeight;
  • row = 0;
  • ptX = 0;
  • line += 1;
  • }
  • else
  • {
  • ptX += caseWidth;
  • row += 1;
  • }
  • }
  • for (i= 0;i < nbLife ; i++)
  • {
  • var iconLife:curseur = new curseur();
  • iconLife.x = 0 + i*30;
  • iconLife.y = 0;
  • iconLife.scaleX = 0.2;
  • iconLife.scaleY = 0.2;
  • iconLife.name = "life"+i;
  • menu.life_count.addChild (iconLife);
  • }
  • line = 0;
  • row = 0;
  • for (i=0;i<maxRow;i++)
  • {
  • caseIn = new gridCase((i*caseWidth)+xGridOrigin,yGridOrigin,"none"+i);
  • grille.addToTab(line,row,caseIn);
  • row++;
  • }
  • grille.tab[0][0].used = true;
  • //random sur le tableaux des boites
  • var RandomItemList:Array = new Array();
  • var n:int = itemList.length;
  • for (i=0;i<n;i++)
  • {
  • var ind: int = Math.floor(Math.random() * itemList.length);
  • RandomItemList.push(itemList[ind]);
  • itemList.splice(ind,1);
  • }
  • var nbItemInStock:int = RandomItemList.length;
  • //nombre d'objet déjà sur la grille
  • var nbItemOnScreen:int = 0;
  • var myCurseur:curseur = new curseur();
  • myCurseur.x = xGridOrigin;
  • myCurseur.y = yGridOrigin;
  • myCurseur.name = "curseur";
  • zone.addChild (myCurseur);
  • //gestion des entrées clavier
  • var spaceIsPress:Boolean = false;
  • //ecouteur sur le clavier
  • stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
  • stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
  • addEventListener(Event.ENTER_FRAME, doEveryFrame);
  • lifeStartTime = getTimer();
  • //lancement du son
  • var canalmusique:SoundChannel = mus.play(0,100);
  • var transformationSon1:SoundTransform = canalmusique.soundTransform;
  • transformationSon1.volume = .4;
  • canalmusique.soundTransform = transformationSon1;
  • //fin script principal d'éxécution
  • //handler sur les evenements clavier
  • function keyDownHandler(event:KeyboardEvent):void
  • {
  • if (event.keyCode == 32)
  • {
  • spaceIsPress = true;
  • if (isMoving == false && nbItemOnScreen<nbItemInStock)
  • {
  • // positionnement de l'image
  • if (myCurseur.x == xGridOrigin && myCurseur.y == yGridOrigin)
  • {
  • addSquareToStage();
  • }
  • }
  • }
  • }
  • function keyUpHandler(event:KeyboardEvent):void
  • {
  • //espace
  • if (event.keyCode == 32)
  • {
  • spaceIsPress = false;
  • }
  • //envoyer vers le gauche
  • else if (event.keyCode == 37)
  • {
  • if (spaceIsPress && isMoving == false)
  • {
  • curseurLine = (myCurseur.y-yGridOrigin)/caseHeight;
  • curseurRow = (myCurseur.x-xGridOrigin)/caseWidth;
  • myItem = grille.tab[curseurLine][curseurRow].content;
  • if (myItem != null)
  • {
  • dest = itemMoveAviability("line",false,curseurLine,curseurRow);
  • if (dest != -1)
  • {
  • isMoving = true;
  • myItem.moveMeTo("x",xGridOrigin+(caseWidth*dest),15);
  • myItem.addEventListener(item.FINISH,finishMove);
  • grille.tab[curseurLine][curseurRow].content = null;
  • grille.tab[curseurLine][curseurRow].used = false;
  • }
  • }
  • }
  • else if (myCurseur.x > xGridOrigin)
  • {
  • myCurseur.x -= caseHeight;
  • }
  • }
  • //envoyer vers le haut
  • else if (event.keyCode == 38)
  • {
  • if (spaceIsPress && isMoving == false)
  • {
  • curseurLine = (myCurseur.y-yGridOrigin)/caseHeight;
  • curseurRow = (myCurseur.x-xGridOrigin)/caseWidth;
  • myItem = grille.tab[curseurLine][curseurRow].content;
  • if (myItem != null)
  • {
  • dest = itemMoveAviability("row",false,curseurRow,curseurLine);
  • if (dest != -1)
  • {
  • isMoving = true;
  • myItem.moveMeTo("y",yGridOrigin+(caseHeight*dest),15);
  • myItem.addEventListener(item.FINISH,finishMove);
  • grille.tab[curseurLine][curseurRow].content = null;
  • grille.tab[curseurLine][curseurRow].used = false;
  • }
  • }
  • }
  • else if (myCurseur.y > yGridOrigin)
  • {
  • myCurseur.y -= caseHeight;
  • }
  • }
  • //envoyer vers le droite
  • else if (event.keyCode == 39)
  • {
  • if (spaceIsPress && isMoving == false)
  • {
  • curseurLine = (myCurseur.y-yGridOrigin)/caseHeight;
  • curseurRow = (myCurseur.x-xGridOrigin)/caseWidth;
  • myItem = grille.tab[curseurLine][curseurRow].content;
  • if (myItem != null)
  • {
  • dest = itemMoveAviability("line",true,curseurLine,curseurRow);
  • if (dest != -1)
  • {
  • isMoving = true;
  • myItem.moveMeTo("x",xGridOrigin+(caseWidth*dest),15);
  • myItem.addEventListener(item.FINISH,finishMove);
  • grille.tab[curseurLine][curseurRow].content = null;
  • grille.tab[curseurLine][curseurRow].used = false;
  • }
  • }
  • }
  • else if (myCurseur.x < xGridMax)
  • {
  • myCurseur.x += caseHeight;
  • }
  • }
  • //envoyer vers le bas
  • else if (event.keyCode == 40)
  • {
  • if (spaceIsPress && isMoving == false)
  • {
  • curseurLine = (myCurseur.y-yGridOrigin)/caseHeight;
  • curseurRow = (myCurseur.x-xGridOrigin)/caseWidth;
  • myItem = grille.tab[curseurLine][curseurRow].content;
  • if (myItem != null)
  • {
  • dest = itemMoveAviability("row",true,curseurRow,curseurLine);
  • if (dest != -1)
  • {
  • isMoving = true;
  • myItem.moveMeTo("y",yGridOrigin+(caseHeight*dest),15);
  • myItem.addEventListener(item.FINISH,finishMove);
  • grille.tab[curseurLine][curseurRow].content = null;
  • grille.tab[curseurLine][curseurRow].used = false;
  • }
  • }
  • }
  • else if (myCurseur.y < yGridMax)
  • {
  • myCurseur.y += caseHeight;
  • }
  • }
  • }
  • function doEveryFrame(event:Event):void
  • {
  • //gestion du timer
  • lifeTimeTo = timer - (getTimer() - lifeStartTime);
  • menu.time_barre.barre.scaleX = lifeTimeTo/timer;
  • if (lifeTimeTo <=0)
  • {
  • removeEventListener(Event.ENTER_FRAME, doEveryFrame);
  • stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
  • stage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
  • menu.time_barre.barre.scaleX = 0;
  • nbLife --;
  • if (nbLife == 0)
  • {
  • canalmusique.stop();
  • zone.removeChild(myCurseur);
  • gotoAndStop("lose");
  • }
  • else
  • {
  • newLife();
  • }
  • }
  • else if (lifeTimeTo <=10000)
  • {
  • if (prevtime != 0)
  • {
  • interval = prevtime - lifeTimeTo;
  • }
  • var colorInfo:ColorTransform = menu.time_barre.transform.colorTransform;
  • colorInfo.color = 0x993300;
  • menu.time_barre.transform.colorTransform = colorInfo;
  • if (interval >= 1000)
  • {
  • prevtime = lifeTimeTo;
  • var canalbeep:SoundChannel = be.play();
  • var transformationSon2:SoundTransform = canalbeep.soundTransform;
  • transformationSon2.volume = .5;
  • canalbeep.soundTransform = transformationSon2;
  • interval = 0;
  • }
  • }
  • //gestion de la preview
  • curLine = (myCurseur.y-yGridOrigin)/caseHeight;
  • curRow = (myCurseur.x-xGridOrigin)/caseWidth;
  • if (myItem != null)
  • {
  • mypreview = menu.preview.getChildByName(myItem.name);
  • mypreview.visible = true;
  • }
  • myItem = grille.tab[curLine][curRow].content;
  • if (myItem != null)
  • {
  • mypreview = menu.preview.getChildByName(myItem.name);
  • mypreview.visible = false;
  • }
  • }
  • //fonction qui gére le passage entre deux vie
  • function newLife () :void
  • {
  • menu.life_count.removeChild (menu.life_count.getChildByName("life"+nbLife));
  • var MyDeathCurseur:curseurDeath= new curseurDeath();
  • MyDeathCurseur.stop();
  • MyDeathCurseur.x = myCurseur.x;
  • MyDeathCurseur.y = myCurseur.y;
  • zone.addChild (MyDeathCurseur);
  • zone.removeChild(myCurseur);
  • MyDeathCurseur.play();
  • MyDeathCurseur.addEventListener("finish",gotoNew);
  • }
  • //fonction qui ajoute le curseur et décompte la vie
  • function gotoNew (e:Event):void
  • {
  • myCurseur = new curseur();
  • myCurseur.x = xGridOrigin;
  • myCurseur.y = yGridOrigin;
  • myCurseur.name = "curseur";
  • zone.addChild (myCurseur);
  • lifeStartTime = getTimer();
  • menu.time_barre.barre.scaleX = 1;
  • interval = 1000;
  • prevtime = 0;
  • var colorInfo:ColorTransform = menu.time_barre.transform.colorTransform;
  • colorInfo.color = 0xFFFFFF;
  • menu.time_barre.transform.colorTransform = colorInfo;
  • zone.removeChild(DisplayObject(e.target));
  • isMoving = false;
  • spaceIsPress = false;
  • stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
  • stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
  • addEventListener(Event.ENTER_FRAME, doEveryFrame);
  • }
  • //fonction qui gére l'ajout d'element dans le taquin
  • function addSquareToStage ():void
  • {
  • dest = itemMoveAviability("line",true,0,0);
  • if (dest != -1)
  • {
  • myItem = RandomItemList[nbItemOnScreen];
  • myItem.x = caseWidth + xGridOrigin;
  • myItem.y = yGridOrigin;
  • zone.addChild(myItem);
  • isMoving = true;
  • myItem.moveMeTo("x",xGridOrigin+(caseWidth*dest),15);
  • myItem.addEventListener(item.FINISH,finishMove);
  • zone.swapChildren(myCurseur,myItem);
  • nbItemOnScreen++;
  • }
  • }
  • // fonction de fin de déplacement
  • function finishMove (event:Event)
  • {
  • isMoving = false;
  • var itemLine:int =(event.target.y-yGridOrigin)/caseHeight;
  • var itemRow:int = (event.target.x-xGridOrigin)/caseWidth;
  • grille.tab[itemLine][itemRow].used = true;
  • grille.tab[itemLine][itemRow].content = event.target;
  • //si puzzle finit (VICTOIRE)
  • if (isPuzzleComplete())
  • {
  • canalmusique.stop();
  • removeEventListener(Event.ENTER_FRAME, doEveryFrame);
  • stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
  • stage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
  • img = new Bitmap (monImage);
  • img.x = 65;
  • img.y = 157;
  • img.alpha = 0;
  • img.name = "img";
  • addChild(img);
  • addEventListener(Event.ENTER_FRAME, imgAff);
  • }
  • }
  • //fonction qui fait apparaitre l'image à la fin du puzzle
  • function imgAff (event:Event):void
  • {
  • if (img.alpha < 1)
  • {
  • img.alpha += 0.05;
  • zone.alpha -= 0.05;
  • }
  • else
  • {
  • stage.addEventListener(KeyboardEvent.KEY_DOWN, finishKey);
  • removeChild(zone);
  • indication.visible = true;
  • score = ((nbLife-1+menu.time_barre.barre.scaleX)*2000);
  • if (mySo.data["value"] != null)
  • {
  • if (score > mySo.data["value"])
  • {
  • mySo.data["value"] = score;
  • }
  • }
  • else
  • {
  • mySo.data["value"] = score;
  • }
  • removeEventListener(Event.ENTER_FRAME, imgAff);
  • }
  • }
  • //handler sur les evenements clavier aprés réussite
  • function finishKey(event:KeyboardEvent):void
  • {
  • if (event.keyCode == 32)
  • {
  • stage.removeEventListener(KeyboardEvent.KEY_DOWN, finishKey);
  • gotoAndStop("win");
  • }
  • }
  • //fonction qui calcule la destination de la piéce renvoit -1 si impossible
  • function itemMoveAviability(prop:String,positif:Boolean,propInd,itemPos):int
  • {
  • var posTo:int = -1;
  • var j:int;
  • if (prop == "line")
  • {
  • //vers la droite
  • if (positif)
  • {
  • for (j=itemPos+1;j<maxRow;j++)
  • {
  • if (!grille.tab[propInd][j].used)
  • {
  • posTo = j;
  • }
  • else
  • {
  • break;
  • }
  • }
  • return posTo;
  • }
  • //vers la gauche
  • else
  • {
  • for (j=itemPos-1;j>=0;j--)
  • {
  • if (!grille.tab[propInd][j].used)
  • {
  • posTo = j;
  • }
  • else
  • {
  • break;
  • }
  • }
  • return posTo;
  • }
  • }
  • else if (prop == "row")
  • {
  • //vers le bas
  • if (positif)
  • {
  • for (j=itemPos+1;j<maxLine;j++)
  • {
  • if (!grille.tab[j][propInd].used)
  • {
  • posTo = j;
  • }
  • else
  • {
  • break;
  • }
  • }
  • return posTo;
  • }
  • //vers le haut
  • else
  • {
  • for (j=itemPos-1;j>=0;j--)
  • {
  • if (!grille.tab[j][propInd].used)
  • {
  • posTo = j;
  • }
  • else
  • {
  • break;
  • }
  • }
  • return posTo;
  • }
  • }
  • //propriété non traité
  • else
  • {
  • return posTo;
  • }
  • }
  • //fonction qui test si l'image est compléte
  • function isPuzzleComplete():Boolean
  • {
  • var isComp:Boolean = false;
  • for each ( var ligne:Array in grille.tab )
  • {
  • for each (var element:gridCase in ligne)
  • {
  • if(element.content != null)
  • {
  • if (element.target == element.content.name)
  • {
  • isComp = true;
  • }
  • else if (element.target.indexOf("none")==-1 && element.target != element.content.name)
  • {
  • isComp = false;
  • return isComp;
  • }
  • }
  • else if (element.content == null && element.target.indexOf("none")==-1)
  • {
  • isComp = false;
  • return isComp;
  • }
  • }
  • }
  • return isComp;
  • }
/************************
IMPORTS
************************/
import dimArray;
import item;
import flash.net.SharedObject;
stop();

/************************
INITS
************************/
indication.visible = false;
//script principal d'éxécution
var grille:dimArray = new dimArray (5,5);
//nombre d'image 
var nbImage:int = grille.length - grille.colonne;
//création d'un objet item
var myItem:item;
//variable utile pour le menu
var myItemPreview:Sprite = new Sprite();
var score:int = 0;
var nbLife:int = 3;
var timer:int = 90000;
var lifeStartTime:int;
var lifeTimeTo:int;
var interval:int = 1000;
var prevtime:int;
//var de controle d'animation
var isMoving:Boolean = false;
//tableau d'item contenant les images
var itemList:Array = new Array ();
//dimension d'une case
var caseHeight:Number = 100;
var caseWidth:Number = 100;
//variable de limite
var maxLine:int = grille.ligne;
var maxRow:int = grille.colonne;
//point de départ de la découpe
var ptX:Number = 0;
var ptY:Number = 0;
//variable de parcours
var line:int = 1;
var row:int = 0;
//point d'origine de la grille
var xGridOrigin:Number = 64;
var yGridOrigin:Number = 56;
//point maximun de la grille
var xGridMax:Number = xGridOrigin + (maxLine-1)*caseWidth;
var yGridMax:Number = yGridOrigin + (maxRow-1)*caseHeight;
//position du curseur dans le tableau
var curseurLine:int = 0;
var curseurRow:int = 0;
//variable de destination de l'item
var dest:int = -1;
//variable pour l'éxectution (doEveryFrame)
var curLine:int;
var curRow:int;
var mypreview:DisplayObject;
var img:Bitmap;
//récupération de l'image dans la bibliothéque en fonction du niveaux
var monImage:*;
// gestion du son
var mus:musique = new musique();
var be:beep = new beep();
//création d'un sharedObject pour le highscore
var mySo:SharedObject;
mySo = SharedObject.getLocal("highScore");
if(mySo.size == 0)
{
	mySo.data.now = new Date().time;
}
switch (level)
{
	case 1 : 
	monImage = new level1(0,0);
	break;
	case 2 : 
	monImage = new level2(0,0);
	break;
	default:
	break;
}
// creation des éléments du jeux
for (var i:int = 0;i<nbImage;i++)
{
	myItem = new item ("image"+i);
	myItemPreview = new Sprite();
	//creation d'un bitmapData
	var myBmpData:BitmapData = new BitmapData(caseWidth, caseHeight , true, 0x0000CC44);
	//création des objet pour la découpe d'image
	var myRect:Rectangle = new Rectangle(ptX, ptY, caseWidth,caseHeight );
	var myPt:Point = new Point(0, 0);
	//découpe de l'image
	myBmpData.copyPixels(monImage, myRect, myPt);
	//creation d&#8217;une enveloppe Bitmap pour le zone de jeu
	var myBmp:Bitmap = new Bitmap (myBmpData);
	//creation d&#8217;une enveloppe Bitmap pour la preview
	var myBmp2:Bitmap = new Bitmap (myBmpData);
	// ajout à l'affichage
	myItem.addChild (myBmp);
	myItemPreview.addChild(myBmp2);
	//chargement du reflet
	var myReflet:reflet = new reflet ();
	//myReflet.cacheAsBitmap();
	myItem.addChild (myReflet);
	itemList.push(myItem);
	//gestion de la zone "menu"
	//ajout de l'image de preview
	myItemPreview.scaleX *= 0.3;
	myItemPreview.scaleY *= 0.3;
	myItemPreview.x = 1+ptX*0.3;
	myItemPreview.y = 1+ptY*0.3;
	myItemPreview.name = myItem.name;
	menu.preview.addChild (myItemPreview);
	//création de la case correspondante
	var caseIn:gridCase = new gridCase(ptX+xGridOrigin,ptY+yGridOrigin+caseHeight,"image"+i);
	grille.addToTab(line,row,caseIn);
	if (ptX == 400)
	{
		ptY += caseHeight;
		row = 0;
		ptX = 0;
		line += 1;
	}
	else
	{
		ptX += caseWidth;
		row += 1;
	}
}
for (i= 0;i < nbLife ; i++)
{
	var iconLife:curseur = new curseur();
	iconLife.x = 0 + i*30;
	iconLife.y = 0;
	iconLife.scaleX = 0.2;
	iconLife.scaleY = 0.2;
	iconLife.name = "life"+i;
	menu.life_count.addChild (iconLife);
}

line = 0;
row = 0;
for (i=0;i<maxRow;i++)
{
	caseIn = new gridCase((i*caseWidth)+xGridOrigin,yGridOrigin,"none"+i);
	grille.addToTab(line,row,caseIn);
	row++;
}
grille.tab[0][0].used = true;
//random sur le tableaux des boites 
var RandomItemList:Array = new Array();
var n:int = itemList.length;
for (i=0;i<n;i++)
{      
	var ind: int  = Math.floor(Math.random() * itemList.length);
	RandomItemList.push(itemList[ind]);
	itemList.splice(ind,1);
}
var nbItemInStock:int = RandomItemList.length;
//nombre d'objet déjà sur la grille
var nbItemOnScreen:int = 0;

var myCurseur:curseur = new curseur();
myCurseur.x = xGridOrigin;
myCurseur.y = yGridOrigin;
myCurseur.name = "curseur";
zone.addChild (myCurseur);
//gestion des entrées clavier
var spaceIsPress:Boolean = false;
//ecouteur sur le clavier
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
addEventListener(Event.ENTER_FRAME, doEveryFrame);
lifeStartTime = getTimer();
//lancement du son
var canalmusique:SoundChannel = mus.play(0,100);
var transformationSon1:SoundTransform = canalmusique.soundTransform;
transformationSon1.volume = .4;
canalmusique.soundTransform = transformationSon1;
//fin script principal d'éxécution



//handler sur les evenements clavier
function keyDownHandler(event:KeyboardEvent):void 
{
	if (event.keyCode == 32)
	{
		spaceIsPress = true;
		if (isMoving == false && nbItemOnScreen<nbItemInStock)
		{
			// positionnement de l'image
			if (myCurseur.x == xGridOrigin && myCurseur.y == yGridOrigin)
			{
				addSquareToStage();
			}
		}
	}
}
function keyUpHandler(event:KeyboardEvent):void 
{
	//espace
	if (event.keyCode == 32)
	{
		spaceIsPress = false;
	}
	//envoyer vers le gauche
	else if (event.keyCode == 37)
	{
		if (spaceIsPress && isMoving == false)
		{
			curseurLine = (myCurseur.y-yGridOrigin)/caseHeight;
			curseurRow = (myCurseur.x-xGridOrigin)/caseWidth;
			myItem = grille.tab[curseurLine][curseurRow].content;
			if (myItem != null)
			{
				dest = itemMoveAviability("line",false,curseurLine,curseurRow);
				if (dest != -1)
				{
					isMoving = true;
					myItem.moveMeTo("x",xGridOrigin+(caseWidth*dest),15);
					myItem.addEventListener(item.FINISH,finishMove);
					grille.tab[curseurLine][curseurRow].content = null;
					grille.tab[curseurLine][curseurRow].used = false;
				}
			}
		}
		else if (myCurseur.x > xGridOrigin)
		{
			myCurseur.x -= caseHeight;
		}
	}
	//envoyer vers le haut
	else if (event.keyCode == 38)
	{
		if (spaceIsPress && isMoving == false)
		{
			curseurLine = (myCurseur.y-yGridOrigin)/caseHeight;
			curseurRow = (myCurseur.x-xGridOrigin)/caseWidth;
			myItem = grille.tab[curseurLine][curseurRow].content;
			if (myItem != null)
			{
				dest = itemMoveAviability("row",false,curseurRow,curseurLine);
				if (dest != -1)
				{
					isMoving = true;
					myItem.moveMeTo("y",yGridOrigin+(caseHeight*dest),15);
					myItem.addEventListener(item.FINISH,finishMove);
					grille.tab[curseurLine][curseurRow].content = null;
					grille.tab[curseurLine][curseurRow].used = false;
				}
			}
		}
		else if (myCurseur.y > yGridOrigin)
		{
			myCurseur.y -= caseHeight;
		}
	}
	//envoyer vers le droite
	else if (event.keyCode == 39)
	{
		if (spaceIsPress && isMoving == false)
		{
			curseurLine = (myCurseur.y-yGridOrigin)/caseHeight;
			curseurRow = (myCurseur.x-xGridOrigin)/caseWidth;
			myItem = grille.tab[curseurLine][curseurRow].content;
			if (myItem != null)
			{
				dest = itemMoveAviability("line",true,curseurLine,curseurRow);
				if (dest != -1)
				{
					isMoving = true;
					myItem.moveMeTo("x",xGridOrigin+(caseWidth*dest),15);
					myItem.addEventListener(item.FINISH,finishMove);
					grille.tab[curseurLine][curseurRow].content = null;
					grille.tab[curseurLine][curseurRow].used = false;
				}
			}
		}
		else if (myCurseur.x < xGridMax)
		{
			myCurseur.x += caseHeight;
		}
	}
	//envoyer vers le bas
	else if (event.keyCode == 40)
	{
		if (spaceIsPress && isMoving == false)
		{
			curseurLine = (myCurseur.y-yGridOrigin)/caseHeight;
			curseurRow = (myCurseur.x-xGridOrigin)/caseWidth;
			myItem = grille.tab[curseurLine][curseurRow].content;
			if (myItem != null)
			{
				dest = itemMoveAviability("row",true,curseurRow,curseurLine);
				if (dest != -1)
				{
					isMoving = true;
					myItem.moveMeTo("y",yGridOrigin+(caseHeight*dest),15);
					myItem.addEventListener(item.FINISH,finishMove);
					grille.tab[curseurLine][curseurRow].content = null;
					grille.tab[curseurLine][curseurRow].used = false;
				}
			}
		}
		else if (myCurseur.y < yGridMax)
		{
			myCurseur.y += caseHeight;
		}
	}
}

function doEveryFrame(event:Event):void
{
	//gestion du timer
	lifeTimeTo = timer - (getTimer() - lifeStartTime);
	menu.time_barre.barre.scaleX = lifeTimeTo/timer;
	if (lifeTimeTo <=0)
	{
		removeEventListener(Event.ENTER_FRAME, doEveryFrame);
		stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
		stage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
		menu.time_barre.barre.scaleX = 0;
		nbLife --;
		if (nbLife == 0)
		{
			canalmusique.stop();
			zone.removeChild(myCurseur);
			gotoAndStop("lose");
		}
		else
		{
			newLife();
		}
	}
	else if (lifeTimeTo <=10000)
	{
		if (prevtime != 0)
		{
			interval = prevtime - lifeTimeTo;
		}
		var colorInfo:ColorTransform = menu.time_barre.transform.colorTransform;
		colorInfo.color = 0x993300;
    	menu.time_barre.transform.colorTransform = colorInfo;
		if (interval >= 1000)
		{
			prevtime = lifeTimeTo;
			var canalbeep:SoundChannel =  be.play();
			var transformationSon2:SoundTransform = canalbeep.soundTransform;
			transformationSon2.volume = .5;
			canalbeep.soundTransform = transformationSon2;
			interval = 0;
		}
	}
	//gestion de la preview
	curLine = (myCurseur.y-yGridOrigin)/caseHeight;
	curRow = (myCurseur.x-xGridOrigin)/caseWidth;
	if (myItem != null)
	{
		mypreview = menu.preview.getChildByName(myItem.name);
		mypreview.visible = true;
	}
	myItem = grille.tab[curLine][curRow].content;
	if (myItem != null)
	{
		mypreview = menu.preview.getChildByName(myItem.name);
		mypreview.visible = false;
	}
}
//fonction qui gére le passage entre deux vie
function newLife () :void
{
		menu.life_count.removeChild (menu.life_count.getChildByName("life"+nbLife));
		var MyDeathCurseur:curseurDeath= new curseurDeath();
		MyDeathCurseur.stop();
		MyDeathCurseur.x = myCurseur.x;
		MyDeathCurseur.y = myCurseur.y;
		zone.addChild (MyDeathCurseur);
		zone.removeChild(myCurseur);
		MyDeathCurseur.play();
		MyDeathCurseur.addEventListener("finish",gotoNew);
}
//fonction qui ajoute le curseur et décompte la vie
function gotoNew (e:Event):void
{
	myCurseur = new curseur();
	myCurseur.x = xGridOrigin;
	myCurseur.y = yGridOrigin;
	myCurseur.name = "curseur";
	zone.addChild (myCurseur);
	lifeStartTime = getTimer();
	menu.time_barre.barre.scaleX = 1;
	interval = 1000;
	prevtime = 0;
	var colorInfo:ColorTransform = menu.time_barre.transform.colorTransform;
	colorInfo.color = 0xFFFFFF;
    menu.time_barre.transform.colorTransform = colorInfo;
	zone.removeChild(DisplayObject(e.target));
	isMoving = false;
	spaceIsPress = false;
	stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
	stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
	addEventListener(Event.ENTER_FRAME, doEveryFrame);
}
//fonction qui gére l'ajout d'element dans le taquin
function addSquareToStage ():void
{
	dest = itemMoveAviability("line",true,0,0);
	if (dest != -1)
	{
		myItem = RandomItemList[nbItemOnScreen];
		myItem.x = caseWidth + xGridOrigin;
		myItem.y = yGridOrigin;
		zone.addChild(myItem);
		isMoving = true;
		myItem.moveMeTo("x",xGridOrigin+(caseWidth*dest),15);
		myItem.addEventListener(item.FINISH,finishMove);
		zone.swapChildren(myCurseur,myItem);
		nbItemOnScreen++;
	}
}
// fonction de fin de déplacement
function finishMove (event:Event)
{
	isMoving = false;
	var itemLine:int =(event.target.y-yGridOrigin)/caseHeight;
	var itemRow:int = (event.target.x-xGridOrigin)/caseWidth;
	grille.tab[itemLine][itemRow].used = true;
	grille.tab[itemLine][itemRow].content = event.target;
	//si puzzle finit (VICTOIRE)
	if (isPuzzleComplete())
	{
		canalmusique.stop();
		removeEventListener(Event.ENTER_FRAME, doEveryFrame);
		stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
		stage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
		img = new Bitmap (monImage);
		img.x = 65;
		img.y = 157;
		img.alpha = 0;
		img.name = "img";
		addChild(img);
		addEventListener(Event.ENTER_FRAME, imgAff);
	}
}
//fonction qui fait apparaitre l'image à la fin du puzzle
function imgAff (event:Event):void
{
	if (img.alpha < 1)
	{
		img.alpha += 0.05;
		zone.alpha -= 0.05;
	}
	else
	{
		
		stage.addEventListener(KeyboardEvent.KEY_DOWN, finishKey);
		removeChild(zone);
		indication.visible = true;
		score = ((nbLife-1+menu.time_barre.barre.scaleX)*2000);
		if (mySo.data["value"] != null)
		{
			if (score > mySo.data["value"])
			{
				mySo.data["value"] = score;
			}
		}
		else
		{
			mySo.data["value"] = score;
		}
		removeEventListener(Event.ENTER_FRAME, imgAff);
	}
}
//handler sur les evenements clavier aprés réussite
function finishKey(event:KeyboardEvent):void 
{
	if (event.keyCode == 32)
	{
		stage.removeEventListener(KeyboardEvent.KEY_DOWN, finishKey);
		gotoAndStop("win");
	}
}
//fonction qui calcule la destination de la piéce renvoit -1 si impossible
function itemMoveAviability(prop:String,positif:Boolean,propInd,itemPos):int
{
	var posTo:int = -1;
	var j:int;
	if (prop == "line")
	{
		//vers la droite
		if (positif)
		{
			for (j=itemPos+1;j<maxRow;j++)
			{
				if (!grille.tab[propInd][j].used)
				{
					posTo = j;
				}
				else
				{
					break;
				}
			}
			return posTo;
		}
		//vers la gauche
		else
		{
			for (j=itemPos-1;j>=0;j--)
			{
				if (!grille.tab[propInd][j].used)
				{
					posTo = j;
				}
				else
				{
					break;
				}
			}
			return posTo;
		}
	}
	else if (prop == "row")
	{
		//vers le bas
		if (positif)
		{
			for (j=itemPos+1;j<maxLine;j++)
			{
				if (!grille.tab[j][propInd].used)
				{
					posTo = j;
				}
				else
				{
					break;
				}
			}
			return posTo;
		}
		//vers le haut
		else
		{
			for (j=itemPos-1;j>=0;j--)
			{
				if (!grille.tab[j][propInd].used)
				{
					posTo = j;
				}
				else
				{
					break;
				}
			}
			return posTo;
		}
	}
	//propriété non traité
	else
	{
		return posTo;
	}
}
//fonction qui test si l'image est compléte 
function isPuzzleComplete():Boolean
{
	var isComp:Boolean = false; 
	for each ( var ligne:Array in grille.tab )
	{
		for each (var element:gridCase in ligne)
		{
			if(element.content != null)
			{
				if (element.target == element.content.name)
				{
					isComp = true;
				}
				else if (element.target.indexOf("none")==-1 && element.target != element.content.name)
				{ 
					isComp = false;
					return isComp;
				}
			}
			else if (element.content == null && element.target.indexOf("none")==-1)
			{
				isComp = false;
				return isComp;
			}
		}
	}
	return isComp;
}


 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


 Sources de la même categorie

Source avec Zip Source avec une capture AS3 - JEU DU TAQUIN par pegase31
Source avec Zip CHAMP DE VISION AVEC OBSTACLES - AS3 par t_naulet
Source avec Zip UN JEUX DE VOITURE MULTIJOUEUR OU VOUS CREE VOTRE TERRAIN par hakim255
Source avec Zip JEUX DE TIRE VU DE HAUT par hakim255
Source avec Zip Source avec une capture ERYSOKOBAN V1.02 CS4 AS3 par VBtoTRASH

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture AS3 - JEU DU TAQUIN par pegase31
Source avec Zip Source avec une capture JEU DÉMINEUR par sgainowai
Source avec Zip Source avec une capture CONQUEROR OF SPACE par hansolo57
Source avec Zip Source avec une capture STAR-DECODER : TROUVEZ LE CODE ! par Girou
Source avec Zip Source avec une capture LABY BALL : SEREZ VOUS ASSEZ ADROIT POUR TRAVERSER LE LABYRI... par daddy11world

Commentaires et avis

Commentaire de daddy11world le 31/08/2008 18:31:50

C'est joli, et difficile je trouve

Commentaire de wetboy le 01/09/2008 00:15:27

merci, en ce qui concerne la difficulté c'est aussi ça l'intérêt d'un jeu de réflexion.

Commentaire de vivi13 le 04/09/2009 14:27:25

Très joli effectivement !
Dommage qu'on ne puisse pas choisir l'image (pui je sais je suis exigeante) :)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

un puzzle en Flash [ par dufour137 ] Bonjour tout le monde, j'ai un problème urgent: j'aimerais faire un puzzle en flash comme dans l'exemble livré avec le logiciel, mais je ne vais quand Générateur de puzzle [ par mailys6 ] Bonjour &#224; tous,J'aimerai faire un g&#233;n&#233;rateur de puzzle, &#224; savoir que l'utilisateur choisirai une photo au format 400*600 et choisi effet puzzle avec slide... [ par sharpeipanam ] Bonjour &#224; tousJe souhaiterais faire pour une repr&#233;sentation purement graphique un effet puzzle comme les petits jeux bonus de notre enfance& problème avec un scrollpane intégrant un fichier swf [ par Waldo2188 ] Bonjour, Je suis entrain de créer un mini site. Dans celui-ci je propose un petit jeu (un puzzle). Pour l'intégrer au mini site qui est en flas j'ut Compteur pour jeu [ par manuken ] Bonjour,Je propose un jeu de puzzle à mes clients.Je voudrais placer un compteur en minutes et secondes qui demmarre au debut de l'animationUne fois l puzzle dans flash [ par sonik2000 ] Bonjour a tous,Je travaille sur un projet de puzzle mais je rencontre des difficultés.Il m'est possible de réaliser l'effet aimant mais une fois la pi Jeu de taquin [ par bobix35 ] Bonjour;Je cherche une source sur la base du jeu de taquin. C'est un puzzle constitué de cases que l'on déplace par translation.J'ai vu sur le forum q création d'un puzzle [ par Miss1 ] Bonjour à tous je voudrais crée un puzzle en flash et je souhaiterais savoir comment faire. Mi Flash CS3: Puzzle avec if [ par Quarions ] Bonjour, j'ai construit trois puzzles, mais maintenant je dois mettre du code pour que l'animation continue une fois le puzzle terminer, cependant, je


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 2,746 sec (4)

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