CodingForums.com

CodingForums.com (http://www.codingforums.com/index.php)
-   Flash & ActionScript (http://www.codingforums.com/forumdisplay.php?f=52)
-   -   My program exploded... I can has help? (http://www.codingforums.com/showthread.php?t=162022)

Cmptr_Prgrmr2B 03-24-2009 02:54 AM

My program exploded... I can has help?
 
1 Attachment(s)
I am trying to recreate a simple version of Pong. I am almost positive that I coded it correctly, though I apparently didn't because it's not working. I would be much appreciative if someone would take a look at my code and point me in the right direction. I'll put the code up, but since this is Flash, I'll also put the actual program file up as an attachment.

Thanks,
Cmptr_Prgrmr2B

Code:

player.onEnterFrame = function() {
        player._y = _root._ymouse;
}

opp.onEnterFrame = function() {
        if (ball._y < opp._y) {
                opp.dy = - opp.speed;
        } else {
                opp.dy = opp.speed;
        }
       
        opp._y += opp.dy;
}

init();

function init() {
        mouse.hide();
       
        ball.dx = 15;
        ball.dy = 5;
       
        opp.speed = 10;

        playerScore = 0;
        oppScore = 0;
}


ball.onEnterFrame = function() {
        ball.move();
        ball.checkBoundaries();
        ball.checkPaddles();
}

ball.move = function() {
        ball._x += ball.dx;
        ball._y += ball.dy;
}

ball.checkBoundaries = function() {
        if(ball._y < 0) {
                ball.dy = -ball.dy;
        }
       
        if(ball._y > Stage.height) {
                ball.dy = -ball.dy;
        }
       
        if(ball._x < 0) {
                oppScore++;
               
                ball._x = opp._x - 60;
                ball._y = opp_y;
                ball.dy = 0;
        }
       
        if(ball._x > Stage.width) {
                playerScore++
               
                ball._x = player._x + 50;
                ball._y = player._y;
                ball.dy = 0;
        }
}

ball.checkPaddles = function() {
        if (ball.hitTest(player)) {
        ball.dx = -ball.dx;
        ball.dy = getDy(player);
        }
        if (ball.hitTest(opp)) {
                ball.dx = -ball.dx;
                ball.dy = getDy(opp);
        }
}

function getDy(paddle) {
        relY = ball._y - paddle._y;
        relPerc - relY / paddle._height;
        trace ("relPerc");
       
        newDy = relPerc * 30;
        trace("NewDy");
        return newDy;
       
}


gnomeontherun 03-24-2009 09:59 AM

Well I would check your code at

Code:

        if(ball._x < 0) {
                oppScore++;
               
                ball._x = opp._x - 60;
                ball._y = opp_y;
                ball.dy = 0;
        }

because it doesn't reset the ball properly.

Then the ball doesn't really have any angle to its direction, so perhaps integrating some Math methods to give the ball a different direction based on where it hits the paddle.

Cmptr_Prgrmr2B 03-24-2009 01:32 PM

I fixed part of my code like you posted, and went looking for a way to bounce the ball ad different angles. In my original code, this

Code:


ball.checkPaddles = function() {
        if (ball.hitTest(player)) {
        ball.dx = -ball.dx;
        ball.dy = getDy(player);
        }
        if (ball.hitTest(opp)) {
                ball.dx = -ball.dx;
                ball.dy = getDy(opp);
        }
}

function getDy(paddle) {
        relY = ball._y - paddle._y;
        relPerc - relY / paddle._height;
        trace ("relPerc");
       
        newDy = relPerc * 30;
        trace("NewDy");
        return newDy;
       
}

should have done it. For some reason it did not. Can you please look at this code as well?


All times are GMT +1. The time now is 10:59 PM.

Powered by vBulletin®
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.