124 lines
1.9 KiB
Plaintext
124 lines
1.9 KiB
Plaintext
subr fruit
|
|
rx = (randint 20 - 1) * 5 + 2.5
|
|
ry = (randint 20 - 1) * 5 + 2.5
|
|
.
|
|
subr start
|
|
fruit
|
|
game = 1
|
|
sx[] = [ 52.5 0 0 0 0 ]
|
|
sy[] = [ 52.5 0 0 0 0 ]
|
|
dir = randint 4
|
|
timer 0
|
|
.
|
|
background 242
|
|
move 30 70
|
|
clear
|
|
color 997
|
|
text "SNAKE"
|
|
textsize 5
|
|
move 6 40
|
|
text "Keys or mouse for controlling"
|
|
move 6 30
|
|
text "Space or click to to start"
|
|
#
|
|
on key
|
|
if game = 0 and keybkey = " "
|
|
start
|
|
return
|
|
.
|
|
if dir mod 2 = 1
|
|
if keybkey = "ArrowRight"
|
|
dir = 2
|
|
elif keybkey = "ArrowLeft"
|
|
dir = 4
|
|
.
|
|
else
|
|
if keybkey = "ArrowUp"
|
|
dir = 1
|
|
elif keybkey = "ArrowDown"
|
|
dir = 3
|
|
.
|
|
.
|
|
.
|
|
on mouse_down
|
|
if game = 0
|
|
start
|
|
return
|
|
.
|
|
if dir mod 2 = 1
|
|
if mouse_x < sx
|
|
dir = 4
|
|
else
|
|
dir = 2
|
|
.
|
|
else
|
|
if mouse_y < sy
|
|
dir = 3
|
|
else
|
|
dir = 1
|
|
.
|
|
.
|
|
.
|
|
on timer
|
|
clear
|
|
color 997
|
|
move 2 95
|
|
text "Score: " & 10 * len sx[] - 50
|
|
color 966
|
|
move rx ry
|
|
circle 1.5
|
|
#
|
|
sx = sx[1] ; sy = sy[1]
|
|
if dir = 1
|
|
sy += 5
|
|
elif dir = 2
|
|
sx += 5
|
|
elif dir = 3
|
|
sy -= 5
|
|
elif dir = 4
|
|
sx -= 5
|
|
.
|
|
if sx < 0 or sx > 100 or sy < 0 or sy > 100
|
|
game = 0
|
|
.
|
|
color 494
|
|
for i = len sx[] downto 2
|
|
if sx = sx[i] and sy = sy[i]
|
|
game = 0
|
|
.
|
|
sx[i] = sx[i - 1]
|
|
sy[i] = sy[i - 1]
|
|
if sx[i] > 0
|
|
move sx[i] sy[i]
|
|
circle 2.5
|
|
.
|
|
.
|
|
move sx sy
|
|
circle 2.5
|
|
color 000
|
|
if dir = 2 or dir = 4
|
|
move sx sy + 1
|
|
circle 0.5
|
|
move sx sy - 1
|
|
circle 0.5
|
|
else
|
|
move sx + 1 sy
|
|
circle 0.5
|
|
move sx - 1 sy
|
|
circle 0.5
|
|
.
|
|
if sx = rx and sy = ry
|
|
len sx[] len sx[] + 3
|
|
len sy[] len sy[] + 3
|
|
fruit
|
|
.
|
|
sx[1] = sx ; sy[1] = sy
|
|
if game = 1
|
|
timer 0.15
|
|
else
|
|
color 997
|
|
move 10 10
|
|
text "Space or click new game"
|
|
.
|
|
.
|