rendered paste bodymenu * {
Snake
.Snake:/Snake
.MultiPlayer:echo -a Coming Soon!
.Make Levels:/MakeSnake
}
alias snake {
unset %sn.*
if ($window(@Snake)) window -c @Snake
window -Ckpd +btn @Snake -1 -1 217 261
if (!$hget(Snake,Record)) hadd -m Snake Record 0
if (!$hget(Snake,Speed)) hadd -m Snake Speed 1
drawfill -r @snake $rgb(135,35,35) 1 1 1
set %sn.menu 1
hl
}
alias -l hl {
drawfill -r @snake $rgb(135,35,35) 1 1 1
drawtext -ro @Snake $rgb(10,10,10) Arial 48 23 16 SNAKE
drawtext -ro @Snake $rgb(250,250,250) Arial 48 19 12 SNAKE
if (%sn.menu == 1) {
drawrect -rf @Snake $rgb(250,100,100) 1 63 75 83 15
drawrect -r @Snake $rgb(200,150,150) 1 63 75 83 15
}
drawtext -r @Snake $rgb(250,250,250) Fixedsys 8 64 75 Start Game
if (%sn.menu == 2) {
drawrect -rf @Snake $rgb(250,100,100) 1 60 111 90 15
drawrect -r @Snake $rgb(200,150,150) 1 60 111 90 15
}
drawtext -r @Snake $rgb(250,250,250) Fixedsys 8 61 110 MultiPlayer
if (%sn.menu == 3) {
drawrect -rf @Snake $rgb(250,100,100) 1 60 126 $calc(67 + (8 * $len($hget(Snake,record)))) 15
drawrect -r @Snake $rgb(200,150,150) 1 60 126 $calc(67 + (8 * $len($hget(Snake,record)))) 15
}
drawtext -r @Snake $rgb(250,250,250) Fixedsys 8 61 125 Record: $hget(Snake,record)
if (%sn.menu == 4) {
drawrect -rf @Snake $rgb(250,100,100) 1 67 196 72 15
drawrect -r @Snake $rgb(200,150,150) 1 67 196 72 15
}
drawtext -r @Snake $rgb(250,250,250) Fixedsys 8 68 195 Exit Game
}
on *:keydown:@snake:13,32,37,38,39,40,80:{
if (%sn.ake == Game Over) halt
if (!%sn.ake) {
if ($istok(13.32.39,$keyval,46)) {
if (%sn.menu == 1) {
NewSnake
}
if (%sn.menu == 4) {
window -c @snake
unset %sn.*
}
if (%sn.menu == 2) {
echo -a Coming soon!
}
}
if ($keyval == 40) {
if (%sn.menu < 4) inc %sn.menu
else dec %sn.menu 3
hl
}
if ($keyval == 38) {
if (%sn.menu > 1) dec %sn.menu
else inc %sn.menu 3
hl
}
}
else {
if (!%sn.pause) {
if ($keyval == 37) && (%sn.dir != esq) set %sn.mov $iif(%sn.mov,$ifmatch esq,esq)
elseif ($keyval == 40) && (%sn.dir != bai) set %sn.mov $iif(%sn.mov,$ifmatch bai,bai)
elseif ($keyval == 39) && (%sn.dir != dir) set %sn.mov $iif(%sn.mov,$ifmatch dir,dir)
elseif ($keyval == 38) && (%sn.dir != cim) set %sn.mov $iif(%sn.mov,$ifmatch cim,cim)
}
if ($keyval == 80) {
if (%sn.pause) {
unset %sn.pause
}
elseif (!%sn.pause) {
set %sn.pause ON
}
}
}
}
alias -l NewSnake {
set %Sn.ake on
drawfill -r @snake $rgb(135,35,35) 1 1 1
drawline -r @Snake 0 1 5 30 5 221
var %x = 1
while (%x < 21) {
drawline -r @Snake 0 1 $calc(%x *10+5) 30 $calc(%x *10+5) 221
drawline -r @Snake 0 1 5 $calc((%x -1) *10+30) 205 $calc((%x -1) *10+30)
inc %x 1
}
set %sn.time 20
set %sn.pos 1x3 1x2 1x1 1x-1
set %sn.frame 0
set %sn.points 0
.timerSnake -m 0 100 DrawSnake
}
on *:CLOSE:@Snake: {
unset %sn.*
.timersnake off
}
alias -l DrawSnake {
if (%sn.pause != on) {
inc %sn.frame
if (!%sn.dir) && (%sn.mov) set %sn.intime $ctime
var %w = $gettok(%sn.mov,1,32), %x = $gettok($gettok(%sn.pos,1,32),1,120), %y = $gettok($gettok(%sn.pos,1,32),2,120)
if (%w == dir) && (%sn.dir != dir) && (%sn.dir != esq) {
set %sn.pos $+($calc(%x +1),x,%y) $deltok(%sn.pos,-1,32) | set %sn.dir dir
}
elseif (%w == esq) && (%sn.dir) && (%sn.dir != esq) && (%sn.dir != dir) {
set %sn.pos $+($calc(%x -1),x,%y) $deltok(%sn.pos,-1,32) | set %sn.dir esq
}
elseif (%w == bai) && (%sn.dir != bai) && (%sn.dir != cim) {
set %sn.pos $+(%x,x,$calc(%y +1)) $deltok(%sn.pos,-1,32) | set %sn.dir bai
}
elseif (%w == cim) && (%sn.dir) && (%sn.dir != cim) && (%sn.dir != bai) {
set %sn.pos $+(%x,x,$calc(%y -1)) $deltok(%sn.pos,-1,32) | set %sn.dir cim
}
else {
if (%sn.dir == dir) set %sn.pos $+($calc(%x +1),x,%y) $deltok(%sn.pos,-1,32)
if (%sn.dir == esq) set %sn.pos $+($calc(%x -1),x,%y) $deltok(%sn.pos,-1,32)
if (%sn.dir == bai) set %sn.pos $+(%x,x,$calc(%y +1)) $deltok(%sn.pos,-1,32)
if (%sn.dir == cim) set %sn.pos $+(%x,x,$calc(%y -1)) $deltok(%sn.pos,-1,32)
}
var %x = $gettok($gettok(%sn.pos,1,32),1,120), %y = $gettok($gettok(%sn.pos,1,32),2,120)
if (%x == $gettok(%sn.potion,1,32)) && (%y == $gettok(%sn.potion,2,32)) {
unset %sn.potion
set %sn.pos %sn.pos $+($calc((%x +1)/10-6),x,$calc((%y +1)/10-31))
inc %sn.points 10
}
var %p = 2
while ($gettok(%sn.pos,%p,32)) {
var %pos = $v1
if ($+(%x,x,%y) == %pos) { Game-Over | .timerSnake off | halt }
inc %p
}
if (%y == 0) || (%x == 0) || (%y > 19) || (%x > 20) { Game-Over | .timerSnake off | halt }
set %sn.mov $deltok(%sn.mov,1,32)
var %n = $gettok(%sn.pos,0,32), %i = 1
while (%i <= %n) {
var %x = $gettok($gettok(%sn.pos,%i,32),1,120), %y = $gettok($gettok(%sn.pos,%i,32),2,120)
if (%i == 1) drawrect -rfd @Snake $rgb(200,230,190) 1 $calc((%x -1)*10+6) $calc((%y -1)*10+31) 9 9 2 2
else drawrect -rfd @Snake $rgb(150,180,140) 1 $calc((%x -1)*10+6) $calc((%y -1)*10+31) 9 9 2 2
if (%n == %i) drawrect -rfd @Snake $rgb(135,35,35) 1 $calc((%x -1)*10+6) $calc((%y -1)*10+31) 9 9 2 2
inc %i
}
if (!%sn.potion) {
:pot
var %n = $+($rand(1,20),x,$rand(1,19))
if (%n !isin %sn.pos) set %sn.potion $replace(%n,x,$chr(32))
else goto pot
}
apple
if ($asctime($calc($ctime - %sn.intime),nn:ss) != 00:00) {
drawrect -rf @Snake $rgb(135,35,35) 1 12 2 $window(@Snake).w 15
drawtext -ro @Snake $rgb(10,10,10) Arial 14 13 3 Points: %sn.points
drawtext -ro @Snake $rgb(250,250,250) Arial 14 11 4 Points: %sn.points
drawtext -ro @Snake $rgb(10,10,10) Arial 14 120 3 TIME: $iif(%sn.intime,$asctime($calc($ctime - %sn.intime),nn:ss),00:00)
drawtext -ro @Snake $rgb(250,250,250) Arial 14 118 4 TIME: $iif(%sn.intime,$asctime($calc($ctime - %sn.intime),nn:ss),00:00)
}
}
}
alias -l Game-Over {
drawrect -rfd @snake $rgb(0,0,0) 1 45 90 121 71 1 1
drawrect -rd @snake $rgb(255,255,255) 1 45 90 121 71 1 1
drawtext -r @snake $rgb(255,255,255) Terminal 8 78 95 Game Over
if (%sn.points > $hget(Snake,Record)) {
hadd -m Snake Record %sn.points
drawtext -r @snake $rgb(255,255,255) Terminal 8 84 115 Record:
}
else drawtext -r @snake $rgb(255,255,255) Terminal 8 84 115 Points:
drawtext -r @snake $rgb(255,255,255) Terminal 8 84 128 %sn.points
drawtext -r @snake $rgb(255,255,255) Terminal 8 57 148 Click to restart
set %sn.ake Game Over
}
menu @Snake {
sclick {
if (%sn.ake == Game Over) {
unset %sn.*
newsnake
}
}
}
alias -l apple {
drawrect -rfe @Snake $rgb(250,0,0) 1 $calc(($gettok(%sn.potion,1,32) -1)*10+6) $calc(($gettok(%sn.potion,2,32) -1)*10+31) 9 9
drawrect -re @Snake $rgb(250,250,250) 1 $calc(($gettok(%sn.potion,1,32) -1)*10+6) $calc(($gettok(%sn.potion,2,32) -1)*10+31) 9 9
drawline -r @Snake $rgb(0,250,0) 1 $calc(($gettok(%sn.potion,1,32) -1)*10+10) $calc(($gettok(%sn.potion,2,32) -1)*10+31) $&
$calc(($gettok(%sn.potion,1,32) -1)*10+10) $calc(($gettok(%sn.potion,2,32) -1)*10+34)
}