Jeu de mémoire

Contenu du snippet

Voice un petit jeu de mémoire en picwin
Le but étant de retenir une suite de couleur pour ensuite essayer de recracher cette suite
On commence avec 2 couleur et 30 secondes et a chaque niveau superieur, 1 seconde de moins pour mémoriser la suite avec une couleur en plus
/gc pour le lancer
Attention au debut du jeu, la couleur blanche n'est pas la couleur par défault et les rond vides ne sont pas blanc par défault non plus

Source / Exemple :


alias gc {
  if ($hget(gc)) hfree -w gc*
  .timertl off
  if ($window(@gc)) window -c @gc
  window -dCp +bx @gc -1 -1 400 89
  if ($1) hadd -m gc lv $1-
  drawrect -n @gc 1 2 0 0 396 50
  drawrect -n @gc 1 2 0 55 396 30
  drawrect -n @gc 1 2 95 60 19 19
  drawrect -n @gc 4 1 120 60 50 19 
  drawrect -n @gc 5 1 121 61 48 17
  drawtext -n @gc 1 verdana 12 127 62 Jouer
  drawrect -n @gc 4 1 175 60 55 19
  drawrect -n @gc 5 1 176 61 53 17
  drawtext -n @gc 1 verdana 12 180 62 Quitter
  var %a 0 ,%x ,%y
  while (%a < 8) {
    drawrect -nf @gc %a 1 $calc(3 + %x + %a) 58 10 10
    inc %x 10 
    inc %a
  }
  var %b 0
  while (%b < 8) {
    drawrect -nf @gc $calc(%b + 8) 1 $calc(3 + %y + %b) 70 10 10  
    inc %y 10
    inc %b
  }
  drawdot @gc
  if ($1) debgc
}

menu @gc {
  sclick : gclick $mouse.x $mouse.y
}

alias debgc {
  drawrect -fn @gc 0 0 3 3 390 45
  drawrect -fn @gc 0 0 232 60 162 20 
  .timertl $iif($hget(gc,lv),$ifmatch,30) 1 tl 
  afrc
  hadd -m gc game $true
  drawtext -n @gc 1 verdana 10 232 58 Mémorise cette suite.
  unset %tl
  drawdot @gc
}

alias gclick {
  if ($inrect($1,$2,4,59,87,22) && $hget(gc,ready)) { 
    var %rgb = $getdot(@gc,$1,$2)
    hadd -m gc color %rgb
    drawrect -nrf @gc %rgb 1 97 62 15 15
    drawdot @gc
  }
  elseif ($inrect($1,$2,177,62,54,18)) { hfree -w gc* | .timertl off | window -c @gc } 
  elseif ($inrect($1,$2,122,62,48,18)) {
    if (!$hget(gc,game) && $hget(gc1,0).item != 15) { debgc }
    elseif ($hget(gc1,0).item == 15) { verifgc }
  }
  elseif ($2 isnum 11-35 && $hget(gc,ready) && $hget(gc,color) != $null) {
    var %x = $1 ,%y = $2 ,%inc ,%a 4 
    while (%a <= 496) {
      inc %inc
      if (%x isnum $+(%a,-,$calc(%a + 24))) {
        tokenize 32 $hget(gc,%inc)
        if ($version >= 6.17 && $inellipse(%x,%y,$2,10,25,25)) || ($version < 6.17 && $inrect(%x,%y,$2,10,25,25)) {
          drawrect -rfen @gc $hget(gc,color) 0 $2 12 25 25 
          drawrect -en @gc 1 1 $2 12 25 25 
          hadd -m gc1 %inc $hget(gc,color)
          if ($hget(gc1,0).item == 15) {
            drawrect -nf @gc 0 0 122 64 45 12
            drawtext -n @gc 1 verdana 12 124 62 Valider       
          }
          break
        }
      }
      inc %a 26
    }
    drawdot @gc
  }
}

alias verifgc {
  var %a 1 ,%f 0
  while (%a <= 15) {
    var %c = $hget(gc,%a)
    tokenize 44 %c
    var %b = $($rgb($1,$2,$3))
    var %d = $hget(gc1,%a)
    tokenize 32 $hget(gc,%a)
    if (%b != %d) {
      inc %f 
      drawrect -efrn @gc %b 0 $2 12 25 25
      drawrect -ne @gc 1 1 $2 12 25 25
    }
    drawtext -n @gc $iif(%b == %d,9,4) verdana 13 $calc($2 + 8) 34 $iif(%b == %d,V,X)
    inc %a
  }
  drawrect -fn @gc 0 0 232 60 150 20
  anr %f
  if (%f == 0) { var %lvup = $?!="Voulez-vous tenter le niveau superieur ?" | gc $calc($iif($hget(gc,lv),$token($ifmatch,1,32),30) - 1) $calc($iif($hget(gc,lv),$token($ifmatch,2,32),1) + 1) }
  drawdot @gc
}

alias anr {
  if ($1 == 0) { drawtext @gc 1 verdana 10 232 58 Parfait, bien joué }
  elseif ($1 isnum 1-3) { drawtext -n @gc 1 verdana 10 232 58 Pas mal, mais il reste des fautes }
  elseif ($1 isnum 4-7) { drawtext -n @gc 1 verdana 10 232 58 Tu y es presque ! }
  elseif ($1 isnum 8-11) { drawtext -n @gc 1 verdana 10 232 58 Tu Peux mieux faire }
  elseif ($1 isnum 12-15) { drawtext -n @gc 1 verdana 10 232 58 Risible , essaye encore :') }
  drawtext -n @gc 1 verdana 10 232 68 Tu as fait $1 $iif($1 == 0,faute,fautes)
  if ($1 != 0) { drawrect -fn @gc 0 0 122 64 45 10 | drawtext -n @gc 1 verdana 12 127 62 Again | hfree gc1 | hdel gc game }
  drawdot @gc 
}

alias tl {
  if (!%tl) set -z %tl $iif($hget(gc,lv),$token($ifmatch,1,32),30)
  drawrect -nf @gc 0 1 315 68 15 15
  drawtext -n @gc 1 verdana 10 232 68 Temps restant : %tl
  if (%tl == 1) { .timertl off | readyg }
  drawdot @gc
}

alias readyg {
  drawrect -fn @gc 0 0 232 60 120 20 
  drawtext -n @gc 1 verdana 10 232 58 Rempli maintenant les ronds 
  drawtext -n @gc 1 verdana 10 232 68 avec les bonnes couleurs
  afrc 1
  hadd -m gc ready $true
  drawdot @gc
}

alias afrc { 
  drawrect -fn @gc 0 0 3 3 390 45
  var %a 1 ,%x 
  while (%a <= 15) {
    var %r = $iif($1,0,$r(0,$iif($token($hget(gc,lv),2,32),$ifmatch,1)))
    drawrect -nef @gc %r 0 $calc(2 + %x + %a) 12 25 25
    drawrect -ne @gc 1 1 $calc(2 + %x + %a) 12 25 25
    if (!$1) hadd -m gc %a $rgb($color(%r)) $calc(2 + %x + %a) 
    inc %x 25
    inc %a
  }
  drawdot @gc
}

Conclusion :


Pas de bugs ,donner moi vos idées pour amélioré le jeu

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.