; PizzaStyle v1.0 by Darkie ; Snake game alias snake { window -pozdk0 +tnbL @snake.menu -1 -1 200 150 window -r @snake.menu set %selected 1 set %menulevel $iif($1,$1,1) if (%backcolour !isnum) { set %backcolour 10 set %snakecolour 5 set %textcolour 8 set %applecolour 4 } if (!%snakelevel) { set %snakelevel 1 } if (!%highscore) { set %highscore 0 } updmenu .timerupdmenu -m 0 100 updmenu } alias updmenu { hfree -w menu* if (!$window(@Snake.menu)) { .timerupdmenu off | return } clear -n @snake.menu drawrect -fn @snake.menu %backcolour 1 0 0 300 200 drawtext -bn @snake.menu %textcolour %backcolour "Comic Sans MS" 22 0 0 Nokia Snake Clone if (%menulevel == 1) { hadd -m menu m1 New game hadd -m menuc m1 snakegame %snakelevel $+ $chr(9) $+ window -c @snake.menu hadd -m menu m2 Set Level hadd -m menuc m2 set % $+ menulevel 2 hadd -m menu m3 Highest score hadd -m menuc m3 set % $+ menulevel 3 hadd -m menu m4 Settings hadd -m menuc m4 set % $+ menulevel 4 hadd -m menu m5 Quit hadd -m menuc m5 close -@ @snake.menu } if (%menulevel == 2) { hadd -m menu m1 Level 1 hadd -m menuc m1 set % $+ snakelevel 1 $+ $chr(9) $+ set % $+ menulevel 1 hadd -m menu m2 Level 2 hadd -m menuc m2 set % $+ snakelevel 2 $+ $chr(9) $+ set % $+ menulevel 1 hadd -m menu m3 Level 3 hadd -m menuc m3 set % $+ snakelevel 3 $+ $chr(9) $+ set % $+ menulevel 1 hadd -m menu m4 Level 4 hadd -m menuc m4 set % $+ snakelevel 4 $+ $chr(9) $+ set % $+ menulevel 1 hadd -m menu m5 Level 5 hadd -m menuc m5 set % $+ snakelevel 5 $+ $chr(9) $+ set % $+ menulevel 1 hadd -m menu m6 Level 6 hadd -m menuc m6 set % $+ snakelevel 6 $+ $chr(9) $+ set % $+ menulevel 1 hadd -m menu m7 Level 7 hadd -m menuc m7 set % $+ snakelevel 7 $+ $chr(9) $+ set % $+ menulevel 1 } if (%menulevel == 3) { hadd -m menu m1 Highest score: hadd -m menuc m1 set % $+ menulevel 1 Hadd -m menu m2 - %highscore hadd -m menuc m2 set % $+ menulevel 1 if (!%highscoreset) { hadd -m menu m3 Tell The World hadd -m menuc m3 tellworld $+ $chr(9) $+ set % $+ menulevel 1 hadd -m menu m4 Back to menu hadd -m menuc m4 set % $+ menulevel 1 } else { hadd -m menu m3 Back to menu hadd -m menuc m3 set % $+ menulevel 1 } } if (%menulevel == 4) { hadd -m menu m1 Colours hadd -m menuc m1 set % $+ menulevel 5 hadd -m menu m2 Go Thru Walls hadd -m menuc m2 set % $+ menulevel 6 hadd -m menu m3 Back to Menu hadd -m menuc m3 set % $+ menulevel 1 } if (%menulevel == 5) { window -c @snake.menu dialog -m snakecol snakecol | return } if (%menulevel == 6) { hadd -m menu m1 On $iif(%thruwalls,[X]) hadd -m menuc m1 set % $+ thruwalls on $+ $chr(9) $+ set % $+ menulevel 4 hadd -m menu m2 Off $iif(!%thruwalls,[X]) hadd -m menuc m2 unset % $+ thruwalls $+ $chr(9) $+ set % $+ menulevel 4 } if (%selected > $hmatch(menu,m*,0)) { set %selected 1 } var %i = 1 if (%selected > 3) { var %i = $calc(%selected - 2) } var %u = 0 while ($hget(menu,m $+ %i)) { if ($calc(%u - %selected) > 2) break inc %u drawtext -bn @snake.menu $iif(%selected == %i,%backcolour %textcolour,%textcolour %backcolour) "Comic Sans MS" 16 20 $calc(30 * %u) $hget(menu,m $+ %i) inc %i } drawpic @snake.menu } on *:KEYDOWN:@snake.menu:13,38,40: { if ($keyval == 13) { var %c = $hget(menuc,m $+ %selected) while (%c) { var %x = $gettok(%c,1,9) var %c = $deltok(%c,1,9) %x } set %selected 1 } if ($keyval == 38) { if ($hget(menu,m $+ $calc(%selected - 1))) { dec %selected } } if ($keyval == 40) { if ($hget(menu,m $+ $calc(%selected + 1))) { inc %selected } } } alias snakegame { unset %gameover %ishighscore hfree -w snake if (!$1) { tokenize 32 1 } window -pozdk0 +tbnL @snake -1 -1 300 200 if ($1 == 1) { hadd -m snake time 250 } if ($1 == 2) { hadd -m snake time 225 } if ($1 == 3) { hadd -m snake time 175 } if ($1 == 4) { hadd -m snake time 125 } if ($1 == 5) { hadd -m snake time 100 } if ($1 == 6) { hadd -m snake time 75 } if ($1 == 7) { hadd -m snake time 50 } hadd -m snake snake 3 4:4 4:5 4 hadd -m snake dir right hadd -m snake score 0 var %x = 3 var %y = 4 while (%x isnum 3-5) { var %x = $rand(1,27) } while (%y isnum 3-5) { var %y = $rand(1,15) } hadd -m snake apple %x %y updsn .timerupdsn -m 1 $hget(snake,time) updsn } alias updsn { if (!$window(@Snake)) { .timerupdsn off | snake | return } var %gone = 0 var %g = $hget(snake,snake) :two inc %gone var %c = $gettok(%g,-1,58) var %x = $gettok(%c,1,32) var %y = $gettok(%c,2,32) if ($hget(snake,dir) == left) { var %x = $calc(%x - 1) } if ($hget(snake,dir) == right) { var %x = $calc(%x + 1) } if ($hget(snake,dir) == up) { var %y = $calc(%y - 1) } if ($hget(snake,dir) == down) { var %y = $calc(%y + 1) } if (%thruwalls) { if (%x == 29) { var %x = 0 } elseif (%y == 18) { var %y = 0 } elseif (%x == -1) { var %x = 29 } elseif (%y == -1) { var %y = 17 } } else { if (%x == 29) || (%y == 18) || (%x == -1) || (%y == -1) { set %gameover yes } } var %g = %g $+ : $+ %x %y var %g2 = $deltok(%g,-1,58) var %c = $gettok(%g,-1,58) if ($istok(%g2,%c,58)) { set %gameover yes } clear -n @snake drawrect -fn @snake %backcolour 1 0 0 300 200 if (%gameover == yes) { drawtext -fn @snake %textcolour "Comic Sans MS" 26 20 30 Game Over! drawtext -fn @snake %textcolour "Comic Sans MS" 16 20 70 Your score was: $hget(snake,score) if ($hget(snake,score) > %highscore) { set %ishighscore yes set %highscore $ifmatch } if (%ishighscore) { drawtext -fn @snake %textcolour "Comic Sans MS" 16 20 95 NEW HIGH SCORE!!!! unset %highscoreset } } else { if ($hget(snake,apple) != $gettok(%g,-1,58)) { var %g = $gettok(%g,2-,58) } else { if (%gone == 1) { var %a = $hget(snake,apple) var %x = $gettok(%a,1,32) var %y = $gettok(%a,2,32) hinc -m snake score $calc(%snakelevel * 7) while ($istok($hget(snake,snake),%x %y,58)) || (%a == %x %y) { var %x = $rand(2,27) | var %y = $rand(2,15) } hadd -m snake apple %x %y } } if ($hget(snake,pause)) || ($active != @Snake) { drawtext -bfn @snake %backcolour %textcolour "Comic Sans MS" 20 30 30 Paused! Press p to continue. } else { hadd snake snake %g } while (%g) { var %c = $gettok(%g,1,58) var %g = $deltok(%g,1,58) var %x = $calc($gettok(%c,1,32) * 10) var %y = $calc($gettok(%c,2,32) * 10) drawrect -fn @snake %snakecolour 1 %x %y 10 10 } var %c = $hget(snake,apple) var %x = $gettok(%c,1,32) var %y = $gettok(%c,2,32) drawrect -fn @snake %applecolour 1 $calc(%x * 10) $calc(%y * 10) 10 10 } drawpic @snake var %titlebar = Score: $hget(snake,score) points if ($titlebar(@snake) == %titlebar) { return } titlebar @snake %titlebar .timerupdsn -m 1 $hget(snake,time) updsn } on *:KEYDOWN:@snake:*: { if ($keychar == p) { if ($hget(snake,pause)) { hdel snake pause } else { hadd -m snake pause yes } } elseif ($keyval == 37) { if ($hget(snake,dir) != right) { hadd -m snake dir left } } elseif ($keyval == 38) { if ($hget(snake,dir) != down) { hadd -m snake dir up } } elseif ($keyval == 39) { if ($hget(snake,dir) != left) { hadd -m snake dir right } } elseif ($keyval == 40) { if ($hget(snake,dir) != up) { hadd -m snake dir down } } elseif ($keyval == 100) { if ($hget(snake,dir) != right) { hadd -m snake dir left } } elseif ($keyval == 104) { if ($hget(snake,dir) != down) { hadd -m snake dir up } } elseif ($keyval == 102) { if ($hget(snake,dir) != left) { hadd -m snake dir right } } elseif ($keyval == 98) { if ($hget(snake,dir) != up) { hadd -m snake dir down } } else { return } updsn .timerupdsn -m 0 $hget(snake,time) updsn } menu status,menubar,channel,nicklist,query { Nokia Snake Clone .Play: /snake .Top 10 Scores: /run http://this-site.kicks-ass.org/~darkie/top10/top10.php?db=snake .Unload: { .unload -rs $script } } ; Dialog dialog snakecol { title "Nokia Snake Clone Colours" size -1 -1 120 50 option dbu text "Background Colour", 1, 0 0 60 10 text "Snake Colour", 2, 0 10 60 10 text "'Apple' Colour", 3, 0 20 60 10 text "Text Colour", 4, 0 30 60 10 combo 5, 60 0 60 40, size vsbar drop combo 6, 60 10 60 40, size vsbar drop combo 7, 60 20 60 40, size vsbar drop combo 8, 60 30 60 40, size vsbar drop button "Save", 9, 20 40 40 10, ok button "Cancel", 10, 60 40 40 10, cancel } on *:DIALOG:snakecol:*:*: { if ($devent == init) { didtok snakecol 5,6,7,8 44 00 - White,01 - Black,02 - Blue,03 - Green,04 - Red,05 - Brown,06 - Purple,07 - Orange,08 - Yellow,09 - Light Green,10 - Blue-Green,11 - Cyan,12 - Light Blue,13 - Pink,14 - Dark Grey,15 - Light Grey did -c snakecol 5 $calc(%backcolour + 1) did -c snakecol 6 $calc(%snakecolour + 1) did -c snakecol 7 $calc(%applecolour + 1) did -c snakecol 8 $calc(%textcolour + 1) } if ($devent == sclick) && ($did == 9) { set %backcolour $left($did(5),2) set %snakecolour $calc($did(6,1).sel - 1) set %applecolour $calc($did(7,1).sel - 1) set %textcolour $calc($did(8,1).sel - 1) snake } if ($devent == sclick) && ($did == 10) { snake 4 } } alias tellworld { set %name $?="Enter your name, or nothing for your nickname" set %name $iif(%name,$ifmatch,$me) sockopen tellworld this-site.kicks-ass.org 80 } on *:SOCKOPEN:tellworld: { if ($sockerr) { echo 3 -s Unable to access Top 10 server: $sock(tellworld).wsmsg | return } sockwrite -n tellworld GET /~darkie/top10/top10_add.php?db=snake&name= $+ %name $+ &score= $+ %highscore &level= $+ %snakelevel HTTP/1.0 sockwrite -n tellworld Host: users.quickfox.tk sockwrite -n tellworld Accept: */* sockwrite -n tellworld } on *:sockread:tellworld: { if ($sockerr) { echo 3 -s Unable to access Top 10 server: $sock(tellworld).wsmsg | return } var %h sockread %h while ($sockbr) { tokenize 32 %h if ($1 isnum) { if ($1 == 200) { echo -a Your score has successfully been posted into the list. set %successful yes } else { echo -a An error occured: $1- } } sockread %h } } on *:sockclose:tellworld: { if ($sockerr) { echo 3 -s Error occured at Top 10 server: $sock(tellworld).wsmsg | return } if (%successful) set %highscoreset $true | unset %successful } on *:UNLOAD: { unset %highscore* %menulevel %*colour echo -a SnakeClone unloaded. Thanks for using my creations =) }