diff --git a/README.md b/README.md index d0568a0..c783cfb 100644 --- a/README.md +++ b/README.md @@ -326,6 +326,8 @@ Une fois réalisée, vous pouvez observer sur le projet original toutes les prop - Théo Charron - - Lucas SENOVILLE - - Walid DJEMMAA - +- Amina LOZI - - Damien Fajole - - Vitor Sousa - - Julien HAMEL - + diff --git a/game.js b/game.js new file mode 100644 index 0000000..90f3e88 --- /dev/null +++ b/game.js @@ -0,0 +1,104 @@ +var game = new Phaser.Game(400, 490, Phaser.AUTO, 'game'); + +var mainState = { + + preload: function() { + game.stage.backgroundColor = '#FF6A5E'; + bird = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyAQMAAAAk8RryAAAABlBMVEXSvicAAABogyUZAAAAGUlEQVR4AWP4DwYHMOgHDEDASCN6lMYV7gChf3AJ/eB/pQAAAABJRU5ErkJggg=="; + pipe = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyAQMAAAAk8RryAAAABlBMVEV0vy4AAADnrrHQAAAAGUlEQVR4AWP4DwYHMOgHDEDASCN6lMYV7gChf3AJ/eB/pQAAAABJRU5ErkJggg=="; + game.load.image('bird', bird); + game.load.image('pipe', pipe); + }, + + create: function() { + game.physics.startSystem(Phaser.Physics.ARCADE); + + this.pipes = game.add.group(); + this.pipes.enableBody = true; + this.pipes.createMultiple(20, 'pipe'); + this.timer = this.game.time.events.loop(1500, this.addRowOfPipes, this); + + this.bird = this.game.add.sprite(100, 245, 'bird'); + game.physics.arcade.enable(this.bird); + this.bird.body.gravity.y = 1000; + + // New anchor position + this.bird.anchor.setTo(-0.2, 0.5); + + var spaceKey = this.game.input.keyboard.addKey(Phaser.Keyboard.SPACEBAR); + spaceKey.onDown.add(this.jump, this); + + this.score = 0; + this.labelScore = this.game.add.text(20, 20, "0", { font: "30px Arial", fill: "#ffffff" }); + + // Add the jump sound + this.jumpSound = this.game.add.audio('jump'); + }, + + update: function() { + if (this.bird.inWorld == false) + this.restartGame(); + + game.physics.arcade.overlap(this.bird, this.pipes, this.hitPipe, null, this); + + // Rotate the bird + if (this.bird.angle < 20) + this.bird.angle += 1; + }, + + jump: function() { + // If the bird is dead, he can't jump + if (this.bird.alive == false) + return; + + this.bird.body.velocity.y = -350; + + // Jump animation + game.add.tween(this.bird).to({angle: -20}, 100).start(); + + }, + + hitPipe: function() { + // If the bird has already hit a pipe, we have nothing to do + if (this.bird.alive == false) + return; + + // Set the alive property of the bird to false + this.bird.alive = false; + + // Prevent new pipes from appearing + this.game.time.events.remove(this.timer); + + // Go through all the pipes, and stop their movement + this.pipes.forEachAlive(function(p){ + p.body.velocity.x = 0; + }, this); + }, + + restartGame: function() { + game.state.start('main'); + }, + + addOnePipe: function(x, y) { + var pipe = this.pipes.getFirstDead(); + + pipe.reset(x, y); + pipe.body.velocity.x = -200; + pipe.checkWorldBounds = true; + pipe.outOfBoundsKill = true; + }, + + addRowOfPipes: function() { + var hole = Math.floor(Math.random()*5)+1; + + for (var i = 0; i < 8; i++) + if (i != hole && i != hole +1) + this.addOnePipe(400, i*60+10); + + this.score += 1; + this.labelScore.text = this.score; + }, +}; + +game.state.add('main', mainState); +game.state.start('main'); \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..e6008ab --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + Flappy Clone + + +

Appuyer sur la barre espace pour sauter

+
+ + \ No newline at end of file