<!doctype html> <!-- FlappyBirdJS by Sanay N. & Topher P.--> <!-- https://github.com/topherPedersen/FlappyBirdJS --> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Making your first Phaser 3 Game - Part 2</title> <script src="//cdn.jsdelivr.net/npm/phaser@3.11.0/dist/phaser.js"></script> <style type="text/css"> body { margin: 0; } #title-div { width: 600px; overflow: hidden; text-align: center; } </style> </head> <body> <div id="title-div"> <p><strong>FlappyBirdJS by Sanay N., a Rockstar Coding Student @ theCoderSchool</strong></p> </div> <script type="text/javascript"> /** ** FlappyBirdJS by Sanay (a Rockstar Coding Student @ theCoderSchool) ** with a little help from his instructor topherPedersen **/ // REFERENCE (Official Phaser Tutorial Source Code): https://github.com/topherPedersen/OfficialPhaser3Tutorial var config = { type: Phaser.AUTO, width: 600, height: 400, physics: { default: 'arcade', arcade: { gravity: {y: 300}, debug: false } }, scene: { preload: preload, create: create, update: update } }; var game = new Phaser.Game(config); // Game Variables var bird; var cursors; var bottom_pipe = []; var top_pipe = []; var gameOver = false; var endGame; var distance; initialYAxisOffset = []; function preload () { this.load.image('sky', 'assets/sky.png'); this.load.image('bird', 'assets/bird.png'); this.load.image('pipe', 'assets/pipe.png'); } function create () { // Add Sky this.add.image(400, 300, 'sky'); // Add Flappy Bird bird = this.physics.add.sprite(20, 40, 'bird'); // Add Collision Detection bird.setBounce(0.2); bird.setCollideWorldBounds(true); bird.body.setGravityY(300); // TODO: Sanay, use a for-loop to create three pipes. // Reference the "Add Flappy Bird" for how to add a sprite var xPos = 0; var firstRandomNumber; for (var i = 0; i < 3; i++) { firstRandomNumber = (Math.floor(Math.random() * 10)) + 1; if (firstRandomNumber < 6) { // add random positive number to pipe's new y position initialYAxisOffset[i] = (Math.floor(Math.random() * 10)) * 10; } else { // add random negative number to pipe's new y position initialYAxisOffset[i] = (Math.floor(Math.random() * 10)) * (-10); } } var offset; // Create Top Pipes for (var i = 0; i < 3; i++) { offset = initialYAxisOffset[i]; top_pipe[i] = this.physics.add.sprite(550 + xPos, -50 + offset, 'pipe'); top_pipe[i].body.setAllowGravity(false); top_pipe[i].body.setVelocityX(-150); top_pipe[i].inableBody = true; top_pipe[i].immovable = true; top_pipe[i].flipY = true; // Adjust Physics for Pipe(s) // pipe[i].setBounce(0.2); // pipe[i].setCollideWorldBounds(true); // pipe[i].body.setGravityY(0); // this.physics.add.collider(pipe[i]); xPos += 400; } // Create Bottom Pipes xPos = 0; // reset xPos back to zero for (var i = 0; i < 3; i++) { offset = initialYAxisOffset[i]; bottom_pipe[i] = this.physics.add.sprite(550 + xPos, 450 + offset, 'pipe'); bottom_pipe[i].body.setAllowGravity(false); bottom_pipe[i].body.setVelocityX(-150); bottom_pipe[i].inableBody = true; bottom_pipe[i].immovable = true; // bottom_pipe[i].flipY = true; // Adjust Physics for Pipe(s) // pipe[i].setBounce(0.2); // pipe[i].setCollideWorldBounds(true); // pipe[i].body.setGravityY(0); // this.physics.add.collider(pipe[i]); xPos += 400; } onScreenText = this.add.text(212, 185, '', {fontSize: '32px', fill: '#00000' }); cursors = this.input.keyboard.createCursorKeys(); // Add Collision Detection Between Bird & Pipe(s) this.physics.add.collider(bird, bottom_pipe, collisionCallback); this.physics.add.collider(bird, top_pipe, collisionCallback); } var xPos = 0; // Main Game Loop function update () { if (gameOver) { bird.body.setGravityY(0); for (var i = 0; i < 3; i++) { bottom_pipe[i].body.setAllowGravity(false); bottom_pipe[i].body.setVelocityX(0); top_pipe[i].body.setAllowGravity(false); top_pipe[i].body.setVelocityX(0); } return; } else { if (cursors.space.isDown) { bird.setVelocityY(-250); console.log('Space Bar is pressed, I am amazing') } // TODO: Sanay, write some code here in the main game loop // to check to see if any of the pipes have gone off screen. // -300 for (var i = 0; i < 3; i++) { var firstRandomNumber = (Math.floor(Math.random() * 10)) + 1; if (firstRandomNumber < 6) { // add random positive number to pipe's new y position var yAxisOffset = (Math.floor(Math.random() * 10)) * 10; } else { // add random negative number to pipe's new y position var yAxisOffset = (Math.floor(Math.random() * 10)) * (-10); } if (bottom_pipe[i].body.x < -400) { bottom_pipe[i].x = 850; bottom_pipe[i].y = 450 + yAxisOffset; } if (top_pipe[i].body.x < -400) { top_pipe[i].x = 850; top_pipe[i].y = -50 + yAxisOffset; } } } } function collisionCallback() { gameOver = true; // endGame.setText('Game Over'); bird.body.enable = false; top_pipe[0].body.enable = false; top_pipe[1].body.enable = false; top_pipe[2].body.enable = false; bottom_pipe[0].body.enable = false; bottom_pipe[1].body.enable = false; bottom_pipe[2].body.enable = false; onScreenText.setText('GAME OVER'); } </script> </body> </html>