var x : int := 100
 
var y : int := 410
 
var x2 : int := 100
 
var y2 : int := 70
 
var jet1nofire : int
 
var jet1fire : int
 
var jet2nofire : int
 
var jet2fire : int
 
var Clouds : int
 
var Clouds2 : int
 
var Clouds3 : int
 
var Clouds4 : int
 
var skywidth, skyheight : int := 0
 
var skywidth2, skyheight2 : int := 0
 
var skywidth3, skyheight3 : int := 0
 
var skywidth4, skyheight4 : int := 0
 
var skyx, skyy : int := 0
 
var skyxedge : int := 640
 
var skyyedge : int := 480
 
Clouds := Pic.FileNew ("Clouds.bmp")
 
Clouds2 := Pic.FileNew ("Clouds.bmp")
 
Clouds2 := Pic.Mirror (Clouds2)
 
Clouds3 := Pic.FileNew ("Clouds.bmp")
 
Clouds3 := Pic.Flip (Clouds3)
 
Clouds4 := Pic.FileNew ("Clouds.bmp")
 
Clouds4 := Pic.Flip (Clouds4)
 
Clouds4 := Pic.Mirror (Clouds4)
 
jet1nofire := Pic.FileNew ("jet1nofire.bmp")
 
Pic.SetTransparentColour (jet1nofire, white)
 
jet1fire := Pic.FileNew ("jet1fire.bmp")
 
Pic.SetTransparentColour (jet1fire, white)
 
jet2nofire := Pic.FileNew ("jet2nofire.bmp")
 
Pic.SetTransparentColour (jet2nofire, white)
 
jet2fire := Pic.FileNew ("jet2fire.bmp")
 
Pic.SetTransparentColour (jet2fire, white)
 
var jethealth1 : real := 100
 
var jethealth2 : real := 100
 
var score1 : int := 0
 
var score2 : int := 0
 
var bullets : int
 
var bullets2 : int
 
const uparrow : char := chr (200)
 
const leftarrow : char := chr (203)
 
const rightarrow : char := chr (205)
 
const downarrow : char := chr (208)
 
const ctrl : char := chr (181)
 
const w : char := chr (119)
 
const a : char := chr (97)
 
const d : char := chr (100)
 
const s : char := chr (115)
 
const f : char := chr (102)
 
var choice : string
 
var keys : array char of boolean
 
 
View.Set ("offscreenonly")
 
setscreen ("graphics:max;max,noecho,offscreenonly,nocursor,nobuttonbar")
 
 
procedure drawscreen
 
    skywidth := Pic.Width (Clouds)
 
    skyheight := Pic.Height (Clouds)
 
    skywidth2 := Pic.Width (Clouds2)
 
    skyheight2 := Pic.Height (Clouds2)
 
    skywidth3 := Pic.Width (Clouds3)
 
    skyheight3 := Pic.Height (Clouds3)
 
    skywidth4 := Pic.Width (Clouds4)
 
    skyheight4 := Pic.Height (Clouds4)
 
    Pic.Draw (Clouds, -skyx, -skyy, picUnderMerge)
 
    Pic.Draw (Clouds2, skyxedge, -skyy, picUnderMerge)
 
    Pic.Draw (Clouds3, -skyx, skyyedge, picUnderMerge)
 
    Pic.Draw (Clouds4, skyxedge, skyyedge, picUnderMerge)
 
    locate (1, 1)
 
    put "Player 1:", "" : 2, "Health: ", jethealth1 ..
 
    put " ", "Score: ", score1
 
    put "Player 2:", "" : 2, "Health: ", jethealth2 ..
 
    put " ", "Score: ", score2
 
end drawscreen
 
 
colourback (black)
 
colour (brightred)
 
 
drawscreen
 
colourback (black)
 
colour (brightred)
 
 
Pic.Draw (jet1nofire, x, y, picMerge)
 
Pic.Draw (jet2nofire, x2, y2, picMerge)
 
delay (2000)
 
loop
 
    exit when jethealth1 <= 0 and jethealth2 <= 0
 
    %player 1
 
    Input.KeyDown (keys)
 
 
    if keys (uparrow) then
 
        y := y + 2
 
        delay (5)
 
        cls
 
        View.Update
 
        drawscreen
 
        Pic.Draw (jet1nofire, x, y, picMerge)
 
 
    end if
 
    if keys (downarrow) then
 
        y := y - 2
 
        delay (5)
 
        cls
 
        View.Update
 
        drawscreen
 
        Pic.Draw (jet1nofire, x, y, picMerge)
 
    end if
 
    if keys (rightarrow) then
 
        x := x + 4
 
        delay (5)
 
        cls
 
        View.Update
 
        drawscreen
 
        Pic.Draw (jet1fire, x, y, picMerge)
 
    end if
 
    if keys (leftarrow) then
 
        x := x - 4
 
        delay (5)
 
        cls
 
        View.Update
 
        drawscreen
 
        Pic.Draw (jet1nofire, x, y, picMerge)
 
    end if
 
    if keys (ctrl) then
 
        randint (bullets, 1, 5)
 
        for shot : 1 .. 15
 
            drawline (x + 22 + shot * 20 + bullets, y + 22, x + 24 + shot * 20 + bullets, y + 22, 12)
 
            drawline (x + 22 + shot * 20 + bullets, y + 39, x + 24 + shot * 20 + bullets, y + 39, 12)
 
            drawline (x + 20 + shot * 20 + bullets, y + 22, x + 23 + shot * 20 + bullets, y + 22, 15)
 
            drawline (x + 20 + shot * 20 + bullets, y + 39, x + 23 + shot * 20 + bullets, y + 39, 15)
 
            delay (5)
 
        end for
 
        cls
 
        View.Update
 
        drawscreen
 
 
    end if
 
    %player 2
 
 
    if keys (w) then
 
        y2 := y2 + 2
 
        delay (5)
 
        cls
 
        View.Update
 
        drawscreen
 
        Pic.Draw (jet2nofire, x2, y2, picMerge)
 
    end if
 
    if keys (s) then
 
        y2 := y2 - 2
 
        delay (5)
 
        cls
 
        View.Update
 
        drawscreen
 
        Pic.Draw (jet2nofire, x2, y2, picMerge)
 
    end if
 
    if keys (d) then
 
        x2 := x2 + 4
 
        delay (5)
 
        cls
 
        View.Update
 
        drawscreen
 
        Pic.Draw (jet2fire, x2, y2, picMerge)
 
    end if
 
    if keys (a) then
 
        x2 := x2 - 4
 
        delay (5)
 
        cls
 
        View.Update
 
        drawscreen
 
        Pic.Draw (jet2nofire, x2, y2, picMerge)
 
    end if
 
    if keys (f) then
 
        randint (bullets2, 1, 5)
 
        for shot2 : 1 .. 15
 
            drawline (x2 + 22 + shot2 * 20 + bullets2, y2 + 23, x2 + 24 + shot2 * 20 + bullets2, y2 + 23, 12)
 
            drawline (x2 + 22 + shot2 * 20 + bullets2, y2 + 41, x2 + 24 + shot2 * 20 + bullets2, y2 + 41, 12)
 
            drawline (x2 + 20 + shot2 * 20 + bullets2, y2 + 23, x2 + 23 + shot2 * 20 + bullets2, y2 + 23, 15)
 
            drawline (x2 + 20 + shot2 * 20 + bullets2, y2 + 41, x2 + 23 + shot2 * 20 + bullets2, y2 + 41, 15)
 
            delay (5)
 
        end for
 
        cls
 
        View.Update
 
        drawscreen
 
    end if
 
end loop
 
cls
 
put "Game Over"
 
  |