View.Set ("graphics:max,max")
var x, y, groundy, layery, jumpup, jumpheight, shotx, shoty, scrollm : int
var jumpFlag, dblJumpFlag, dashFlag, shootFlag : boolean := false
var direction : boolean := true
shotx := 0
shoty := 0
scrollm := 0
x := 200
y := 54
jumpup := 20
jumpheight := jumpup
groundy := 50
layery := groundy
View.Set ("offscreenonly")
var chars : array char of boolean
proc ground
%drawfill (1, groundy + 1, blue, black)
drawline (0, layery, maxx, layery, black)
Draw.DashedLine (50, 0, 50, maxy, drawDot, red)
Draw.DashedLine (maxx - 50, 0, maxx - 50, maxy, drawDot, red)
Draw.DashedLine (100, 0, 100, maxy, drawDot, red)
Draw.DashedLine (maxx - 100, 0, maxx - 100, maxy, drawDot, red)
end ground
proc scroll
if x >= maxx - 100 then
scrollm := scrollm + 10
elsif
x <= 100 then
scrollm := scrollm - 10
end if
if x >= maxx - 50 then
scrollm := scrollm + 30
elsif
x <= 50 then
scrollm := scrollm - 30
end if
%Draws a Background
drawline (1300 - scrollm, layery, 1325 - scrollm, 100, black)
drawline (1325 - scrollm, 100, 1350 - scrollm, layery, black)
drawoval (1400 - scrollm, layery + 500, 50, 50, black)
drawfill (1401 - scrollm, layery + 501, yellow, black)
% Platform Test
drawbox (500 - scrollm, 30 + layery, 600 - scrollm, 40 + layery, black)
if x >= 500 - scrollm and x <= 600 - scrollm and y > 40 + layery then
groundy := layery + 40
elsif x <= 500 - scrollm +5 and x >= 600 - scrollm +5 and y > layery then %and y-4 < groundy then
y := layery
groundy := layery
% locate (3, 1)
% put "OMG NOOB PLATFORM"
% groundy := layery
% if y <= 30 + layery then
% y -= 1
% y := groundy
% end if
end if
end scroll
proc jump
if jumpFlag = true then
y += jumpup
jumpup -= 1
if y <= jumpheight then
jumpFlag := false
y := groundy + 4
jumpup := 20
end if
end if
end jump
proc dblJump
if dblJumpFlag = true then
y += jumpup * 2
jumpup -= 1
if y <= jumpheight then
dblJumpFlag := false
y := groundy + 4
jumpup := 20
end if
end if
end dblJump
proc dash
if dashFlag = true then
if direction = true then
x += 20
elsif direction = false then
x -= 20
end if
end if
dashFlag := false
end dash
proc shoot
if shootFlag = true then
shotx := x
shoty := y
if direction = true then
shotx += 10
drawfilloval (shotx, shoty, 4, 2, yellow)
%drawline(shotx, shoty,maxx,shoty,yellow)
Draw.DashedLine (shotx, shoty, maxx, shoty, drawDot, red)
shootFlag := false
elsif direction = false then
shotx -= 10
drawfilloval (shotx, shoty, 4, 2, yellow)
%drawline(shotx, shoty,0,shoty,yellow)
Draw.DashedLine (shotx, shoty, 0, shoty, drawDot, red)
shootFlag := false
end if
if shotx >= maxx and shotx <= 0 then
shootFlag := false
end if
end if
%shootFlag := false
end shoot
proc move
Input.KeyDown (chars)
if chars (KEY_UP_ARROW) and jumpFlag = false then
jumpFlag := true
end if
if chars (KEY_RIGHT_ARROW) then
x := x + 5
direction := true
end if
if chars (KEY_LEFT_ARROW) then
x := x - 5
direction := false
end if
if chars (KEY_DOWN_ARROW) then %and y >= groundy + 9 then
%y := y - 5
dashFlag := true
end if
if chars (KEY_CTRL) then
shootFlag := true
end if
if chars (KEY_SHIFT) then
dblJumpFlag := true
end if
end move
loop
scroll
ground
move
dash
dblJump
jump
shoot
drawoval (x, y, 4, 4, red)
delay (10)
View.Update
cls
locate (1, 1)
put jumpFlag, " ", dblJumpFlag, " ", direction, " ", scrollm ..
locate (2, 1)
put x, " x", y, " y", "layery", layery, "groundy", groundy ..
end loop
|