begin process at 2008 07 21 01:27:57
1 213 544 membres
13 nouveaux aujourd'hui
14 167 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SOLITAIRE


Information sur la source

Catégorie :AddOns Classé sous : jeu, solitaire, picwin, drag Niveau : Débutant Date de création : 01/07/2006 Date de mise à jour : 22/07/2006 04:14:55 Vu / téléchargé: 5 489 / 111

Note :
8,5 / 10 - par 2 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

Description

Voici un petit jeu en picwin ou le principe est de faire passer les "pions" les uns par dessus les autres, en éliminant ainsi un pion a chaque coup.
Le but étant d'avoir qu'un seul pion a la fin (bonne chance ;)).
Le jeu n'est pas des plus prenant mais toujours amusant.
(Non, ce n'est pas le jeu de cartes)

Source

  • alias solitaire {
  • if ($window(@Solitaire)) { window -c @solitaire | empty.s }
  • window -adCkp +sfn @solitaire 200 0 229 260
  • window -hp @bf.s 200 0 300 300 | desol
  • drawcopy -n @solitaire 0 0 219 219 @bf.s 0 0
  • drawrect -frn @solitaire 13685968 1 1 219 225 50
  • drawrect -enf @bf.s 4 1 220 220 18 18
  • drawrect -ne @bf.s 1 1 220 220 18 18
  • drawtext -n @solitaire 1 verdana 12 1 219 Temps : n.c \ Pions : 33
  • drawtext -n @solitaire 1 verdana 12 1 234 Clique sur le pion a effacer
  • drawdot @solitaire | drawdot @bf.s
  • hadd -m solitaire pions 33 | hadd -m solitaire depart 1
  • }
  • alias desol {
  • drawrect -fn @solitaire 15 0 0 0 231 219
  • drawrect -n @solitaire 5 2 0 0 219 219
  • var %x.c 14 43 72 101 130 159 188 ,%y.c 13 42 71 100 129 158 187
  • var %a 1 ,%b 3 ,%e 1 ,%f 7
  • while (%a <= %b) { var %c 1 ,%d 7
  • while (%c <= %d) {
  • hadd -m solitaire1 $+($token(%x.c,$calc(%a +2),32),-,$token(%y.c,%c,32))
  • drawrect -efn @solitaire 4 1 $token(%x.c,$calc(%a +2),32) $token(%y.c,%c,32) 18 18
  • inc %c $iif(%c = 1,1,$iif(%c == 2,4,$iif(%c >= 5,1))) } | inc %a
  • }
  • while (%e <= %f) { var %g 1 ,%h 3
  • while (%g <= %h) {
  • hadd -m solitaire1 $+($token(%x.c,%e,32),-,$token(%y.c,$calc(%g + 2),32))
  • drawrect -efn @solitaire 4 1 $token(%x.c,%e,32) $token(%y.c,$calc(%g + 2),32) 18 18
  • inc %g } | inc %e
  • }
  • }
  • menu @solitaire {
  • sclick : sclick.s $mouse.x $mouse.y
  • mouse : mouse.s $mouse.x $mouse.y
  • leave : drawcopy -n @bf.s 0 0 219 219 @solitaire 0 0 | drawdot @solitaire
  • drop : drop.s $mouse.x $mouse.y
  • Recommencer : solitaire
  • Fermer : empty.s
  • }
  • alias drop.s {
  • unset %error
  • if ($getdot(@bf.s,$1,$2) == $color(0) && $hget(solitaire,stock)) {
  • var %cc = $returnpos($1,$2) ,%h = $hget(solitaire,stock) ,%3 +0.-20.+38 | tokenize 32 %cc
  • var %1 = $iif($1 == $token(%h,1,32),1,$iif($1 == $calc($token(%h,1,32) +58),2,$iif($1 == $calc($token(%h,1,32) -58),3))))
  • var %2 = $iif($2 == $token(%h,2,32),1,$iif($2 == $calc($token(%h,2,32) +58),2,$iif($2 == $calc($token(%h,2,32) -58),3))))
  • if (%1 && %2) {
  • if (%1 == 2) && (%2 == 3) || (%1 == 3) && (%2 == 3) goto pkpasungoto
  • if (%1 == 3) && (%2 == 2) || (%1 == 2) && (%2 == 2) goto pkpasungoto
  • if ($getdot(@bf.s,$calc($1 $token(%3,%1,46)),$calc($2 $token(%3,%2,46))) == 255) {
  • drawrect -nfe @bf.s 0 1 $calc($1 $token(+0.-29.+29,%1,46)) $calc($2 $token(+0.-29.+29,%2,46)) 18 18
  • drawrect -ne @bf.s 1 1 $calc($1 $token(+0.-29.+29,%1,46)) $calc($2 $token(+0.-29.+29,%2,46)) 18 18
  • drawrect -nfe @bf.S 4 1 $1- 18 18 | drawrect -nfe @bf.s 0 1 %h 18 18
  • drawrect -ne @bf.s 1 1 %h 18 18
  • hdec solitaire pions
  • hadd -m solitaire1 $+($1,-,$2)
  • hdel solitaire1 $+($calc($1 $token(+0.-29.+29,%1,46)),-,$calc($2 $token(+0.-29.+29,%2,46)))
  • tokenize 32 $hget(solitaire,stock) | hdel solitaire1 $+($1,-,$2)
  • if ($dead?) {
  • .timer 1 1 .timersol off
  • drawrect -frn @solitaire 13685968 1 1 219 225 50
  • hdel solitaire stock
  • drawtext -n @solitaire 1 verdana 12 1 219 Temps : $duration($calc(($ticks - $hget(solitaire,ticks)) /1000)) $+ . Pions : $hget(solitaire,pions)
  • drawtext -n @solitaire 1 verdana 12 1 234 Il n'y a plus de coup possible !
  • }
  • }
  • }
  • }
  • :pkpasungoto
  • drawcopy -n @bf.s 0 0 219 219 @solitaire 0 0
  • drawdot @solitaire
  • drawdot @bf.s
  • }
  • alias dead? {
  • var %a 1 ,%b = $hget(solitaire,pions)
  • while (%a <= %b) {
  • tokenize 45 $hget(solitaire1,%a).item
  • if ($getdot(@solitaire,$calc($1 +38),$calc($2 +9)) == 255) && ($getdot(@solitaire,$calc($1 + 62),$calc($2 + 9)) == $color(0)) return 0
  • elseif ($getdot(@solitaire,$calc($1 -25),$calc($2 +9)) == 255) && ($getdot(@solitaire,$calc($1 - 54),$calc($2 + 9)) == $color(0)) return 0
  • elseif ($getdot(@solitaire,$calc($1 +9),$calc($2 +38)) == 255) && ($getdot(@solitaire,$calc($1 + 9),$calc($2 + 62)) == $color(0)) return 0
  • elseif ($getdot(@solitaire,$calc($1 +9),$calc($2 -25)) == 255) && ($getdot(@solitaire,$calc($1 -54),$calc($2 + 9)) == $color(0)) return 0
  • inc %a
  • }
  • return 1
  • }
  • alias mouse.s {
  • if ($mouse.key & 1 && $hget(solitaire,stock) && (!%error) && $mouse.x < 215 && $mouse.y < 215) {
  • drawcopy -n @bf.s 0 0 219 219 @solitaire 0 0
  • drawcopy -tn @bf.s $color(0) 220 220 18 18 @solitaire $calc($1 - 9) $calc($2 - 9)
  • sol | drawdot @solitaire
  • }
  • else {
  • drawcopy -n @bf.s 0 0 219 219 @solitaire 0 0
  • drawdot @solitaire
  • }
  • }
  • on *:close:@solitaire:empty.s
  • alias empty.s {
  • if ($window(@solitaire)) window -c @solitaire
  • window -c @bf.s
  • if ($hget(solitaire)) hfree -w solitaire*
  • .timersol off
  • }
  • alias sclick.s {
  • var %cc = $returnpos($1,$2)
  • if ($getdot(@solitaire,$1,$2) == 255) {
  • if ($hget(solitaire,depart)) {
  • set -u2 %error 1 | tokenize 32 %cc
  • drawrect -fen @solitaire 0 1 $1- 18 18 | drawrect -en @solitaire 1 1 $1- 18 18
  • drawrect -fn @solitaire 0 1 1 232 232 30 | drawtext -n @solitaire 1 verdana 12 1 234 Fait glisser un pion dans un trou
  • drawcopy -n @solitaire 0 0 219 219 @bf.s 0 0 | drawdot @solitaire
  • drawdot @bf.s | hdel solitaire depart | hadd -m solitaire ticks $ticks
  • hdec -m solitaire pions | .timersol -m 0 100 sol | hdel solitaire1 $+($1,-,$2)
  • }
  • else hadd -m solitaire stock %cc
  • }
  • else hdel solitaire stock
  • }
  • alias returnpos {
  • var %x.c 14 43 72 101 130 159 188, %y.c 13 42 71 100 129 158 187
  • return $token(%x.c,$ceil($calc($1 / 29)),32) $token(%y.c,$ceil($calc($2 / 29)),32)
  • }
  • alias sol {
  • if (!$window(@solitaire)) return
  • drawrect -frn @solitaire 13685968 1 1 219 225 50
  • drawtext -n @solitaire 1 verdana 12 1 219 Temps : $duration($calc(($ticks - $hget(solitaire,ticks)) /1000)) $+ . Pions : $hget(solitaire,pions)
  • drawtext -n @solitaire 1 verdana 12 1 234 Fait glisser un pion dans un trou
  • drawdot @solitaire
  • }
alias solitaire {
  if ($window(@Solitaire)) { window -c @solitaire | empty.s }
  window -adCkp +sfn @solitaire 200 0 229 260 
  window -hp @bf.s 200 0 300 300 | desol
  drawcopy -n @solitaire 0 0 219 219 @bf.s 0 0
  drawrect -frn @solitaire 13685968 1 1 219 225 50
  drawrect -enf @bf.s 4 1 220 220 18 18
  drawrect -ne @bf.s 1 1 220 220 18 18
  drawtext -n @solitaire 1 verdana 12 1 219 Temps : n.c \ Pions : 33
  drawtext -n @solitaire 1 verdana 12 1 234 Clique sur le pion a effacer
  drawdot @solitaire | drawdot @bf.s
  hadd -m solitaire pions 33 | hadd -m solitaire depart 1
}
alias desol {
  drawrect -fn @solitaire 15 0 0 0 231 219
  drawrect -n @solitaire 5 2 0 0 219 219 
  var %x.c 14 43 72 101 130 159 188 ,%y.c 13 42 71 100 129 158 187 
  var %a 1 ,%b 3 ,%e 1 ,%f 7
  while (%a <= %b) { var %c 1 ,%d 7 
    while (%c <= %d) {
      hadd -m solitaire1 $+($token(%x.c,$calc(%a +2),32),-,$token(%y.c,%c,32))
      drawrect -efn @solitaire 4 1 $token(%x.c,$calc(%a +2),32) $token(%y.c,%c,32) 18 18
    inc %c $iif(%c = 1,1,$iif(%c == 2,4,$iif(%c >= 5,1))) } | inc %a
  }
  while (%e <= %f) { var %g 1 ,%h 3 
    while (%g <= %h) { 
      hadd -m solitaire1 $+($token(%x.c,%e,32),-,$token(%y.c,$calc(%g + 2),32))
      drawrect -efn @solitaire 4 1 $token(%x.c,%e,32) $token(%y.c,$calc(%g + 2),32) 18 18
    inc %g } | inc %e
  }
}
menu @solitaire {
  sclick : sclick.s $mouse.x $mouse.y
  mouse : mouse.s $mouse.x $mouse.y
  leave : drawcopy -n @bf.s 0 0 219 219 @solitaire 0 0 | drawdot @solitaire
  drop : drop.s $mouse.x $mouse.y
  Recommencer : solitaire
  Fermer : empty.s
}

alias drop.s {
  unset %error
  if ($getdot(@bf.s,$1,$2) == $color(0) && $hget(solitaire,stock)) {
    var %cc = $returnpos($1,$2) ,%h = $hget(solitaire,stock) ,%3 +0.-20.+38 | tokenize 32 %cc
    var %1 = $iif($1 == $token(%h,1,32),1,$iif($1 == $calc($token(%h,1,32) +58),2,$iif($1 == $calc($token(%h,1,32) -58),3))))
    var %2 = $iif($2 == $token(%h,2,32),1,$iif($2 == $calc($token(%h,2,32) +58),2,$iif($2 == $calc($token(%h,2,32) -58),3))))
    if (%1 && %2) {
      if (%1 == 2) && (%2 == 3) || (%1 == 3) && (%2 == 3) goto pkpasungoto 
      if (%1 == 3) && (%2 == 2) || (%1 == 2) && (%2 == 2) goto pkpasungoto
      if ($getdot(@bf.s,$calc($1 $token(%3,%1,46)),$calc($2 $token(%3,%2,46))) ==  255) { 
        drawrect -nfe @bf.s 0 1 $calc($1 $token(+0.-29.+29,%1,46)) $calc($2 $token(+0.-29.+29,%2,46)) 18 18
        drawrect -ne @bf.s 1 1 $calc($1 $token(+0.-29.+29,%1,46)) $calc($2 $token(+0.-29.+29,%2,46)) 18 18
        drawrect -nfe @bf.S 4 1 $1- 18 18 | drawrect -nfe @bf.s 0 1 %h 18 18
        drawrect -ne @bf.s 1 1 %h 18 18 
        hdec solitaire pions
        hadd -m solitaire1 $+($1,-,$2)
        hdel solitaire1 $+($calc($1 $token(+0.-29.+29,%1,46)),-,$calc($2 $token(+0.-29.+29,%2,46)))
        tokenize 32 $hget(solitaire,stock) | hdel solitaire1 $+($1,-,$2)
        if ($dead?) {
          .timer 1 1 .timersol off 
          drawrect -frn @solitaire 13685968 1 1 219 225 50
          hdel solitaire stock 
          drawtext -n @solitaire 1 verdana 12 1 219 Temps : $duration($calc(($ticks - $hget(solitaire,ticks)) /1000)) $+ . Pions : $hget(solitaire,pions)
          drawtext -n @solitaire 1 verdana 12 1 234 Il n'y a plus de coup possible !
        }
      }
    }
  }
  :pkpasungoto
  drawcopy -n @bf.s 0 0 219 219 @solitaire 0 0  
  drawdot @solitaire
  drawdot @bf.s
}
alias dead? {
  var %a 1 ,%b = $hget(solitaire,pions)
  while (%a <= %b) {
    tokenize 45 $hget(solitaire1,%a).item
    if ($getdot(@solitaire,$calc($1 +38),$calc($2 +9)) == 255) && ($getdot(@solitaire,$calc($1 + 62),$calc($2 + 9)) == $color(0)) return 0
    elseif ($getdot(@solitaire,$calc($1 -25),$calc($2 +9)) == 255) && ($getdot(@solitaire,$calc($1 - 54),$calc($2 + 9)) == $color(0)) return 0
    elseif ($getdot(@solitaire,$calc($1 +9),$calc($2 +38)) == 255) && ($getdot(@solitaire,$calc($1 + 9),$calc($2 + 62)) == $color(0)) return 0 
    elseif ($getdot(@solitaire,$calc($1 +9),$calc($2 -25)) == 255) && ($getdot(@solitaire,$calc($1 -54),$calc($2 + 9)) == $color(0)) return 0
    inc %a
  }
  return 1
}
alias mouse.s {
  if ($mouse.key & 1 && $hget(solitaire,stock) && (!%error) && $mouse.x <  215 && $mouse.y < 215) {
    drawcopy -n @bf.s 0 0 219 219 @solitaire 0 0
    drawcopy -tn @bf.s $color(0) 220 220 18 18 @solitaire $calc($1 - 9) $calc($2 - 9)
    sol | drawdot @solitaire
  }
  else {
    drawcopy -n @bf.s 0 0 219 219 @solitaire 0 0  
    drawdot @solitaire
  }
}
on *:close:@solitaire:empty.s
alias empty.s {
  if ($window(@solitaire)) window -c @solitaire
  window -c @bf.s 
  if ($hget(solitaire)) hfree -w solitaire*
  .timersol off
}

alias sclick.s { 
  var %cc = $returnpos($1,$2)
  if ($getdot(@solitaire,$1,$2) == 255) {
    if ($hget(solitaire,depart)) {
      set -u2 %error 1 | tokenize 32 %cc
      drawrect -fen @solitaire 0 1 $1- 18 18 | drawrect -en @solitaire 1 1 $1- 18 18
      drawrect -fn @solitaire 0 1 1 232 232 30 | drawtext -n @solitaire 1 verdana 12 1 234 Fait glisser un pion dans un trou 
      drawcopy -n @solitaire 0 0 219 219 @bf.s 0 0 | drawdot @solitaire
      drawdot @bf.s | hdel solitaire depart | hadd -m solitaire ticks $ticks
      hdec -m solitaire pions | .timersol -m 0 100 sol | hdel solitaire1 $+($1,-,$2) 
    }
    else hadd -m solitaire stock %cc
  }
  else hdel solitaire stock
}

alias returnpos {
  var %x.c 14 43 72 101 130 159 188, %y.c 13 42 71 100 129 158 187
  return $token(%x.c,$ceil($calc($1 / 29)),32) $token(%y.c,$ceil($calc($2 / 29)),32)
}

alias sol {
  if (!$window(@solitaire)) return
  drawrect -frn @solitaire 13685968 1 1 219 225 50
  drawtext -n @solitaire 1 verdana 12 1 219 Temps : $duration($calc(($ticks - $hget(solitaire,ticks)) /1000)) $+ . Pions : $hget(solitaire,pions)
  drawtext -n @solitaire 1 verdana 12 1 234 Fait glisser un pion dans un trou
  drawdot @solitaire
}

Conclusion

Je met un zip par rapport au probleme (n° des lignes ou les #).
Tapez /solitaire pour le lancer.
Le jeu marche en drag 'n drop, vous devez faire glisser les "pions" dans les trous ;)
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

02 juillet 2006 02:09:06 :
Correction de bug que j'ai trouvé par hasard et ajout de la detection d'une fin de partie ( mci pour l'idée au ptit chocolat :( )
02 juillet 2006 19:14:43 :
Un probleme par rapport au valeur rgb differente chez certaines personnes pour le blanc
22 juillet 2006 04:14:55 :
Correction de bugs : -Quand on "draguais" en lachant sur le rebord de la fenetre, le pion restait. -Parfois le jeu n'indiquait pas le bon nombre de pion restant. -L'alias qui vérifiait si l'on est bloqué se basait sur la valeur rgb du blanc et il y en avait vers le bas donc il disait qu'il y avait encore des coups possible quand il n'y en avait pas merci a diZ au passage pour l'idée du code et pour m'avoir donné ces trois bugs
  • signaler à un administrateur
    Commentaire de KiNdErMaXi le 01/07/2006 13:16:04

    Fiou pas mal du tout !!

    Il manque juste un truc qui trouve lorsqu'on est bloqué :)
    Les déplacements sont propres et tout
    Bien joué

  • signaler à un administrateur
    Commentaire de wims le 01/07/2006 14:02:39

    merci ;)
    Je verrai pour un truc qui trouve lorsqu'on est bloqué mais faut trouvé le moyen de verifié :/

  • signaler à un administrateur
    Commentaire de ChAnG-Fu le 01/07/2006 20:19:53

    C'est super un pti jeux comme ca qui tien en 100lignes sans .bmp inutile
    Bien réalisé chapo :)

  • signaler à un administrateur
    Commentaire de wims le 02/07/2006 00:47:27

    merci ! y'avais bien 2 .bmp au debut mais comme tu la souligné, c'est tellement mieux sans !
    J'ai finis le truc qui verifie si on est bloqué ou pas , je fait quelque test et je met a jour, j'ai egalement corrigé pas mal d'erreur =)

  • signaler à un administrateur
    Commentaire de Panthouffle le 03/07/2006 02:51:16

    Bon faut que j'arrête de jouer je suis entrain de perdre patience mdr, j'ai toujours pas réussis    
    à terminer, c'est à se demander si c'est possible... Mais c'est un bon jeu et bien codé

  • signaler à un administrateur
    Commentaire de MJ92 le 04/09/2006 23:56:04

    Ouais bon jeu sur mIRC. Je dépose un comment dessus que maintenant car je te l'avais prise avant que tu es fais la mise a jour, 'fin m'en rappelle plus :/
    En tout cas bravo, bon boulot !

Ajouter un commentaire

Discussions en rapport avec ce code source

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS