Accueil > > > SPLIT FROG
SPLIT FROG
Information sur la source
Description
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’une enveloppe Bitmap pour le zone de jeu
- var myBmp:Bitmap = new Bitmap (myBmpData);
- //creation d’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’une enveloppe Bitmap pour le zone de jeu
var myBmp:Bitmap = new Bitmap (myBmpData);
//creation d’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;
}
Sources de la même categorie
Commentaires et avis
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 à tous,J'aimerai faire un générateur de puzzle, à savoir que l'utilisateur choisirai une photo au format 400*600 et choisi
effet puzzle avec slide... [ par sharpeipanam ]
Bonjour à tousJe souhaiterais faire pour une repré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
|
Derniers Blogs
PB LORS DE L'INSTALLATION SHAREPOINT 2010.PB LORS DE L'INSTALLATION SHAREPOINT 2010. par Patrick Guimonet
Lors de l'installation de SharePoint 2010, j'ai rencontré un problème de plantage à l'étape 5 du configuration Wizard. Ca se termine sur cet écran : Et en analysant le fichier de journalisation, on remarque vers la fin des 15000 et quelques lign...
Cliquez pour lire la suite de l'article par Patrick Guimonet [WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (2/2)[WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (2/2) par JeremyJeanson
Après mon précédent article qui attaque les contraintes par la fasse Nord de l'Everest. passons à la seconde possibilité offerte par WF4 pour valider une activité : la metadata . Je vous en ai déjà toucher un ou deux mots. La metadata dans WF4 est un élém...
Cliquez pour lire la suite de l'article par JeremyJeanson [WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (1/2)[WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (1/2) par JeremyJeanson
De WF3 à WF4 pas mal de choses on été changées pour faciliter la vie des développeurs, mais certain points peuvent sembler obscures. comme les contraintes. Pour vous guider, je me lance dans une série de deux articles. Ils présenterons deux approches poss...
Cliquez pour lire la suite de l'article par JeremyJeanson [ASP.NET] NE PAS SE FAIRE AVOIR PAR IHTTPMODULE ET SA MéTHODE INIT()[ASP.NET] NE PAS SE FAIRE AVOIR PAR IHTTPMODULE ET SA MéTHODE INIT() par tja
Beaucoup de développeurs pensent que lorsqu'on créé et enregistre un IHttpModule, il n'en existe qu'une seule instance et la méthode Init() sera appelée qu'une fois.
C'est faux
Cela peut vraiment créer des bugs subtils dont en ne se rend pas compte ...
Cliquez pour lire la suite de l'article par tja [MSTD10] SHAREPOINT 2010 ET TEAM FOUNDATION SERVER[MSTD10] SHAREPOINT 2010 ET TEAM FOUNDATION SERVER par phil
Un post rapide pour vous informer de la disponibilité de la vidéo de ma présentation sur SharePoint 2010 & Team Foundation Server. http://www.microsoft.com/france/vision/mstechdays10/Webcast.aspx?EID=20215d48-02e3-4d43-8c36-e53505c3b316 Dans la ...
Cliquez pour lire la suite de l'article par phil
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|