Jeu arcade triez les boules!

Description

Petit Jeu Flash réalisé en collaboration avec un ami auteur d'un Blog BD.
L'univers graphique et les personnages sont donc tirés de ses Bandes-Dessinées.
(Pour plus d'infos: http://madet.over-blog.net).

C'est un jeu de vitesse ou il faut trier les boules qui tombent le plus vite possible.
Plus elles sont données vite au bon personnage plus elles valent de points.
Il y a 10 niveaux et des boules Bonus.

Source / Exemple :


stop();
import mx.transitions.Tween;
import mx.transitions.easing.*;

// ---------------------- Initialisation des variables globales ------------------------------------- 
_global.sc = 0;										//Le score
_global.vitesse = 4;								//Vitesse de descente de la boule
_global.débit = 1000;								//Débit (écart en millisecondes entre chaque création de boules)
_global.pdv = 5;									//Points de vie
_global.frei = false;								//Bonus frei actif ou non
_global.cliqué = false;								//Si la boule est cliquée ou non
_global.numboule = 0;								//numero d'occurence de la boule qui s'incrémente à chaque création de boule
_global.nivo = 1;									// Level
_global.jeuvalide = false;							//Booléen qui autorise ou non la création de boules
_global.effaceboul = false;							//booléen qui fait s'effacer toutes les boules existantes
_global.Lastvalboul = 0;							//Booléen qui contient la valeur de la dernière boule attrapée						
_global.numsc = 3000;								//Niveau de calque de profondeur pour les miniscores							
_global.bmaitresse = false;							//Booléen qui vérifie l'activation du bonus maitresse
_global.decompte = 10;								//nb de boules triées durant le bonus
_global.bJF = false;								//Booléen qui vérifie l'activation du bonus JF
_global.decompteJF = 10;							//nb de boules triées durant le bonus
_global.bppsg = false;								//Booléen qui vérifie l'activation du bonus papasinge
_global.decompteppsg = 10;							//nb de boules triées durant le bonus
_global.numcalque = 0;								//gère l'incrémentation des calques pour tous les objets crées
_global.compteboule = 0;							//variables contenant le nb de boules triées ou sorties
_global.Malus = false;								//Booléen qui vérifie l'activation du Malus

//-----------LOADING SOUNDS AND MUSIC!---------------//
zik = new Sound();
zik.attachSound("music.wav",1);
zik.start();
zik.onSoundComplete = function(){zik.start();}
sonagrip = new Sound();
sonagrip.attachSound("agrip.wav",2);
sonok = new Sound();
sonok.attachSound("bouleOK.wav",3);
sonerreur = new Sound();
sonerreur.attachSound("erreur.wav",4);
sonkiss = new Sound();
sonkiss.attachSound("kiss.wav",5);
sonppsg = new Sound();
sonppsg.attachSound("ppsg.wav",6);
sonMotus = new Sound();
sonMotus.attachSound("Motus.wav",7);
sonJF = new Sound();
sonJF.attachSound("helicojf.wav",8);

//------------ Arrivee des éléments  -----------------------//
_root.screenlevel._alpha = 0;         // L'écran de passage de niveau est rendu invisible
ecran2debu.enabled = false;			// On ne peut ni clicquer ni selectionner l'écran de début	
arriveeSinge = new Tween(anisgsg , "_y", Back.easeOut, 800, 612, 30 , false);
arriveePtigosse = new Tween(anipg , "_y", Back.easeOut, 800, 612, 40, false);
arriveescore = new Tween(Sscore , "_x", Elastic.easeOut, 400, 341, 110 , false);
arriveevies = new Tween(viesinge , "_x", Elastic.easeOut, -100, 23, 110 , false);
arriveeécrandébu = new Tween(ecran2debu , "_y", Back.easeOut, -800, 180, 100 , false);
arriveeécrandébu.onMotionFinished = function() {	
arriveeécrandébu = new Tween(ecran2debu , "_y", Back.easeOut, 180, -800, 60 , false);
_global.jeuvalide = true;		// Une fois l'écran de présentation reparti on peut jouer
génèreboule();                 //  on commence a générer des boules
}

// --------------------- Chargement et mise à jour de la position de l'image du curseur -------------
Mouse.hide();				 // on cache le curseur actuel de la souris
suiveur=function()	{
	if (_global.bmaitresse) {	_root.attachMovie("Skissmouth","cursor1", 19000)
		} else { _root.attachMovie("cursor","cursor1", 19000) }
cursor1._x=_root._xmouse; // l'image du curseur suit la position en abscisses de la souris
cursor1._y=_root._ymouse;// l'image du curseur suit la position en ordonnée de la souris
}
setInterval (suiveur,20);		// Toutes les 20 millisecondes							

//-------------------- fonction globale qui génère un nombre entier au hasard --------------------------
_global.nbr = function (min:Number, max:Number):Number {					
	var randomNum:Number = Math.floor(Math.random()*(max-min+1))+min;		
	return randomNum;														
}

//--------------------- fonction qui crée les boules --------------------------------------------------
function boule() {
	if (_global.jeuvalide) {														//Le programme continue si l'application est toujours utilisable

		var n:Number = nbr(1, 80);											// On crée un nombre n au hasard compris entre 1 et 500

		_root.attachMovie("rondrouge","rond"+ _global.compteboule, 2000-_global.numcalque);	// on duplique le Symbol rondrouge
		var newron = _root["rond"+ _global.compteboule];										// chaque instance à son propre nom déterminé par le compteur de boules
		newron._x = 160 + 3*n ;		// tombe depuis une abscisse aléatoire										
		_global.numcalque += 1;
		_global.compteboule += 1;
	}
}
		
//------------------------ Manipulation des infos concernant vie et score ------------------
function majinfo() {
	Labelsc.text = (_global.sc);						// fonction qui mets à jour le score le nb de vie
	
	if (pdv>0) {
 		Labelpdv.text = (_global.pdv);
	} else {
		_global.jeuvalide = false;
		_global.effaceboul = true;
		clearInterval(Interboul);
		zik.stop();
		_root.gotoAndStop("GameOver");
	}
	
	if (_global.compteboule >= 4) {	clearInterval(Interboul);}
	if (_global.numboule >= 4) {
		_global.jeuvalide = false;
		_global.effaceboul = true;
		clearInterval(Interboul);
			if	(_global.nivo == 10) {
				zik.stop();
				_global.bmaitresse = false;
				_global.decompte = 10;
				_global.bJF = false;
				_global.decompteJF = 10;
				_global.bppsg = false;
				_global.decompteppsg = 10;
				_global.compteboule = 0;
				_global.Malus = false;
				_root.gotoAndStop("felicitations");
				}
		numnivo.text = (_global.nivo + 1);
		_global.numboule = 0;
		_global.numcalque = 0;
		_global.compteboule = 0;
		numnivo._x = 262;
		numnivo._y = 420;
		screenlevel._alpha = 100;
		screenlevel._x = 25;
		screenlevel.enabled = false;	
		arriveenumnivo = new Tween(numnivo , "_y", Back.easeOut, 900, 420, 30 , false);
		arriveeécrannivo = new Tween(screenlevel , "_y", Back.easeOut, -1000, 80, 30 , false);
		arriveeécrannivo.onMotionFinished = function() {			

			screenlevel.enabled = true;//------ Ecran de passage de niveau ----------------
			screenlevel.onRelease = function() {	
				_global.jeuvalide = true;
				_global.effaceboul = false;
				numnivo._y = 920;
				_global.nivo += 1;
				
				if (_global.nivo == 2) {_global.vitesse = 1.1; _global.débit = 350; }
				else if (_global.nivo == 3) {_global.vitesse = 7; _global.débit = 800;} 
				else if (_global.nivo == 4) {_global.vitesse = 16; _global.débit = 1300;}
				else if (_global.nivo == 5) {_global.vitesse = 2; _global.débit = 200;}
				else if (_global.nivo == 6) {_global.vitesse = 7; _global.débit = 600;}
				else if	(_global.nivo == 7) {_global.vitesse = 8; _global.débit = 500;}
				else if	(_global.nivo == 8) {_global.vitesse = 2; _global.débit = 200;}
				else if	(_global.nivo == 9) {_global.vitesse = 20; _global.débit = 900;}
				else if	(_global.nivo == 10) {_global.vitesse = 4; _global.débit = 100;}

				arriveeécrannivo = new Tween(screenlevel , "_y", Back.easeOut, 80, -1500, 30 , false);
				screenlevel._alpha = 0;
				screenlevel.enabled = false;
				génèreboule();
				}			
			}		
		}
	}		

//--------------------------- fonction qui lance la génération de boules ---------------
function génèreboule() {
	Interboul = setInterval(boule,_global.débit);			// A un intervalle déterminé dans la variable  _global.débit
};
//--------------------------- fonction qui lance la gestion des scores et vie ---------------
lamaj = function () {								
	Intermaj = setInterval(majinfo,300);					// mis à jour toutes les 300 millisecondes
};
//----------------------------- Appel des fonctions ------------------------------------
lamaj();							// On déclenche la fonction de mise à jour des info

Conclusion :


Il y a encore plein d'améliorations possibles comme par exemple le fait que les bonus durent pour un temps donné, et non pour un nombre de boules déterminés. Je changerai certainement ça prochainement.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.