Jeux du serpent, style snake nokia

Contenu du snippet

petit jeux quand on a rien a faire sur irc

Source / Exemple :


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) {
    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 Nouvelle partie
    hadd -m menuc m1 snakegame %snakelevel $+ $chr(9) $+ window -c @snake.menu
    hadd -m menu m2 Définir niveau
    hadd -m menuc m2 set % $+ menulevel 2
    hadd -m menu m3 Meilleur score
    hadd -m menuc m3 set % $+ menulevel 3
    hadd -m menu m4 Options
    hadd -m menuc m4 set % $+ menulevel 4
    hadd -m menu m5 Quitter
    hadd -m menuc m5 close -@ @snake.menu
  }
  if (%menulevel == 2) {
    hadd -m menu m1 Niveau 1
    hadd -m menuc m1 set % $+ snakelevel 1 $+ $chr(9) $+ set % $+ menulevel 1
    hadd -m menu m2 Niveau 2
    hadd -m menuc m2 set % $+ snakelevel 2 $+ $chr(9) $+ set % $+ menulevel 1
    hadd -m menu m3 Niveau 3
    hadd -m menuc m3 set % $+ snakelevel 3 $+ $chr(9) $+ set % $+ menulevel 1
    hadd -m menu m4 Niveau 4
    hadd -m menuc m4 set % $+ snakelevel 4 $+ $chr(9) $+ set % $+ menulevel 1
    hadd -m menu m5 Niveau 5
    hadd -m menuc m5 set % $+ snakelevel 5 $+ $chr(9) $+ set % $+ menulevel 1
    hadd -m menu m6 Niveau 6
    hadd -m menuc m6 set % $+ snakelevel 6 $+ $chr(9) $+ set % $+ menulevel 1
    hadd -m menu m7 Niveau 7
    hadd -m menuc m7 set % $+ snakelevel 7 $+ $chr(9) $+ set % $+ menulevel 1
  }
  if (%menulevel == 3) {
    hadd -m menu m1 Meilleur score:
    hadd -m menuc m1 set % $+ menulevel 1
    Hadd -m menu m2 - %highscore
    hadd -m menuc m2 set % $+ menulevel 1
    hadd -m menu m3 Retour au menu
    hadd -m menuc m3 set % $+ menulevel 1
  }
  if (%menulevel == 4) {
    hadd -m menu m1 Couleurs
    hadd -m menuc m1 set % $+ menulevel 5
    hadd -m menu m2 Traverser les murs
    hadd -m menuc m2 set % $+ menulevel 6
    hadd -m menu m3 Retour 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 }
  if ($active != @Snake) { hadd -m snake pause yes }
  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 Perdu!
    drawtext -fn @snake %textcolour "Comic Sans MS" 16 20 70 Ton score est: $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 NOUVEAU RECORD!!!!
    }
  }
  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)
        echo 
        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
        goto two 
      }
    }
    if (!$hget(snake,pause)) { 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
    if ($hget(snake,pause)) {
      drawtext -bfn @snake %backcolour %textcolour "Comic Sans MS" 20 30 30 Jeu en pause,tape p pour reprendre.
    }
  }
  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
}
; Dialog
dialog snakecol {
  title "Couleur du serpent Nokia"
  size -1 -1 120 50
  option dbu

  text "Couleur du fond", 1, 0 0 60 10
  text "Couleur du serpent", 2, 0 10 60 10
  text "'Couleur des pommes", 3, 0 20 60 10
  text "Couleur du texte", 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 "Annuler", 10, 60 40 40 10, cancel
}
on *:DIALOG:snakecol:*:*: {
  if ($devent == init) {
    var %d = 00 - White
    var %d = $addtok(%d,01 - Noir,44)
    var %d = $addtok(%d,02 - Bleu,44)
    var %d = $addtok(%d,03 - Vert,44)
    var %d = $addtok(%d,04 - Rouge,44)
    var %d = $addtok(%d,05 - Marron,44)
    var %d = $addtok(%d,06 - Violet,44)
    var %d = $addtok(%d,07 - Orange,44)
    var %d = $addtok(%d,08 - Jaune,44)
    var %d = $addtok(%d,09 - Vert pale,44)
    var %d = $addtok(%d,10 - Vert anglais,44)
    var %d = $addtok(%d,11 - Cyan,44)
    var %d = $addtok(%d,12 - Bleu pale,44)
    var %d = $addtok(%d,13 - Rose,44)
    var %d = $addtok(%d,14 - Gris foncé,44)
    var %d = $addtok(%d,15 - Gris clair,44)
    didtok snakecol 5 44 %d
    didtok snakecol 6 44 %d
    didtok snakecol 7 44 %d
    didtok snakecol 8 44 %d

    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 $calc($did(5) - 1) 
    set %snakecolour $calc($did(6) - 1)
    set %applecolour $calc($did(7) - 1)
    set %textcolour $calc($did(8) - 1)
    snake
  }
  if ($devent == sclick) && ($did == 10) { snake 4 }
}

Conclusion :


pour jouer taper /snake

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.