Reputation: 727
I keep trying to alert the players that if player 1 wins then alert that player 1 wins and it does but it keeps popping up over and over until you click stop displaying this dialogue.
Also when I add to detect second player it just doesn't work.
function detectWin () {
if (score + playerTwoScore == 5900 && score > playerTwoScore) {
alert("Player 1 Wins!");
}
}
detectWin();
also when i do this it doesn't work to show player 2 wins.
function detectWin () {
if (score + playerTwoScore == 5900 && score > playerTwoScore) {
alert("Player 1 Wins!");
} else (score + playerTwoScore == 5900 && score < playerTwoScore) {
alert("Player 2 Wins!");
}
}
detectWin();
---full snippet if you wanna see what I'm working on or if you wanna use parts of it I don't care--
var game = new Phaser.Game(1024, 700, Phaser.AUTO, '', { preload: preload, create: create, update: update });
function preload() {
game.load.image('starrySky', 'assets/starry_sky.png');
game.load.image('ground', 'assets/ground.png');
game.load.image('bottomCenterIcyPlatform', 'assets/bottom-center.png');
game.load.image('middleCenterIcyPlatform', 'assets/middle-center.png');
game.load.image('topCenterIcyPlatform', 'assets/top-center.png');
game.load.image('bottomIcyPlatform', 'assets/bottom-side.png');
game.load.image('middleIcyPlatform', 'assets/side-middle.png');
game.load.image('veryTopMiddleIcyPlatform', 'assets/very-top.png');
game.load.image('veryTopSideIcyPlatform', 'assets/very-top-side.png');
game.load.image('present', 'assets/presents.png');
game.load.spritesheet('dude', 'assets/anak.png', 32, 48);
game.load.spritesheet('dudeTwo', 'assets/rudolph.png', 32, 48);
game.load.audio('collectPresent', ['assets/audio/collect-present.mp3', 'assets/audio/collect-present.ogg']);
game.load.audio('daWinner', ['assets/audio/the-winner.mp3', 'assets/audio/the-winner.ogg']);
}
var player;
var playerTwo;
var platforms;
var cursors;
var presents;
var score = 0;
var playerTwoScore = 0;
var scoreText;
var scoreTextPlayerTwo;
function create() {
game.physics.startSystem(Phaser.Physics.ARCADE);
// Background
game.add.sprite(0, 0, 'starrySky');
// Contains all the platforms
platforms = game.add.group();
platforms.enableBody = true;
// The ground
var ground = platforms.create(0, game.world.height - 64, 'ground');
ground.scale.setTo(2, 2);
// So you don't fall through the ground...
ground.body.immovable = true;
//center bottom platform
var ledge = platforms.create(193, 500, 'bottomCenterIcyPlatform');
ledge.body.immovable = true;
//center middle platform
var ledge = platforms.create(274, 320, 'middleCenterIcyPlatform');
ledge.body.immovable = true;
//center top platform
var ledge = platforms.create(390, 170, 'topCenterIcyPlatform');
ledge.body.immovable = true;
//left bottom platform
ledge = platforms.create(0, 410, 'bottomIcyPlatform');
ledge.body.immovable = true;
//right bottom platform
ledge = platforms.create(824, 410, 'bottomIcyPlatform');
ledge.body.immovable = true;
//left side middle platform
ledge = platforms.create(0, 250, 'middleIcyPlatform');
ledge.body.immovable = true;
//right side middle platform
ledge = platforms.create(874, 250, 'middleIcyPlatform');
ledge.body.immovable = true;
//very top middle icy platform
ledge = platforms.create(490, 50, 'veryTopMiddleIcyPlatform');
ledge.body.immovable = true;
//very top left icy platform
ledge = platforms.create(200, 110, 'veryTopSideIcyPlatform');
ledge.body.immovable = true;
//very top right icy platform
ledge = platforms.create(722, 110, 'veryTopSideIcyPlatform');
ledge.body.immovable = true;
// The players and their settings
player = game.add.sprite(10, game.world.height - 150, 'dude');
playerTwo = game.add.sprite(980, game.world.height - 150, 'dudeTwo');
game.physics.arcade.enable(player);
game.physics.arcade.enable(playerTwo);
//playerOne
player.body.bounce.y = 0.2;
player.body.gravity.y = 300;
player.body.collideWorldBounds = true;
//PlayerTwo
playerTwo.body.bounce.y = 0.2;
playerTwo.body.gravity.y = 300;
playerTwo.body.collideWorldBounds = true;
// Our two animations, walking left and right.
player.animations.add('left', [0, 1, 2, 3], 10, true);
player.animations.add('right', [5, 6, 7, 8], 10, true);
//Player Two
playerTwo.animations.add('left', [0, 1, 2, 3], 10, true);
playerTwo.animations.add('right', [5, 6, 7, 8], 10, true);
// Finally some presents to collect
presents = game.add.group();
// We will enable physics for any present that is created in this group
presents.enableBody = true;
//Create presents ground level
for (var i = 0; i < 13; i++)
{
// Create a present inside of the 'presents' group
var present = presents.create((i * 50)+197, 500, 'present');
// Let gravity do its thing
present.body.gravity.y = 300;
// This just gives each present a slightly random bounce value
present.body.bounce.y = 0.3;
}
//Create presents bottom center ledge
for (var i = 0; i < 13; i++)
{
// Create a present inside of the 'presents' group
var present = presents.create((i * 50)+197, 400, 'present');
// Let gravity do its thing
present.body.gravity.y = 300;
// This just gives each present a slightly random bounce value
present.body.bounce.y = 0.3;
}
//Create presents center middle ledge
for (var i = 0; i < 9; i++)
{
// Create a present inside of the 'presents' group
var present = presents.create((i * 50)+298, 200, 'present');
// Let gravity do its thing
present.body.gravity.y = 300;
// This just gives each present a slightly random bounce value
present.body.bounce.y = 0.3;
}
//Create presents center top ledge
for (var i = 0; i < 5; i++)
{
// Create a present inside of the 'presents' group
var present = presents.create((i * 50)+394, 100, 'present');
// Let gravity do its thing
present.body.gravity.y = 300;
// This just gives each present a slightly random bounce value
present.body.bounce.y = 0.3;
}
//Create present very top center ledge
for (var i = 1; i < 2; i++)
{
// Create a present inside of the 'presents' group
var present = presents.create((i * 50)+440, 18, 'present');
}
//Create presents left bottom ledge
for (var i = 0; i < 4; i++)
{
// Create a present inside of the 'presents' group
var present = presents.create((i * 50)+10, 300, 'present');
// Let gravity do its thing
present.body.gravity.y = 300;
// This just gives each present a slightly random bounce value
present.body.bounce.y = 0.3;
}
//Create presents left middle ledge
for (var i = 0; i < 3; i++)
{
// Create a present inside of the 'presents' group
var present = presents.create((i * 50)+9, 200, 'present');
// Let gravity do its thing
present.body.gravity.y = 300;
// This just gives each present a slightly random bounce value
present.body.bounce.y = 0.3;
}
//Create presents left top ledge
for (var i = 0; i < 2; i++)
{
// Create a present inside of the 'presents' group
var present = presents.create((i * 50)+210, 50, 'present');
// Let gravity do its thing
present.body.gravity.y = 300;
// This just gives each present a slightly random bounce value
present.body.bounce.y = 0.3;
}
//Create presents right bottom ledge
for (var i = 0; i < 4; i++)
{
// Create a present inside of the 'presents' group
var present = presents.create((i * 50)+834, 300, 'present');
// Let gravity do its thing
present.body.gravity.y = 300;
// This just gives each present a slightly random bounce value
present.body.bounce.y = 0.3;
}
//Create presents right middle ledge
for (var i = 0; i < 3; i++)
{
// Create a present inside of the 'presents' group
var present = presents.create((i * 50)+884, 200, 'present');
// Let gravity do its thing
present.body.gravity.y = 300;
// This just gives each present a slightly random bounce value
present.body.bounce.y = 0.3;
}
//Create presents right top ledge
for (var i = 0; i < 2; i++)
{
// Create a present inside of the 'presents' group
var present = presents.create((i * 50)+731, 50, 'present');
// Let gravity do its thing
present.body.gravity.y = 300;
// This just gives each present a slightly random bounce value
present.body.bounce.y = 0.3;
}
// The scores
scoreText = game.add.text(25, 16, 'Player 1 Score: 0', { fontSize: '32px', fill: '#000' });
scoreTextPlayerTwo = game.add.text(750, 16, 'Player 2 Score: 0', { fontSize: '32px', fill: '#000' });
// Player controls
cursors = game.input.keyboard.createCursorKeys();
//player two controls
upButton = game.input.keyboard.addKey(Phaser.Keyboard.W);
downButton = game.input.keyboard.addKey(Phaser.Keyboard.S);
leftButton = game.input.keyboard.addKey(Phaser.Keyboard.A);
rightButton = game.input.keyboard.addKey(Phaser.Keyboard.D);
}
function update() {
// Collide the players against each other and the presents and platforms
game.physics.arcade.collide(player, platforms);
game.physics.arcade.collide(playerTwo, platforms);
game.physics.arcade.collide(presents, platforms);
game.physics.arcade.collide(player, playerTwo);
// Checks to see if the players overlaps with any of the presents, if he does call the collectpresent function
game.physics.arcade.overlap(player, presents, collectpresent, null, this);
game.physics.arcade.overlap(playerTwo, presents, playerTwoCollectpresent, null, this);
// Reset the players one velocity (movement)
playerTwo.body.velocity.x = 0;
if (cursors.left.isDown)
{
// Move to the left
playerTwo.body.velocity.x = -300;
playerTwo.animations.play('left');
}
else if (cursors.right.isDown)
{
// Move to the right
playerTwo.body.velocity.x = 300;
playerTwo.animations.play('right');
}
else
{
// Stand still
playerTwo.animations.stop();
playerTwo.frame = 4;
}
// Allow the player to jump if they are touching the ground.
if (cursors.up.isDown && playerTwo.body.touching.down)
{
playerTwo.body.velocity.y = -310;
}
//Reset Player Two velocity (movement)
player.body.velocity.x = 0;
if (leftButton.isDown)
{
// Move to the left (- to go faster, )
player.body.velocity.x = -300;
player.animations.play('left');
}
else if (rightButton.isDown)
{
// Move to the right (+ to go faster)
player.body.velocity.x = 300;
player.animations.play('right');
}
else
{
// Stand still
player.animations.stop();
player.frame = 4;
}
// Have the player jump if they're touching something (ground, present, ledge or another player)
if (upButton.isDown && player.body.touching.down)
{
player.body.velocity.y = -350;
}
function collectpresent (player, present) {
// Removes the present from the screen
present.kill();
// Add and update the score
score += 100;
scoreText.text = 'Player 1 Score: ' + score;
}
function playerTwoCollectpresent (playerTwo, present) {
// Removes the present from the screen
present.kill();
// Add and update the score
playerTwoScore += 100;
scoreTextPlayerTwo.text = 'Player 2 Score: ' + playerTwoScore;
}
function detectWin () {
if (score + playerTwoScore == 5900 && score > playerTwoScore) {
alert("Player 1 Wins!");
}
}
detectWin();
//end update
}
Upvotes: 1
Views: 68
Reputation: 1575
detectWin function is called every update iteration so if the condition inside that function is resolved true, it will execute whatever it's inside (the alert function on this case). So, either you make this condition false after called once, by adding a var "finisehd", something like:
function detectWin () {
if (score + playerTwoScore == 5900 && score > playerTwoScore && !finished) {
alert("Player 1 Wins!");
finished = true;
}
}
Or you can stop the update cicle by changing to another state (http://phaser.io/news/2015/06/using-states-tutorial) where you can manage the end of the game.
Upvotes: 1