PicWin Snake Game

PicWin Snake Game

mIRC Snippet - Cod sursa ce creaa un mic joculet snake. Acest cod este creat in picwin pentru mirc si este foarte bun pentru a invata scripting IRC.

Postat de Copyright Categorie Review user Vizualizari Data
BLKoldSUN JulianC games Cod netestat 344 2023-12-17 00:32:32

alias snake {
  if (!$hget(snake)) { 
    hmake snake 10
    if ($file($scriptdirsnake.dat)) hload snake $+(",$scriptdirsnake.dat,")
  }
  if (!$window(@snakedump)) window -h @snakedump
  if (!$window(@snake)) window -adhk0p @snake 100 100 213 224 
  if (!$window(@snakevis)) snakevis 
  if (!$hget(snake,snake.level)) hadd snake snake.level 1 
  if (!$hget(snake,snake.highscore))  $& 
    hadd snake snake.highscore Sparkle 200 $chr(9) FiberOPtics 150 $chr(9) hixxy 100 $chr(9) Mpdreamz 50 $chr(9) JulianC 20 
  if (!$window(@snakescore)) window -h @snakescore
  if (!$hget(snake,snake.player)) { hadd snake snake.player SnakePlayer }
  if ($1 == $null) {  
    clear @snakescore
    clear @snakedump
    tokenize 9 $hget(snake,snake.highscore)
    aline @snakescore $*
    aline @snakescore current 0
    hadd snake snake.pos 100 100
    hadd snake snake.direction left
    hadd snake snake.reddot $calc(10 * $rand(2,15)) $calc(10 * $rand(6,14))
    hadd snake snake.points 0
    hadd snake snake.game off
    hadd snake snake.eaten 1
    hadd snake snake.current 6
    hdel snake snake.timed
  }
  drawcopy -n @snakevis 185 1 220 405 @snake 0 0
  drawtext -nbpr @snake $rgb(255,255,255) $rgb(0,0,0) tahoma 18 55 1  SNAKE 2.0
  drawtext -nbpr @snake $rgb(255,255,255) $rgb(0,0,0) tahoma 12 60 20  by: Mpdreamz
  drawtext -nr @snake $rgb(255,255,255) tahoma 12 35 40 Speed = 
  var %x = -ndfr @snake $rgb(128,128,128)
  drawrect $iif($hget(snake,snake.level) == 1,%x,-ndr @snake $rgb(128,128,128)) 1 91 40 14 14 5 5
  drawrect $iif($hget(snake,snake.level) == 2,%x,-ndr @snake $rgb(128,128,128)) 1 107 40 14 14 5 5
  drawrect $iif($hget(snake,snake.level) == 3,%x,-ndr @snake $rgb(128,128,128)) 1 123 40 14 14 5 5
  drawrect $iif($hget(snake,snake.level) == 4,%x,-ndr @snake $rgb(128,128,128)) 1 139 40 14 14 5 5
  drawrect $iif($hget(snake,snake.level) == 5,%x,-ndr @snake $rgb(128,128,128)) 1 155 40 14 14 5 5
  drawrect -ndr @snake $rgb(128,128,128) 1 66 85 14 14 5 5
  drawrect -ndfr @snake $rgb(255,255,255) 1 74 104 100 12 5 5
  drawrect -ndr @snake $rgb(128,128,128) 1 74 103 100 14 5 5
  drawtext -nr @snake $rgb(255,255,255) tahoma 9 70 87  P
  drawtext -nr @snake $rgb(255,255,255) tahoma 9 95 41  1 
  drawtext -nr @snake $rgb(255,255,255) tahoma 9 111 41  2 
  drawtext -nr @snake $rgb(255,255,255) tahoma 9 127 41  3 
  drawtext -nr @snake $rgb(255,255,255) tahoma 9 143 41  4 
  drawtext -nr @snake $rgb(255,255,255) tahoma 9 159 41  5 
  drawtext -nr @snake $rgb(255,255,255) tahoma 12 35 85  Press 
  drawtext -nr @snake $rgb(255,255,255) tahoma 12 35 101  Player:
  drawtext -nr @snake $rgb(255,255,255) tahoma 12 83 85  to play snake! 
  drawtext -nr @snake 0 tahoma 9 78 104 $hget(snake,snake.player)
  var %z = $iif($1 == $null,70,$1) 
  drawrect -nr @snake $rgb(0,0,0) 5 %z 70 10 10
  var %rl = 1 , %t = $int($calc(255 / 14)) , %a = $calc(%z + 10) 
  while (%rl <= 14) {
    drawrect -nr @snake $rgb($calc(%t * %rl),$calc(%t* %rl),204) 5 %a 70 10 10
    inc %rl
    inc %a 10
  }
  %rl = 1
  while (%rl <= 5) {
    drawtext -nr @snake $rgb(255,255,0) tahoma 9 35 $calc(110 + (%rl *12)) %rl . $line(@snakescore,%rl)
    inc %rl
  }
  drawdot @snake
  .timersnakeup -m 1 $calc($hget(snake,snake.level) * 100) snake $iif($calc(%z - 10) != -150,$v1,220)
}
alias -l snakevis { 
  window -ph @snakevis 
  var %q = 154 , %x = $($rgb(%q,255,%q),) , %p = 1
  while %p <= 154 {
    drawline -nr @snakevis $(%x,2) 1 1 %p 184 %p 
    inc %p
    dec %q
  }
  var %q = 0 , %x = $($rgb(0,0,%q),) , %p = 1
  while %p <= 220 {
    drawline -nr @snakevis $(%x,2) 1 185 %p 405 %p 
    inc %p
    inc %q
  }
}
alias -l timsnake { 
  .timersnake2 off
  .timersnake2 -m 0 $calc($hget(snake,snake.level) * 100) movesnake $hget(snake,snake.direction)
}
alias -l returnline { 
  var %rl = 1 , %t = $int($calc(255 / $hget(snake,snake.eaten)))

  while (%rl <= $hget(snake,snake.eaten) ) {
    drawrect -r @snake $rgb($calc(%t * %rl),$calc(%t* %rl),204) 5 $line(@snakedump,%rl,0) 10 10
    inc %rl
  }
} 
alias -l quitsnake {
  .timersnake2 off 
  .timersnakeup off 
  window -c @snakevis 
  window -c @snakedump
  window -c @snakescore
  window -c @snake
  hsave -o snake $+(",$scriptdirsnake.dat,") 
  hfree snake
}
alias -l movesnake { 
  if ($hget(snake,snake.game) == on) {
    if ($hget(snake,snake.game) == off) snake
    iline @snakedump 1 $dp(1) $dp(2) 
    dline @snakedump $calc($hget(snake,snake.eaten) + 1))
    if ( $1 == left ) {  hadd snake snake.pos $calc($dp(1) - 10) $dp(2) }
    if ( $1 == up ) {   hadd snake snake.pos $dp(1) $calc($dp(2) - 10) }
    if ( $1 == right ) { hadd snake snake.pos $calc($dp(1) + 10) $dp(2) }
    if ( $1 == down ) { hadd snake snake.pos $dp(1) $calc($dp(2) + 10) }
    if ($hget(snake,snake.pos) == $hget(snake,snake.reddot) ) {  score red }
    if ($hget(snake,snake.pos) == $hget(snake,snake.greydot) ) {  score | hdel snake snake.greydot }
    if ($gettok($hget(snake,snake.pos),1,32) > 180) || ($gettok($hget(snake,snake.pos),1,32) < 5) {  snakedie | return }
    if ($gettok($hget(snake,snake.pos),2,32) > 165) || ($gettok($hget(snake,snake.pos),2,32) < 15) { snakedie | return  }
    if ($fline(@snakedump,$hget(snake,snake.pos),1,0)) { snakedie | return  }
    if ($hget(snake,snake.scored)) && ($hget(snake,snake.fx)) { hdec snake snake.fx 5 }
    dyndraw $hget(snake,snake.fx)
  }
}
alias -l snakedie { 
  hadd snake snake.game off 
  .timersnake2 off 
  hadd snake snake.timed on
  drawtext -r @snake $rgb(255,255,255) tahoma 9 8 174  You have LOST! 
  drawrect -dr @snake $rgb(128,128,128) 1 90 172 14 14 5 5
  drawtext -r @snake $rgb(255,255,255) tahoma 9 93 174  C
  drawtext -r @snake $rgb(255,255,255) tahoma 9 106 174  Continue
  var %rl = 1 , %h
  while (%rl <= 5) {
    %h = $addtok(%h,$line(@snakescore,%rl),9)
    inc %rl
  }
  var %h = $reptok(%h,$wildtok(%h,current *,1,9),$hget(snake,snake.player) $hget(snake,snake.points),1,9)
  hadd snake snake.highscore %h
}
alias -l score {
  $iif($1 == red,hinc snake snake.points $calc(10 - $hget(snake,snake.level)),hinc snake snake.points 20)
  if (!$1) return
  .timergrowdelay2 -m 1 25 hinc snake snake.eaten 1
  :redball
  hadd snake snake.reddot $calc(10 * $rand(2,15)) $calc(10 * $rand(6,14))
  if ($fline(@snakedump,$hget(snake,snake.reddot),1,0)) { 
    hadd snake snake.reddot $calc(10 * $rand(2,15)) $calc(10 * $rand(6,14))
    goto redball
  }
  if (*.* !iswm $calc($hget(snake,snake.eaten)/5)) {
    hadd -u2 snake snake.greydot $calc(10 * $rand(2,15)) $calc(10 * $rand(6,14))
    :greyball
    if ($fline(@snakedump,$hget(snake,snake.greydot),1,0)) || ($hget(snake,snake.pos) == $hget(snake,snake.greydot)) { 
      hadd -u2 snake snake.greydot $calc(10 * $rand(2,15)) $calc(10 * $rand(6,14))
      goto greyball
    }
  }
  rline @snakescore $fline(@snakescore,current *) current $hget(snake,snake.points)
  filter -wwcetu 2 32 @snakescore @snakescore 
  hadd snake snake.current $fline(@snakescore,current *)
  hadd snake snake.scored 1
  hadd snake snake.fx 255
}
alias -l dyndraw {
  clear -n @snake
  drawcopy -n @snakevis 185 1 220 405 @snake 0 0
  drawcopy -n @snakevis 1 1 184 154 @snake 8 18
  drawrect -nr @snake $rgb(255,0,0) 5 $hget(snake,snake.reddot) 10 10
  if ($hget(snake,snake.greydot)) {   drawrect -nr @snake $rgb(80,80,80) 5 $v1 10 10 }
  drawrect -nr @snake $rgb(0,0,0) 1 8 18 184 154
  drawrect -ndfr @snake $rgb(0,0,0) 1 8 0 69 18 5 5
  drawtext -npbr @snake $rgb(255,255,255) $rgb($iif($1,$1,0),0,0) tahoma 14 8 1  Pts: $hget(snake,snake.points)
  drawtext -nr @snake $rgb(255,255,0) tahoma 9 $& 
    $iif($hget(snake,snake.current) != 6,100 4 You are currently $ord($v1) !,90 4 You're not in Highscore !)
  drawrect -ndr @snake $rgb(128,128,128) 1 150 172 14 14 5 5
  drawtext -nr @snake $rgb(255,255,255) tahoma 9 154 174  B
  drawtext -nr @snake $rgb(255,255,255) tahoma 9 166 174  Back
  returnline
  drawrect -nr @snake $rgb(0,0,0) 5 $hget(snake,snake.pos) 10 10
  drawdot @snake
}
alias -l dp { return $gettok($hget(snake,snake.pos),$1,32)  }
menu @snake {
  sclick: snake.player $mouse.x $mouse.y
}
alias -l snake.player {
  if ($inrect($1,$2,74,104,100,12)) && ($hget(snake,snake.game) == off) {
    hadd snake snake.player $gettok($?="Please enter your name this will be used in the Highscore",1,32)
    if (!$hget(snake,snake.player)) || ($hget(snake,snake.player) == current) hadd snake snake.player Lamer 
  }
}
on 1:KEYDOWN:@snake:*: {
  var %d = $hget(snake,snake.direction) , %g = $hget(snake,snake.game) , %t = $hget(snake,snake.timed) , %k = $keyval
  if ((%k == 81) || (%k == 27)) quitsnake
  if  (%k == 66)  { 
    .timersnake2 off 
    .timersnakeup off 
    hdel snake snake.timed
    snake 
  }
  if (%t) && (%k == 67) { 
    hadd snake snake.pos 100 100 
    hadd snake snake.direction left
    hadd snake snake.reddot $calc(10 * $rand(2,15)) $calc(10 * $rand(6,14))
    hadd snake snake.points 0
    hadd snake snake.eaten 1
    hadd snake snake.game on 
    hdel snake snake.timed
    clear @snakedump
    timsnake
  }
  if (%g == off) && (!%t) && (%k == 80) { .timersnakeup off | hadd snake snake.game on | timsnake }
  if (%g == off) && (%k isnum 49-53) { hadd snake snake.level $calc($v1 - 48) | snake 40 }
  if (%g == on) && (%k == 37) && ((%d != right) && (%d != left)) { movesnake left | hadd snake snake.direction left | timsnake  }
  if (%g == on) && (%k == 38) && ((%d != down) && (%d != up)) { movesnake up | hadd snake snake.direction up | timsnake }
  if (%g == on) && (%k == 39) && ((%d != left) && (%d != right)) { movesnake right | hadd snake snake.direction right | timsnake }
  if (%g == on) && (%k == 40) && ((%d != up) && (%d != down)) { movesnake down | hadd snake snake.direction down | timsnake }
}
on *:CLOSE:@snake: { quitsnake }