Snake: Difference between revisions

Content added Content deleted
Line 1,672: Line 1,672:


=={{header|Craft Basic}}==
=={{header|Craft Basic}}==
<syntaxhighlight lang="basic">'Snake example game for Craft Basic
<syntaxhighlight lang="basic">rem Snake example game for Craft Basic
'by Gemino Smothers 2022
rem by Gemino Smothers 2022
rem www.lucidapogee.com


define gfxx = 330, gfxy = 296
define gfxx = 330, gfxy = 296
define upkey = 0, rightkey = 0, downkey = 0, leftkey = 0, esckey = 0
define upkey = 0, rightkey = 0, downkey = 0, leftkey = 0, esckey = 0
define speed = 0, delay = 0, score = 0, game = 1
define speed = 0, delay = 0, score = 0, game = 1
define maxsize = 1000, size = 9, direction = int: (rnd) * 4 + 1
define maxsize = 1000, size = 9, direction = int(rnd * 4) + 1
define rx = ( int: (rnd) * ( gfxx - 24 ) ) + 12
define rx = int(rnd * (gfxx - 24)) + 12
define ry = ( int: (rnd) * ( gfxy - 40 ) ) + 25
define ry = int(rnd * (gfxy - 40)) + 25


dim sx[maxsize]
dim sx[maxsize]
dim sy[maxsize]
dim sy[maxsize]

define fn (bounds) as sx[0] <= -10 or sx[0] >= gfxx or sy[0] <= -10 or sy[0] >= gfxy
define fn (collision) as sx[0] + 15 >= rx and sx[0] <= rx + 15 and sy[0] + 15 >= ry and sy[0] <= ry + 15
define fn (eatself) as sx[0] = sx[i] and sy[0] = sy[i]


let sx[0] = gfxx / 2
let sx[0] = gfxx / 2
Line 1,743: Line 1,740:


fgcolor 0, 80, 0
fgcolor 0, 80, 0
oval sx[size],sy[size],15,15
oval sx[size], sy[size], 15, 15


let i = size + 1
let i = size + 1
Line 1,752: Line 1,749:
let c = i - 1
let c = i - 1


if (eatself) = 1 then
if sx[0] = sx[i] and sy[0] = sy[i] = 1 then


let game = 0
let game = 0
Line 1,794: Line 1,791:
endif
endif


if sx[0] <= -10 or sx[0] >= gfxx or sy[0] <= -10 or sy[0] >= gfxy = 1 then
if (bounds) = 1 then


let game = 0
let game = 0
Line 1,800: Line 1,797:
endif
endif


if sx[0] + 15 >= rx and sx[0] <= rx + 15 and sy[0] + 15 >= ry and sy[0] <= ry + 15 = 1 then
if (collision) = 1 then

playwave "examples\tada.wav"


fgcolor 0, 80, 0
fgcolor 0, 80, 0
rect 0, 0, gfxx, gfxy
rect 0, 0, gfxx, gfxy


let rx = ( int: (rnd) * ( gfxx - 24 ) ) + 12
let rx = int(rnd * (gfxx - 24)) + 12
let ry = ( int: (rnd) * ( gfxy - 40 ) ) + 25
let ry = int(rnd * (gfxy - 40)) + 25


let size = size + 3
let size = size + 3
Line 1,820: Line 1,819:
oval rx + 9, ry + 5, 3, 3
oval rx + 9, ry + 5, 3, 3


fgcolor 255,255,0
fgcolor 255, 255, 0
cursor 1,1
cursor 1, 1
print "Score: ", score
print "Score: ", score


let delay = (clock)
let delay = clock


do
do
Line 1,830: Line 1,829:
wait
wait


loop (clock) < delay + speed
loop clock < delay + speed


loop esckey <> 1 and game = 1
loop esckey <> 1 and game = 1

playwave "examples\boom.wav"


alert "Game over! Score: ", score
alert "Game over! Score: ", score