123 lines
1.9 KiB
Plaintext
123 lines
1.9 KiB
Plaintext
subr fruit
|
|
rx = (random 20 - 1) * 5 + 2.5
|
|
ry = (random 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 = random 4
|
|
timer 0
|
|
.
|
|
gbackground 242
|
|
gclear
|
|
gcolor 997
|
|
gtext 30 70 "SNAKE"
|
|
gtextsize 5
|
|
gtext 6 40 "Keys or mouse for controlling"
|
|
gtext 6 30 "Space or click to start"
|
|
#
|
|
on key_down
|
|
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
|
|
.
|
|
.
|
|
.
|
|
proc over .
|
|
gcolor 997
|
|
gtext 10 10 "Space or click for new game"
|
|
game = 2
|
|
timer 1
|
|
.
|
|
on timer
|
|
if game = 2
|
|
game = 0
|
|
return
|
|
.
|
|
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
|
|
over
|
|
return
|
|
.
|
|
for i = len sx[] downto 2
|
|
if sx = sx[i] and sy = sy[i]
|
|
over
|
|
return
|
|
.
|
|
.
|
|
gclear
|
|
gcolor 997
|
|
gtext 2 95 "Score: " & 10 * len sx[] - 50
|
|
gcolor 966
|
|
gcircle rx ry 1.5
|
|
#
|
|
gcolor 494
|
|
for i = len sx[] downto 2
|
|
sx[i] = sx[i - 1]
|
|
sy[i] = sy[i - 1]
|
|
if sx[i] > 0
|
|
gcircle sx[i] sy[i] 2.5
|
|
.
|
|
.
|
|
gcircle sx sy 2.5
|
|
gcolor 000
|
|
if dir = 2 or dir = 4
|
|
gcircle sx sy + 1 0.5
|
|
gcircle sx sy - 1 0.5
|
|
else
|
|
gcircle sx + 1 sy 0.5
|
|
gcircle sx - 1 sy 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
|
|
timer 0.15
|
|
.
|