Accueil > > > JEU DU VIH EN AS 3
JEU DU VIH EN AS 3
Information sur la source
Description
C'est un petit jeu qui est inspiré du vieu jeu de commète. Sauf que j'ai un peu remplacé tout les élements et rajouté une touche pour le bouclier. normalement dans le vrai jeu ya aussi une touche pour un déplacement aléatiore mais j'ai pas trouvé la solution donc voila.
Source
-
- package {
- import flash.display.*;
- import flash.events.*;
- import flash.text.*;
- import flash.utils.getTimer;
- import flash.utils.Timer;
- import flash.geom.Point;
-
- public class SpaceRocks extends MovieClip {
- static const shipRotationSpeed:Number = .1;
- static const rockSpeedStart:Number = .03;
- static const rockSpeedIncrease:Number = .02;
- static const missileSpeed:Number = .2;
- static const thrustPower:Number = .15;
- static const shipRadius:Number = 20;
- static const startingShips:uint = 3;
-
- // game objects
- private var ship:Ship;
- private var rocks:Array;
- private var missiles:Array;
-
- // animation timer
- private var lastTime:uint;
-
- // touches
- private var rightArrow:Boolean = false;
- private var leftArrow:Boolean = false;
- private var upArrow:Boolean = false;
-
-
- private var shipMoveX:Number;
- private var shipMoveY:Number;
-
- // timers
- private var delayTimer:Timer;
- private var shieldTimer:Timer;
-
- // game mode
- private var gameMode:String;
- private var shieldOn:Boolean;
-
- // vaisseua et armes
- private var shipsLeft:uint;
- private var shieldsLeft:uint;
- private var shipIcons:Array;
- private var shieldIcons:Array;
- private var scoreDisplay:TextField;
-
- // score & niveau
- private var gameScore:Number;
- private var gameLevel:uint;
-
- // sprites
- private var gameObjects:Sprite;
- private var scoreObjects:Sprite;
-
-
- // commencer
- public function startSpaceRocks() {
- // set up sprites
- gameObjects = new Sprite();
- addChild(gameObjects);
- scoreObjects = new Sprite();
- addChild(scoreObjects);
-
- // score a zero
- gameLevel = 1;
- shipsLeft = startingShips;
- gameScore = 0;
- createShipIcons();
- createScoreDisplay();
-
- // listenerss
- addEventListener(Event.ENTER_FRAME,moveGameObjects);
- stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownFunction);
- stage.addEventListener(KeyboardEvent.KEY_UP,keyUpFunction);
-
- // start
- gameMode = "delay";
- shieldOn = false;
- missiles = new Array();
- nextRockWave(null);
- newShip(null);
- }
-
-
- // SCORE OBJECTS
-
- // nombre restant afficheur
- public function createShipIcons() {
- shipIcons = new Array();
- for(var i:uint=0;i<shipsLeft;i++) {
- var newShip:ShipIcon = new ShipIcon();
- newShip.x = 20+i*15;
- newShip.y = 375;
- scoreObjects.addChild(newShip);
- shipIcons.push(newShip);
- }
- }
-
- // nb restant
- public function createShieldIcons() {
- shieldIcons = new Array();
- for(var i:uint=0;i<shieldsLeft;i++) {
- var newShield:ShieldIcon = new ShieldIcon();
- newShield.x = 530-i*15;
- newShield.y = 375;
- scoreObjects.addChild(newShield);
- shieldIcons.push(newShield);
- }
- }
-
- // affichage du score
- public function createScoreDisplay() {
- scoreDisplay = new TextField();
- scoreDisplay.x = 500;
- scoreDisplay.y = 10;
- scoreDisplay.width = 40;
- scoreDisplay.selectable = false;
- var scoreDisplayFormat = new TextFormat();
- scoreDisplayFormat.color = 0xFFFFFF;
- scoreDisplayFormat.font = "Arial";
- scoreDisplayFormat.align = "right";
- scoreDisplay.defaultTextFormat = scoreDisplayFormat;
- scoreObjects.addChild(scoreDisplay);
- updateScore();
- }
-
- // nouveau score a montrer
- public function updateScore() {
- scoreDisplay.text = String(gameScore);
- }
-
- // enlever un icone
- public function removeShipIcon() {
- scoreObjects.removeChild(shipIcons.pop());
- }
-
- // ""
- public function removeShieldIcon() {
- scoreObjects.removeChild(shieldIcons.pop());
- }
-
- // ""
- public function removeAllShipIcons() {
- while (shipIcons.length > 0) {
- removeShipIcon();
- }
- }
-
- // remove the rest of the shield icons
- public function removeAllShieldIcons() {
- while (shieldIcons.length > 0) {
- removeShieldIcon();
- }
- }
-
-
- // Creation du héros et du mouvement
-
- // nouveau vaiiseue
- public function newShip(event:TimerEvent) {
- // if ship exists, remove it
- if (ship != null) {
- gameObjects.removeChild(ship);
- ship = null;
- }
-
- //
- if (shipsLeft < 1) {
- endGame();
- return;
- }
-
- // position
- ship = new Ship();
- ship.gotoAndStop(1);
- ship.x = 275;
- ship.y = 200;
- ship.rotation = -90;
- ship.shield.visible = false;
- gameObjects.addChild(ship);
-
- // propriétés
- shipMoveX = 0.0;
- shipMoveY = 0.0;
- gameMode = "play";
-
- // armes
- shieldsLeft = 3;
- createShieldIcons();
-
- //
- if (shipsLeft != startingShips) {
- startShield(true);
- }
- }
-
- // touches
- public function keyDownFunction(event:KeyboardEvent) {
- if (event.keyCode == 37) {
- leftArrow = true;
- } else if (event.keyCode == 39) {
- rightArrow = true;
- } else if (event.keyCode == 38) {
- upArrow = true;
- // show thruster
- if (gameMode == "play") ship.gotoAndStop(2);
- } else if (event.keyCode == 32) { // space
- newMissile();
- } else if (event.keyCode == 90) { // z
- startShield(false);
- }
- }
-
- //
- public function keyUpFunction(event:KeyboardEvent) {
- if (event.keyCode == 37) {
- leftArrow = false;
- } else if (event.keyCode == 39) {
- rightArrow = false;
- } else if (event.keyCode == 38) {
- upArrow = false;
- // remove thruster
- if (gameMode == "play") ship.gotoAndStop(1);
- }
- }
-
-
- public function moveShip(timeDiff:uint) {
-
- // rotation
- if (leftArrow) {
- ship.rotation -= shipRotationSpeed*timeDiff;
- } else if (rightArrow) {
- ship.rotation += shipRotationSpeed*timeDiff;
- } else if (upArrow) {
- shipMoveX += Math.cos(Math.PI*ship.rotation/180)*thrustPower;
- shipMoveY += Math.sin(Math.PI*ship.rotation/180)*thrustPower;
- }
-
- // move
- ship.x += shipMoveX;
- ship.y += shipMoveY;
-
- // retour au bord
- if ((shipMoveX > 0) && (ship.x > 570)) {
- ship.x -= 590;
- }
- if ((shipMoveX < 0) && (ship.x < -20)) {
- ship.x += 590;
- }
- if ((shipMoveY > 0) && (ship.y > 420)) {
- ship.y -= 440;
- }
- if ((shipMoveY < 0) && (ship.y < -20)) {
- ship.y += 440;
- }
- }
-
- // supp vaisseua
- public function shipHit() {
- gameMode = "delay";
- ship.gotoAndPlay("explode");
- removeAllShieldIcons();
- delayTimer = new Timer(2000,1);
- delayTimer.addEventListener(TimerEvent.TIMER_COMPLETE,newShip);
- delayTimer.start();
- removeShipIcon();
- shipsLeft--;
- }
-
- //
- public function startShield(freeShield:Boolean) {
- if (shieldsLeft < 1) return; // no shields left
- if (shieldOn) return; // shield already on
-
- //
- ship.shield.visible = true;
- shieldTimer = new Timer(3000,1);
- shieldTimer.addEventListener(TimerEvent.TIMER_COMPLETE,endShield);
- shieldTimer.start();
-
- //
- if (!freeShield) {
- removeShieldIcon();
- shieldsLeft--;
- }
- shieldOn = true;
- }
-
- // finir les missiles
- public function endShield(event:TimerEvent) {
- ship.shield.visible = false;
- shieldOn = false;
- }
-
- // VihROCKS
-
- //Nouvel cellule
- public function newRock(x,y:int, rockType:String) {
-
- // classe apropriée
- var newRock:MovieClip;
- var rockRadius:Number;
- if (rockType == "Big") {
- newRock = new Rock_Big();
- rockRadius = 35;
- } else if (rockType == "Medium") {
- newRock = new Rock_Medium();
- rockRadius = 20;
- } else if (rockType == "Small") {
- newRock = new Rock_Small();
- rockRadius = 10;
- }
-
- /*
- var rockClass:Object = getDefinitionByName("Rock_"+rockType);
- var newRock:MovieClip = new rockClass();
- */
-
- //
- newRock.gotoAndStop(Math.ceil(Math.random()*3));
-
- // set start position
- newRock.x = x;
- newRock.y = y;
-
- // mouvement rotation random
- var dx:Number = Math.random()*2.0-1.0;
- var dy:Number = Math.random()*2.0-1.0;
- var dr:Number = Math.random();
-
- //
- gameObjects.addChild(newRock);
- rocks.push({rock:newRock, dx:dx, dy:dy, dr:dr, rockType:rockType, rockRadius: rockRadius});
- }
-
- // crer les cellules
- public function nextRockWave(event:TimerEvent) {
- rocks = new Array();
- newRock(100,100,"Big");
- newRock(100,300,"Big");
- newRock(450,100,"Big");
- newRock(450,300,"Big");
- gameMode = "play";
- }
-
- // anime les cellules
- public function moveRocks(timeDiff:uint) {
- for(var i:int=rocks.length-1;i>=0;i--) {
-
- // bouge les cellules
- var rockSpeed:Number = rockSpeedStart + rockSpeedIncrease*gameLevel;
- rocks[i].rock.x += rocks[i].dx*timeDiff*rockSpeed;
- rocks[i].rock.y += rocks[i].dy*timeDiff*rockSpeed;
-
- // rotate cellules
- rocks[i].rock.rotation += rocks[i].dr*timeDiff*rockSpeed;
-
- //
- if ((rocks[i].dx > 0) && (rocks[i].rock.x > 570)) {
- rocks[i].rock.x -= 590;
- }
- if ((rocks[i].dx < 0) && (rocks[i].rock.x < -20)) {
- rocks[i].rock.x += 590;
- }
- if ((rocks[i].dy > 0) && (rocks[i].rock.y > 420)) {
- rocks[i].rock.y -= 440;
- }
- if ((rocks[i].dy < 0) && (rocks[i].rock.y < -20)) {
- rocks[i].rock.y += 440;
- }
- }
- }
-
- public function rockHit(rockNum:uint) {
-
- if (rocks[rockNum].rockType == "Big") {
- newRock(rocks[rockNum].rock.x,rocks[rockNum].rock.y,"Medium");
- newRock(rocks[rockNum].rock.x,rocks[rockNum].rock.y,"Medium");
- } else if (rocks[rockNum].rockType == "Medium") {
- newRock(rocks[rockNum].rock.x,rocks[rockNum].rock.y,"Small");
- newRock(rocks[rockNum].rock.x,rocks[rockNum].rock.y,"Small");
- }
-
- gameObjects.removeChild(rocks[rockNum].rock);
- rocks.splice(rockNum,1);
- }
-
-
- // MISSILES
-
- // crer un missile
- public function newMissile() {
- // create
- var newMissile:Missile = new Missile();
-
- // set direction
- newMissile.dx = Math.cos(Math.PI*ship.rotation/180);
- newMissile.dy = Math.sin(Math.PI*ship.rotation/180);
-
- // placement
- newMissile.x = ship.x + newMissile.dx*shipRadius;
- newMissile.y = ship.y + newMissile.dy*shipRadius;
-
- // ajouter
- gameObjects.addChild(newMissile);
- missiles.push(newMissile);
- }
-
- // animer
- public function moveMissiles(timeDiff:uint) {
- for(var i:int=missiles.length-1;i>=0;i--) {
- // move
- missiles[i].x += missiles[i].dx*missileSpeed*timeDiff;
- missiles[i].y += missiles[i].dy*missileSpeed*timeDiff;
- // hors de l'écran
- if ((missiles[i].x < 0) || (missiles[i].x > 550) || (missiles[i].y < 0) || (missiles[i].y > 400)) {
- gameObjects.removeChild(missiles[i]);
- delete missiles[i];
- missiles.splice(i,1);
- }
- }
- }
-
- // supp misile
- public function missileHit(missileNum:uint) {
- gameObjects.removeChild(missiles[missileNum]);
- missiles.splice(missileNum,1);
- }
-
- // interaction et controle
-
- public function moveGameObjects(event:Event) {
- // timer
- var timePassed:uint = getTimer() - lastTime;
- lastTime += timePassed;
- moveRocks(timePassed);
- if (gameMode != "delay") {
- moveShip(timePassed);
- }
- moveMissiles(timePassed);
- checkCollisions();
- }
-
- // tester la collisiion
- public function checkCollisions() {
- // loop through rocks
- rockloop: for(var j:int=rocks.length-1;j>=0;j--) {
- // loop through missiles
- missileloop: for(var i:int=missiles.length-1;i>=0;i--) {
- // collision detection
- if (Point.distance(new Point(rocks[j].rock.x,rocks[j].rock.y),
- new Point(missiles[i].x,missiles[i].y))
- < rocks[j].rockRadius) {
-
- // remove cellules and missile
- rockHit(j);
- missileHit(i);
-
- // add score
- gameScore += 10;
- updateScore();
-
- // pete la boucle
- continue rockloop;
- }
- }
-
- // ^^
- if (gameMode == "play") {
- if (shieldOn == false) { // only if shield is off
- if (Point.distance(new Point(rocks[j].rock.x,rocks[j].rock.y),
- new Point(ship.x,ship.y))
- < rocks[j].rockRadius+shipRadius) {
-
- // supp missile cellule shipHit();
- rockHit(j);
- }
- }
- }
- }
-
- // if ((rocks.length == 0) && (gameMode == "play")) {
- gameMode = "betweenlevels";
- gameLevel++; // + un niveau
- delayTimer = new Timer(2000,1);
- delayTimer.addEventListener(TimerEvent.TIMER_COMPLETE,nextRockWave);
- delayTimer.start();
- }
- }
-
- public function endGame() {
- // supprime les éléments
- removeChild(gameObjects);
- removeChild(scoreObjects);
- gameObjects = null;
- scoreObjects = null;
- removeEventListener(Event.ENTER_FRAME,moveGameObjects);
- stage.removeEventListener(KeyboardEvent.KEY_DOWN,keyDownFunction);
- stage.removeEventListener(KeyboardEvent.KEY_UP,keyUpFunction);
-
- gotoAndStop("gameover");
- }
-
- }
- }
-
- // c'est long hein ?
package {
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.utils.getTimer;
import flash.utils.Timer;
import flash.geom.Point;
public class SpaceRocks extends MovieClip {
static const shipRotationSpeed:Number = .1;
static const rockSpeedStart:Number = .03;
static const rockSpeedIncrease:Number = .02;
static const missileSpeed:Number = .2;
static const thrustPower:Number = .15;
static const shipRadius:Number = 20;
static const startingShips:uint = 3;
// game objects
private var ship:Ship;
private var rocks:Array;
private var missiles:Array;
// animation timer
private var lastTime:uint;
// touches
private var rightArrow:Boolean = false;
private var leftArrow:Boolean = false;
private var upArrow:Boolean = false;
private var shipMoveX:Number;
private var shipMoveY:Number;
// timers
private var delayTimer:Timer;
private var shieldTimer:Timer;
// game mode
private var gameMode:String;
private var shieldOn:Boolean;
// vaisseua et armes
private var shipsLeft:uint;
private var shieldsLeft:uint;
private var shipIcons:Array;
private var shieldIcons:Array;
private var scoreDisplay:TextField;
// score & niveau
private var gameScore:Number;
private var gameLevel:uint;
// sprites
private var gameObjects:Sprite;
private var scoreObjects:Sprite;
// commencer
public function startSpaceRocks() {
// set up sprites
gameObjects = new Sprite();
addChild(gameObjects);
scoreObjects = new Sprite();
addChild(scoreObjects);
// score a zero
gameLevel = 1;
shipsLeft = startingShips;
gameScore = 0;
createShipIcons();
createScoreDisplay();
// listenerss
addEventListener(Event.ENTER_FRAME,moveGameObjects);
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownFunction);
stage.addEventListener(KeyboardEvent.KEY_UP,keyUpFunction);
// start
gameMode = "delay";
shieldOn = false;
missiles = new Array();
nextRockWave(null);
newShip(null);
}
// SCORE OBJECTS
// nombre restant afficheur
public function createShipIcons() {
shipIcons = new Array();
for(var i:uint=0;i<shipsLeft;i++) {
var newShip:ShipIcon = new ShipIcon();
newShip.x = 20+i*15;
newShip.y = 375;
scoreObjects.addChild(newShip);
shipIcons.push(newShip);
}
}
// nb restant
public function createShieldIcons() {
shieldIcons = new Array();
for(var i:uint=0;i<shieldsLeft;i++) {
var newShield:ShieldIcon = new ShieldIcon();
newShield.x = 530-i*15;
newShield.y = 375;
scoreObjects.addChild(newShield);
shieldIcons.push(newShield);
}
}
// affichage du score
public function createScoreDisplay() {
scoreDisplay = new TextField();
scoreDisplay.x = 500;
scoreDisplay.y = 10;
scoreDisplay.width = 40;
scoreDisplay.selectable = false;
var scoreDisplayFormat = new TextFormat();
scoreDisplayFormat.color = 0xFFFFFF;
scoreDisplayFormat.font = "Arial";
scoreDisplayFormat.align = "right";
scoreDisplay.defaultTextFormat = scoreDisplayFormat;
scoreObjects.addChild(scoreDisplay);
updateScore();
}
// nouveau score a montrer
public function updateScore() {
scoreDisplay.text = String(gameScore);
}
// enlever un icone
public function removeShipIcon() {
scoreObjects.removeChild(shipIcons.pop());
}
// ""
public function removeShieldIcon() {
scoreObjects.removeChild(shieldIcons.pop());
}
// ""
public function removeAllShipIcons() {
while (shipIcons.length > 0) {
removeShipIcon();
}
}
// remove the rest of the shield icons
public function removeAllShieldIcons() {
while (shieldIcons.length > 0) {
removeShieldIcon();
}
}
// Creation du héros et du mouvement
// nouveau vaiiseue
public function newShip(event:TimerEvent) {
// if ship exists, remove it
if (ship != null) {
gameObjects.removeChild(ship);
ship = null;
}
//
if (shipsLeft < 1) {
endGame();
return;
}
// position
ship = new Ship();
ship.gotoAndStop(1);
ship.x = 275;
ship.y = 200;
ship.rotation = -90;
ship.shield.visible = false;
gameObjects.addChild(ship);
// propriétés
shipMoveX = 0.0;
shipMoveY = 0.0;
gameMode = "play";
// armes
shieldsLeft = 3;
createShieldIcons();
//
if (shipsLeft != startingShips) {
startShield(true);
}
}
// touches
public function keyDownFunction(event:KeyboardEvent) {
if (event.keyCode == 37) {
leftArrow = true;
} else if (event.keyCode == 39) {
rightArrow = true;
} else if (event.keyCode == 38) {
upArrow = true;
// show thruster
if (gameMode == "play") ship.gotoAndStop(2);
} else if (event.keyCode == 32) { // space
newMissile();
} else if (event.keyCode == 90) { // z
startShield(false);
}
}
//
public function keyUpFunction(event:KeyboardEvent) {
if (event.keyCode == 37) {
leftArrow = false;
} else if (event.keyCode == 39) {
rightArrow = false;
} else if (event.keyCode == 38) {
upArrow = false;
// remove thruster
if (gameMode == "play") ship.gotoAndStop(1);
}
}
public function moveShip(timeDiff:uint) {
// rotation
if (leftArrow) {
ship.rotation -= shipRotationSpeed*timeDiff;
} else if (rightArrow) {
ship.rotation += shipRotationSpeed*timeDiff;
} else if (upArrow) {
shipMoveX += Math.cos(Math.PI*ship.rotation/180)*thrustPower;
shipMoveY += Math.sin(Math.PI*ship.rotation/180)*thrustPower;
}
// move
ship.x += shipMoveX;
ship.y += shipMoveY;
// retour au bord
if ((shipMoveX > 0) && (ship.x > 570)) {
ship.x -= 590;
}
if ((shipMoveX < 0) && (ship.x < -20)) {
ship.x += 590;
}
if ((shipMoveY > 0) && (ship.y > 420)) {
ship.y -= 440;
}
if ((shipMoveY < 0) && (ship.y < -20)) {
ship.y += 440;
}
}
// supp vaisseua
public function shipHit() {
gameMode = "delay";
ship.gotoAndPlay("explode");
removeAllShieldIcons();
delayTimer = new Timer(2000,1);
delayTimer.addEventListener(TimerEvent.TIMER_COMPLETE,newShip);
delayTimer.start();
removeShipIcon();
shipsLeft--;
}
//
public function startShield(freeShield:Boolean) {
if (shieldsLeft < 1) return; // no shields left
if (shieldOn) return; // shield already on
//
ship.shield.visible = true;
shieldTimer = new Timer(3000,1);
shieldTimer.addEventListener(TimerEvent.TIMER_COMPLETE,endShield);
shieldTimer.start();
//
if (!freeShield) {
removeShieldIcon();
shieldsLeft--;
}
shieldOn = true;
}
// finir les missiles
public function endShield(event:TimerEvent) {
ship.shield.visible = false;
shieldOn = false;
}
// VihROCKS
//Nouvel cellule
public function newRock(x,y:int, rockType:String) {
// classe apropriée
var newRock:MovieClip;
var rockRadius:Number;
if (rockType == "Big") {
newRock = new Rock_Big();
rockRadius = 35;
} else if (rockType == "Medium") {
newRock = new Rock_Medium();
rockRadius = 20;
} else if (rockType == "Small") {
newRock = new Rock_Small();
rockRadius = 10;
}
/*
var rockClass:Object = getDefinitionByName("Rock_"+rockType);
var newRock:MovieClip = new rockClass();
*/
//
newRock.gotoAndStop(Math.ceil(Math.random()*3));
// set start position
newRock.x = x;
newRock.y = y;
// mouvement rotation random
var dx:Number = Math.random()*2.0-1.0;
var dy:Number = Math.random()*2.0-1.0;
var dr:Number = Math.random();
//
gameObjects.addChild(newRock);
rocks.push({rock:newRock, dx:dx, dy:dy, dr:dr, rockType:rockType, rockRadius: rockRadius});
}
// crer les cellules
public function nextRockWave(event:TimerEvent) {
rocks = new Array();
newRock(100,100,"Big");
newRock(100,300,"Big");
newRock(450,100,"Big");
newRock(450,300,"Big");
gameMode = "play";
}
// anime les cellules
public function moveRocks(timeDiff:uint) {
for(var i:int=rocks.length-1;i>=0;i--) {
// bouge les cellules
var rockSpeed:Number = rockSpeedStart + rockSpeedIncrease*gameLevel;
rocks[i].rock.x += rocks[i].dx*timeDiff*rockSpeed;
rocks[i].rock.y += rocks[i].dy*timeDiff*rockSpeed;
// rotate cellules
rocks[i].rock.rotation += rocks[i].dr*timeDiff*rockSpeed;
//
if ((rocks[i].dx > 0) && (rocks[i].rock.x > 570)) {
rocks[i].rock.x -= 590;
}
if ((rocks[i].dx < 0) && (rocks[i].rock.x < -20)) {
rocks[i].rock.x += 590;
}
if ((rocks[i].dy > 0) && (rocks[i].rock.y > 420)) {
rocks[i].rock.y -= 440;
}
if ((rocks[i].dy < 0) && (rocks[i].rock.y < -20)) {
rocks[i].rock.y += 440;
}
}
}
public function rockHit(rockNum:uint) {
if (rocks[rockNum].rockType == "Big") {
newRock(rocks[rockNum].rock.x,rocks[rockNum].rock.y,"Medium");
newRock(rocks[rockNum].rock.x,rocks[rockNum].rock.y,"Medium");
} else if (rocks[rockNum].rockType == "Medium") {
newRock(rocks[rockNum].rock.x,rocks[rockNum].rock.y,"Small");
newRock(rocks[rockNum].rock.x,rocks[rockNum].rock.y,"Small");
}
gameObjects.removeChild(rocks[rockNum].rock);
rocks.splice(rockNum,1);
}
// MISSILES
// crer un missile
public function newMissile() {
// create
var newMissile:Missile = new Missile();
// set direction
newMissile.dx = Math.cos(Math.PI*ship.rotation/180);
newMissile.dy = Math.sin(Math.PI*ship.rotation/180);
// placement
newMissile.x = ship.x + newMissile.dx*shipRadius;
newMissile.y = ship.y + newMissile.dy*shipRadius;
// ajouter
gameObjects.addChild(newMissile);
missiles.push(newMissile);
}
// animer
public function moveMissiles(timeDiff:uint) {
for(var i:int=missiles.length-1;i>=0;i--) {
// move
missiles[i].x += missiles[i].dx*missileSpeed*timeDiff;
missiles[i].y += missiles[i].dy*missileSpeed*timeDiff;
// hors de l'écran
if ((missiles[i].x < 0) || (missiles[i].x > 550) || (missiles[i].y < 0) || (missiles[i].y > 400)) {
gameObjects.removeChild(missiles[i]);
delete missiles[i];
missiles.splice(i,1);
}
}
}
// supp misile
public function missileHit(missileNum:uint) {
gameObjects.removeChild(missiles[missileNum]);
missiles.splice(missileNum,1);
}
// interaction et controle
public function moveGameObjects(event:Event) {
// timer
var timePassed:uint = getTimer() - lastTime;
lastTime += timePassed;
moveRocks(timePassed);
if (gameMode != "delay") {
moveShip(timePassed);
}
moveMissiles(timePassed);
checkCollisions();
}
// tester la collisiion
public function checkCollisions() {
// loop through rocks
rockloop: for(var j:int=rocks.length-1;j>=0;j--) {
// loop through missiles
missileloop: for(var i:int=missiles.length-1;i>=0;i--) {
// collision detection
if (Point.distance(new Point(rocks[j].rock.x,rocks[j].rock.y),
new Point(missiles[i].x,missiles[i].y))
< rocks[j].rockRadius) {
// remove cellules and missile
rockHit(j);
missileHit(i);
// add score
gameScore += 10;
updateScore();
// pete la boucle
continue rockloop;
}
}
// ^^
if (gameMode == "play") {
if (shieldOn == false) { // only if shield is off
if (Point.distance(new Point(rocks[j].rock.x,rocks[j].rock.y),
new Point(ship.x,ship.y))
< rocks[j].rockRadius+shipRadius) {
// supp missile cellule shipHit();
rockHit(j);
}
}
}
}
// if ((rocks.length == 0) && (gameMode == "play")) {
gameMode = "betweenlevels";
gameLevel++; // + un niveau
delayTimer = new Timer(2000,1);
delayTimer.addEventListener(TimerEvent.TIMER_COMPLETE,nextRockWave);
delayTimer.start();
}
}
public function endGame() {
// supprime les éléments
removeChild(gameObjects);
removeChild(scoreObjects);
gameObjects = null;
scoreObjects = null;
removeEventListener(Event.ENTER_FRAME,moveGameObjects);
stage.removeEventListener(KeyboardEvent.KEY_DOWN,keyDownFunction);
stage.removeEventListener(KeyboardEvent.KEY_UP,keyUpFunction);
gotoAndStop("gameover");
}
}
}
// c'est long hein ?
Conclusion
la conclusion c'est que je viens de comprendre la puissance de l'as 3. c'est génial. Voila^
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Flash 9 / AS3 + Socket MySQL question [ par _benjy ]
Salut @ tous...Bon j'imgine que certain d'entre vous sont au courant de la publication de Flash 9 Alpha. Perso je l'ai recup av hier, et autant le dir
Découverte de l'AS3...pas gagné [ par Neferieb ]
Bonjour,Je suis un peu dérouté en ce moment car je découvre l'AS3 et je reste perplexe quant au manque d'info pour réaliser des applications web plus
creation sommaire pour videos AS3 [ par mackaB ]
Bonjour, Je vous écris car je fais un projet Flash (9.0) AS 3 et j ai un petit probleme avec les listes.En effet avec AS3, dans Component inspector, l
list et AS3 [ par mackaB ]
Bonjour ,alors mon problème est que je n´arrive pas á relier les élèments d´une liste vers d autres élèments ( par exemple pour se servir de la liste
AS3 TextField & MouseEvent.MOUSE_UP bug avec FireFox ... [ par _benjy ]
SalutBon j'ai trouvé un bug avec FireFox et la gestion d'evenement dans le player sur un TextField.je vous laisse voir par vous mm : http://www.kolaps
Dessin et AS3 [ par choufleur ]
Bonjour à tous,J'ai un dessin en AS3 et je voudrai savoir s'il existe un moyen de faire en sorte que les contours de ce dessin se dessinent tout seul.
"Traduction" basique de _root en AS3.0 [ par nicoool18 ]
Bonjour à tous !Je pratique depuis longtemps l'AS2.0, et je viens de passer en AS3.0, qui est vraiment beaucoup mieux ! Mais bon j'ai quelques soucis
Bouton AS3 - Effet [ par xoot ]
bonjour a toutes et tous,Bon je me suis enfin lancé dans le AS3, bon ma question va paraître bête pour certain(e)en faite je crée un bouton nommé : mo
vu metre as3 [ par podi ]
bonjour..j ai recup un fla qui tourne en as3 il sagit d'un vu metre canal gauche et droite qui bouge sur un mp3 prechargé...mais serait il possible de
passage difficile à AS3 [ par attrition ]
Bonjour à tous! Je débute tout juste en AS3 et souhaite refaire tout mon site ainsi... J'ai créé celui-ci sur une seule séquence avec des envois gotoA
|
Derniers Blogs
TECHDAYS PARIS 2010 : LES SERVICES D'APPLICATIONS DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LES SERVICES D'APPLICATIONS DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Xavier Moreels et Julien Bakmezdjian Ce sujet est lié au partage des applications comme services dans SharePoint 2010, ceci représente la possibilité de créer sa propre application qui sera utilisable comme ceux en standard : Search...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : LA GED ET SHAREPOINT 2010TECHDAYS PARIS 2010 : LA GED ET SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Etienne Lacour Cette session a commencé par un rappel de la gestion de contenu et surtout une résumé des points ayant été amélioré avec 2010. Accompagné d'un point sur le cycle de vie des documents. Un rappel du fonctionnement de S...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : SHAREPOINT 2010 ET LES RéSEAUX SOCIAUXTECHDAYS PARIS 2010 : SHAREPOINT 2010 ET LES RéSEAUX SOCIAUX par ROMELARD Fabrice
Animé par: Olivier Lepeltier et Karim Manar Cette session commence par la présentation du concept de réseau social, mais surtout de la particularité de du réseau social dans une entreprise. La vision du réseau social est donc une extension du MyS...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : SHAREPOINT 2010 - DESCRIPTION ET NOUVEAUTéSTECHDAYS PARIS 2010 : SHAREPOINT 2010 - DESCRIPTION ET NOUVEAUTéS par ROMELARD Fabrice
Animé par: Karim Manar et Laurent Beaudouin Cette session a pour but de revenir sur ce qu'est SharePoint globalement, mais aussi de voir les évolutions liées avec l'avènement de la version 2010. A partir de la marguerite de...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLEINIèRE LUNDITECHDAYS PARIS 2010 : PLEINIèRE LUNDI par ROMELARD Fabrice
Comme chaque année, c'est le grand rassemblement autour des technologies Microsoft qui se déroule donc à Paris au Palais des Congrès. Cette année est riche pour Microsoft en terme de livraison produit, paris l...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|