stop();
// variables définissant le joueur :
// position :
_root.win._visible = false
px = 0;
pz = -30;
// vitesse :
iz = 0;
//Variables générales
// chronométre :
time = 0;
// quatres tableaux qui définissent les obstacles
// Les deux valeur à l'initialisation sont celles des deux piques du départ
// position :
var ox:Array = new Array(-10, 10);
var oz:Array = new Array(0, 1);
// taille :
var ow:Array = new Array(1, 1);
var oh:Array = new Array(5, 5);
// On créé l'ensemble des obstacles de maniére plus ou moins aléatoire :
// vvv---- c'est le nombre d'obstacles
for (a=2; a<100; a++) {
// position
ox[a] = Math.random()*25-12;
oz[a] = oz[a-1]+10/Math.sqrt(a);
// taille
ow[a] = Math.random()*2+1;
oh[a] = 0.5;
}
// On vérifi qu'il n'y a pas une ligne droite dégagée sur le trajet
// Pour cela on compte le nombre d'objet obstruant chaque ligne droite :
// Pour chaque ligne droite ...
for (i=-10; i<10; i++) {
// init le compteur d'obstacles en travers du chemin
ok = 0;
// ... pour chaque objet
for (a=0; a<ox.length; a++) {
// vérifier s'il est en travers du chemin
if (Math.abs(i-ox[a])<ow[a]) {
// si c'est le cas, il y a un obstacle en travers du chemin de plus
ok++;
}
}
// il faut au moins 4 obstacles par ligne droite.
if (ok<4) {
// sinon on regénére les obstacles en replayant l'animation.
_root.gotoAndPlay(4);
}
}
// la boucle principale
_root.onEnterFrame = function() {
// Afficher ou non le "you win" en fonction de la position du joueur et de la position du dérnier obstacle.
if (pz>oz[oz.length-1]) {
_root.win._visible = true;
} else {
_root.win._visible = false;
}
// gérer le chrono en fonction de la position du joueur
if (pz<oz[oz.length-1]) {
time++;
}
if (pz<0) {
time = 0;
}
// appliquer la vitesse à la position
pz += iz/10;
// Frotement qui réduisent la vitesse.
iz *= 0.95;
// remplacer le support d'affichage des obstacles <=> clear screen
_root.createEmptyMovieClip("truc", 1);
// gestion des objets un par un
for (a=0; a<ox.length; a++) {
var ref:MovieClip=null
// si l'obstacle est devant le joueur :
if (pz<oz[a]) {
// l'afficher
ref = _root.truc.attachMovie("mur", a, Math.floor(-oz[a]));
// l'afficher transparent si il est trop près du joueur
if (oz[a]-pz<3) {
ref._alpha = (oz[a]-pz)*33;
}
// Affichage "3D" : positionner et redimensionner son image sur l'écrant en fonction de ses positions théoriques
ref._x = 200+(ox[a]-px)/(oz[a]-pz)*100;
ref._y = 200-(oz[a]-pz)*2;
ref._height = oh[a]/(oz[a]-pz)*100;
ref._width = ow[a]/(oz[a]-pz)*100;
ref.stop()
}
// collision avec l'objet -> game over
if (pz<oz[a] && pz>oz[a]-iz*0.2 && Math.abs(px-ox[a])<ow[a]/3) {
play();
if(ref!=null){
ref.play()
}
}
}
// Les touches, tourner
if (Key.isDown(Key.LEFT)) {
px--;
if (px<-10) {
px = -10;
}
}
if (Key.isDown(Key.RIGHT)) {
px++;
if (px>10) {
px = 10;
}
}
// Les touches : accélérer
if (Key.isDown(Key.UP)) {
iz++;
}
if (Key.isDown(Key.DOWN)) {
iz--;
}
};
// Lorsqu'on clique sur le "you win" on revient au départ
_root.win.onPress = function() {
_root.gotoAndPlay(5);
};