All pastes #24598 Raw Edit

Stuff

public text v1 · immutable
#24598 ·published 2005-10-04 17:14 UTC
rendered paste body
/* Pooyan Game...
 ---------------- POOYAN --------------------
 -   TODO:                                  -
 - * passes level one when x wolves killed  -
 - * fails level when x wolves reach bottom -
 - * add a splash screen, restart option    -
 - * add difficulty levels                  -
 - * make the wolves move up the screen and -
 -   attack you                             -
 - * add a second level, when wolves move ^ -
 */
View.Set ("graphics:225,256;offscreenonly;title:Pooyan;position:center,center;nocursor")

% Declares the pictures, fonts
var arrow : int := Pic.FileNew ("pic1.jpg")
var chars : array char of boolean
var tahomaLarge : int := Font.New ("tahoma:12:bold")

proc refreshScreen (charY : int)
    drawline (200, 35, 200, 240, 114)
    drawline (180, 35, 180, 240, 114)
    drawfillbox (185, charY, 195, charY + 20, blue)
    for y : 50 .. 240 by 15
        drawline (180, y, 200, y, 114)
    end for
end refreshScreen

proc moveChar (var y : int)
    refreshScreen (y)
    Input.KeyDown (chars)
    if chars (KEY_UP_ARROW) and y < 220 then
        y += 5
    elsif chars (KEY_DOWN_ARROW) and y > 57 then
        y -= 5
    end if
    delay (10)
    drawfillbox (185, y, 195, y + 20, red)
end moveChar

proc drawScreen
    drawfill (0, 0, blue, blue)
    drawfillbox (0, 0, maxx, 30, 114)
    drawfillbox (0, 30, maxx, 35, green)
    drawline (200, 35, 200, 240, 114)
    drawline (180, 35, 180, 240, 114)
    for y : 50 .. 240 by 15
        drawline (180, y, 200, y, 114)
    end for
end drawScreen

proc arrowShoot (var ax, ay : int, charY : int, var arrowShot : boolean)
    var y : int
    Input.KeyDown (chars)
    if chars (KEY_CTRL) and arrowShot = false then
        arrowShot := true
        ax := 180
        ay := charY
    end if
    if arrowShot = true and ax > 0 then
        drawfillbox (ax, ay, ax + 30, ay + 14, blue)
        ax -= 10
        Pic.Draw (arrow, ax, ay, picMerge)
    elsif arrowShot = true and ax < 5 then
        arrowShot := false
        drawfillbox (ax, ay, ax + 30, ay + 14, blue)
    end if
end arrowShoot

proc dropWolf (var wx, wy, tempX, moveStage : int, var wolfFallFlag, deadWolf : boolean)
    if wolfFallFlag = false and moveStage = 1 then
        randint (wx, 0, 150)
        wolfFallFlag := true
        wy := 215
        tempX := 0
        moveStage := 2
    end if

    if wolfFallFlag = false and moveStage not= 1 then
        moveStage := 1
    end if

    if wolfFallFlag = true and moveStage = 2 and tempX < wx - 4 then
        drawfilloval (tempX, 215, 7, 7, blue)
        delay (10)
        tempX += 4
        drawfilloval (tempX, 215, 7, 7, green)
    elsif wolfFallFlag = true and moveStage = 2 and tempX >= (wx - 4) then
        moveStage := 3
    end if

    if wolfFallFlag = true and moveStage = 3 and wy > 45 then
        drawfilloval (wx, wy, 7, 7, blue)
        wy -= 5
        delay (20)
        drawfilloval (wx, wy, 7, 7, green)
    elsif wolfFallFlag = true and wy < 45 and moveStage = 3 then
        drawfillbox (0, 36, maxx - 50, 60, blue)
        wolfFallFlag := false
    end if

    if deadWolf = true and wolfFallFlag = true and wy > 45 then
        drawfilloval (wx, wy, 7, 7, blue)
        wy -= 2
        delay (20)
        drawfilloval (wx, wy, 7, 7, red)
    elsif deadWolf = true and wy < 50 then
        drawfilloval (wx, wy, 7, 7, blue)
        deadWolf := false
        wolfFallFlag := false
    end if
end dropWolf

proc hitWolf (ax, ay, wx, wy : int, var score : int, var deadWolf, wolfFallFlag, arrowShot : boolean)
    if ax - 7 <= wx + 10 and ax - 7 >= wx - 10 and ay + 7 <= wy + 10 and ay + 7 >= wy - 10 and deadWolf = false then
        deadWolf := true
        arrowShot := false
        score += 1
        drawfillbox (ax, ay, ax + 30, ay + 14, blue)
    end if
end hitWolf

proc hudUpdate (var score : int)
    drawfillbox (0, 220, maxx, maxy, black)
    Font.Draw ("Score: " + intstr (score), 0, 230, tahomaLarge, white)
end hudUpdate
% --------- Main Program
var charY : int := 100
var mx, my, mb : int
var wx, wy, ax, ay : int := 1
var arrowShot, deadWolf, wolfFallFlag : boolean := false
var score := 0
var tempX : int := 10
var moveStage : int := 1


drawScreen
loop
    mousewhere (mx, my, mb)
    refreshScreen (charY)
    hudUpdate (score)
    moveChar (charY)
    dropWolf (wx, wy, tempX, moveStage, wolfFallFlag, deadWolf)
    arrowShoot (ax, ay, charY, arrowShot)
    hitWolf (ax, ay, wx, wy, score, deadWolf, wolfFallFlag, arrowShot)
    View.Update
    locate (9, 12)
    put moveStage
end loop