var col : int := 31
var countdown : int := 6
var ballx1 : int := 200
var bally1 : int := 150
var ballsize : int := 5
var move, move2, move3, move4 := false
var key : array char of boolean
var ring : int := 0
var answer : string
move3 := true %starting direction of snake
var newMaxX : int := 500 %innitial screen dimensions (x co-ords)
var newMaxY : int := 400 %innitial screen dimensions (y co-ords)
var levelUpX : int := 50 %decrease in screen dimensions (x co-ords) upon completion of level
var levelUpY :int :=40 %decrease in screen dimensions (y co-ords) upon completion of level
var scoreLevel : int := 50
var foodBoolean :boolean
var score : int :=0 %score
var bonus:int:=60000 %1 min to be able to get bonus
var timeBonus:int :=bonus-Time.Elapsed
var scoreOverall:int :=score+timeBonus
%gives time for user to get ready
loop
locate (12, 25)
put "Starting in...", countdown - 1
delay (300)
countdown := countdown - 1
cls
exit when countdown = 0
end loop
%creates food in random locations
procedure food
randint (food1, 1, newMaxX-10) %random food location (but not in the walls)
randint (food2, 1, newMaxY-10) %random food location (but not in the walls)
randint (foodSize, 2, 10) %random food size
drawfilloval (food1, food2, foodSize, foodSize, 2)
end food
%point of contact upon death
procedure ringEnd
loop
drawoval (ballx1, bally1, ballsize + ring, ballsize + ring, ring)
ring += 2
delay (10)
exit when ring = 100
end loop
end ringEnd
%draws food
food
%snake movement
loop
drawbox (box1, newMaxY-1, newMaxX-1, box4, 7)
drawfilloval (ballx1, bally1, ballsize, ballsize, col)
if move then
bally1 += 1
elsif move2 then
bally1 -= 1
elsif move3 then
ballx1 += 1
elsif move4 then
ballx1 -= 1
end if
Input.KeyDown (key)
if key (KEY_UP_ARROW) and move2 = false then %Two Conditions: 1. up arrow is pressed 2. move2 = false
move2 := false
move3 := false
move4 := false
move := true
elsif key (KEY_DOWN_ARROW) and move = false then %Two Conditions: 1. down arrow is pressed 2. move = false
move := false
move3 := false
move4 := false
move2 := true
elsif key (KEY_RIGHT_ARROW) and move4 = false then %Two Conditions: 1. right arrow is pressed 2. move4 = false
move := false
move2 := false
move4 := false
move3 := true
elsif key (KEY_LEFT_ARROW) and move3 = false then %Two Conditions: 1. left arrow is pressed 2. move3 = false
move := false
move2 := false
move3 := false
move4 := true
end if
drawfilloval (ballx1, bally1, ballsize, ballsize, 12) %deletes the tail
delay (10)
%wall collision detection
if ballx1 = 4 or ballx1 = maxx - 4 or bally1 = 4 or bally1 = maxy - 4 then
View.Set ("graphics:" + intstr (newMaxX) + ";" + intstr (newMaxY) + ",title:Uncle Worm Score: " + intstr (score) + " You Lose!")
ringEnd
exit
end if
%food collision detection
if whatdotcolour (food1 + foodSize, food2 + foodSize) = 12 or whatdotcolour (food1 - foodSize, food2 - foodSize) = 12
then
score += 10 %when food collision detected points are added to score
View.Set ("graphics:" + intstr (newMaxX) + ";" + intstr (newMaxY) + ",title:Uncle Worm Score: " + intstr (score))
drawfilloval (food1, food2, foodSize, foodSize, white) %so that no chunk of food is left behind
food
end if
%NEXT LEVEL
if score >= scoreLevel
then
drawfillbox ((maxx div 2) - 10, maxy, (maxx div 2) + 10, maxy - 5, 4)
end if
if whatdotcolour (ballx1+ballsize,bally1+ballsize)=4
then cls
put "Your score is: ", score
put "Your time bonus is: ", timeBonus
put "Your overall score is: ", scoreOverall
put "[press any key to continue to next round]"
Input.Pause
newMaxX:=newMaxX-levelUpX
newMaxY:=newMaxY-levelUpY
View.Set ("graphics:" + intstr (newMaxX) + ";" + intstr (newMaxY) + ",title:Uncle Worm Score: " + intstr (score))
ballx1:=newMaxX div 2 %new x co-ords for the start of a new level
bally1:=newMaxY div 2 %new y co-ords for the start of a new level
food
scoreLevel:=score+50
end if
end loop
View.Update
|