
-----------------------------------

Mon Jun 05, 2006 5:36 pm

Shooter Help
-----------------------------------
I need help with my shooting game. I wish to add several bouncy ball dudes and automatically generate them on the screen without slowing down my program. I was thinking it had something to do with adding parimeters onto my Ball procedure. My teacher suggested store data for each ball I create in a file. I just want the simplest, most efficiant way of doing this.

 
% Shooter by Drew Martell

View.Set ("graphics,offscreenonly")
Mouse.ButtonChoose ("multibutton")
var xAxis, yAxis, bulletX, bulletY, button, sx, sy := 1 %starting variables
var ballx, bally := Rand.Int (100, 300) %starting location
var bullets, ammo := 2000 %sets amunition and max ammo
var rad := 10 %radius of ball
var score := 0 %how many times you hit the ball
var last : boolean %checks if right click is held
var scope := blue %colour of the scope
var line := black %lines of scope
var ballc := 47 %ball starting colour

process Sound %sound of walls
    Music.Sound (100, 70)
    Music.SoundOff
end Sound

procedure Background %refreshes background
    drawfillbox (0, 0, maxx, maxy, 11)
    drawbox (0, 0, maxx, maxy, black)
    drawfillbox (0, 50, maxx, 0, 49)
    drawbox (0, 50, maxx, 0, black)
    drawdot (bulletX, bulletY, black)
end Background

procedure Ball %ball to shoot
    drawfilloval (round (ballx), round (bally), rad, rad, ballc)     %ball body
    drawoval (round (ballx), round (bally), rad, rad, black)         %ball outline
    drawfilloval (round (ballx) - 3, round (bally) + 2, 1, 1, black)     %left eye
    drawfilloval (round (ballx) + 3, round (bally) + 2, 1, 1, black)     %right eye
    drawfillarc (round (ballx), round (bally) - 2, 2, 4, 180, 360, black)     %smile
    drawfilloval (round (ballx), round (bally), rad, rad, ballc)         %ball body
    drawoval (round (ballx), round (bally), rad, rad, black)         %ball outline
    drawfilloval (round (ballx) - 3, round (bally) + 2, 1, 1, black)     %left eye
    drawfilloval (round (ballx) + 3, round (bally) + 2, 1, 1, black)     %right eye
    drawfillarc (round (ballx), round (bally) - 2, 2, 4, 180, 360, black)     %smile
end Ball

loop %main program loop
    Mouse.Where (xAxis, yAxis, button) %detects mouse location
    Background %refreshes background
    Ball %draws ball

    %increases bouncy ball
    ballx += sx
    bally += sy

    %detemines boundaries and reflects
    if (bally = rad) or (bally = maxy - rad) then
        sy := -sy
        fork Sound
    elsif (ballx = rad) or (ballx = maxx - rad) then
        sx := -sx
        fork Sound
    end if

    if (button = 0) then   %checks for mouse status
        last := false
    end if

    if (button = 1) and (last = true) then   %checks for right click then left click
        Music.Sound (75, 25)
        delay (20)
        Music.Sound (35, 25)
        delay (20)
        Music.SoundOff
        
        bullets -= 7 %depletes your ammo
        bulletX := xAxis
        bulletY := yAxis
        
        %shakes new scope
        var shock := Rand.Int (-5, 5)
        var shock2 := Rand.Int (-3, 3)

        %draws new scope when shooting
        drawoval (xAxis + shock, yAxis + shock, 50, 50, brightred)
        drawoval (xAxis + shock, yAxis + shock, 40, 40, brightred)
        drawline (xAxis + 5 + shock2, yAxis + shock2, xAxis + 35 + shock2, yAxis + shock2, line)
        drawline (xAxis - 5 + shock2, yAxis + shock2, xAxis - 35 + shock2, yAxis + shock2, line)
        drawline (xAxis + shock2, yAxis + 5 + shock2, xAxis + shock2, yAxis + 35 + shock2, line)
        drawline (xAxis + shock2, yAxis - 5 + shock2, xAxis + shock2, yAxis - 35 + shock2, line)

        if whatdotcolour (xAxis, yAxis) = ballc and button = 1 then %determines if ball was hit
            score += 1 
        end if
    end if

    if (button = 10) then %reloads ammo
        bullets += 100
        if (bullets >= ammo) then
            bullets := ammo
        end if
    end if

    if (bullets 