
-----------------------------------
cpu_hacker4.0
Tue Oct 09, 2007 7:38 pm

classic pong
-----------------------------------
This is a classic style pong game that I made and I am looking for suggestions on how to improve it.  It's not finished yet, so some constructive criticism would be useful ;) 

const RADIUS : int := 10

var chars : array char of boolean
var paddle1X : int := 5
var paddle1Y : int := maxy div 2 - 50
var paddle2X : int := maxx - 5
var paddle2Y : int := maxy div 2 - 50
var ballX : int := maxx div 2
var ballY : int := maxy div 2
var xInc : int := 1
var yInc : int := 1
var p1score : int := 0
var p2score : int := 0
var p1name : string
var p2name : string
var reply : string (1)

put "Please enter the name for player 1: " ..
get p1name

put "Please enter the name for player 2: " ..
get p2name

setscreen ("offscreenonly")

function MathDistance (x1, y1, x2, y2 : real) : real
    var dx : real := x1 - x2
    var dy : real := y1 - y2
    result sqrt (dx * dx + dy * dy)
end MathDistance


function MathDistancePointLine (px, py, x1, y1, x2, y2 : real) : real
    var lineSize : real := MathDistance (x1, y1, x2, y2)
    if lineSize = 0 then
        result MathDistance (px, py, x1, y1)
    end if

    var u : real := ((px - x1) * (x2 - x1) +
        (py - y1) * (y2 - y1)) / (lineSize * lineSize)

    if u < 0.0 then
        result MathDistance (px, py, x1, y1)
    elsif u > 1.0 then
        result MathDistance (px, py, x2, y2)
    else
        var ix : real := x1 + u * (x2 - x1)
        var iy : real := y1 + u * (y2 - y1)
        result MathDistance (px, py, ix, iy)
    end if
end MathDistancePointLine

loop
    loop
        cls
        ballX += xInc
        ballY += yInc
        drawfillbox (0, 0, maxx, maxy, yellow)
        drawline (paddle1X, paddle1Y, paddle1X, paddle1Y + 100, black)
        drawline (paddle2X, paddle2Y, paddle2X, paddle2Y + 100, black)
        drawfilloval (ballX, ballY, RADIUS, RADIUS, black)
        Input.KeyDown (chars)
        if chars ('w') then
            paddle1Y += 1
        elsif chars ('s') then
            paddle1Y -= 1
        end if
        if chars (KEY_UP_ARROW) then
            paddle2Y += 1
        elsif chars (KEY_DOWN_ARROW) then
            paddle2Y -= 1
        end if
        if paddle1Y + 100 >= maxy then
            paddle1Y -= 1
        elsif paddle1Y = maxy then
            paddle2Y -= 1
        elsif paddle2Y = maxy then
            yInc *= -1
        elsif ballY - RADIUS 