A le jeux du morpion

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 166 fois - Téléchargée 28 fois

Contenu du snippet

C'est le célèbre et inconditionnel jeux de morpion. En drawpics. vous devez y jouer avec un adverssaire ayant lui aussi le script ( rendes vous sur #morpion irc.jeux.fr ). Le script en lui même ne sert à rien c juste pour s'amuser un peu et s'entrainer sur les drawpics et un tit protocol entre deux clients ( j'ai trouver la faille moi ( que j'ai la flemme de régler )).

Enfin pour trouver un partenaire /server -m irc.jeux.fr -j #morpion ( pour ceux qu'on du mal )

Source / Exemple :


;%Morp.G désigne les cases tu tableau lit de haut à gauche en bas à droit
;dedans le 4 représente rien, le 0 l'adversaire et le 1 sois même
;donc %Morp.G = 4 4 4 1 1 1 4 4 4
;revient à la 2 ème ligne de croix ( si croix c sois même ) 

;%Morp.G contient ce qu'il y a dans chaque case
;%Morp.J : $true si c à son tour de jouer sinon $false
;%Morp.Me : si on est dans %Morp.G représenté par 0 ou 1
;%Morp.C : Pour savoir si on à commencer premièrs ou deuxième 
;%Morp.add : le nick de l'adverssaire
;%Morp.R : contient $true si l'autre veux recommencer

alias Morpion.init {
  ;Désinne le cadrillage 

  if (!$window(@Morp))  window -apCB @Morp 
  else drawrect -f @Morp 15 15 1 1 1000 1000
  drawfill @Morp 15 15 1 1

  drawrect @Morp 1 2 20 20 100 100
  drawrect @Morp 1 2 20 20 200 200
  drawrect @Morp 1 2 20 20 300 300

  drawrect @Morp 1 2 320 320 -100 -100
  drawrect @Morp 1 2 320 320 -200 -200
  drawrect @Morp 1 2 320 320 -300 -300

  ;affiche le score
  if (!%Morp.S) set %Morp.S 0
  if (%Morp.S > 0) {
    drawtext @Morp 1 Arial 15 340 20 $me : %Morp.S
    drawtext @Morp 1 Arial 15 340 40 %Morp.Add : - $+ %Morp.S
  }
  else {
    drawtext @Morp 1 Arial 15 340 20 $me : %Morp.S
    drawtext @Morp 1 Arial 15 340 40 %Morp.Add : $abs(%Morp.S)

  }

  set %Morp.G 4 4 4 4 4 4 4 4 4
}

Alias Morpion.add {
  ;Rajoute $2 ( X ou O ) à la case corepsondante ( numéroté de 1 à 9 )

  if ($1 == 1) drawtext @Morp 1 Arial 100 35 15 $2
  elseif ($1 == 2) drawtext @Morp 1 Arial 100 135 15 $2
  elseif ($1 == 3) drawtext @Morp 1 Arial 100 235 15 $2 

  elseif ($1 == 4) drawtext @Morp 1 Arial 100 35 115 $2
  elseif ($1 == 5) drawtext @Morp 1 Arial 100 135 115 $2
  elseif ($1 == 6) drawtext @Morp 1 Arial 100 235 115 $2

  elseif ($1 == 7) drawtext @Morp 1 Arial 100 35 215 $2
  elseif ($1 == 8) drawtext @Morp 1 Arial 100 135 215 $2
  elseif ($1 == 9) drawtext @Morp 1 Arial 100 235 215 $2

}

;Ceci fait $1 + $2 + $3 des case corespondante cf le début 
alias Morpion.calc return $calc($gettok(%Morp.G,$1,32) + $gettok(%Morp.G,$2,32) + $gettok(%Morp.G,$3,32))

alias Morpion.win {
  ;Quand la partie est fini
  set %morp.J $false
  if (%Morp.Me == $1) { drawtext @Morp 1 Arial 15 340 60 tu as gagné | inc %Morp.S }
  elseif ($1 == 2) drawtext @Morp 1 Arial 15 340 60 Match null 
  else { drawtext @Morp 1 Arial 15 340 60 tu as perdu | dec %Morp.S }

  ;Pour recommencer
  if ($?!="voulez vous recommencez ?") {
    if (%Morp.R) Morpion.New.Party
    else {
      set %Morp.R $true
      .notice %Morp.Add Morp.new.Party.OK
      ;On envoit à la personne qu'on est ok     
    }
  } 
  else .notice %Morp.add Morp.New.Party.Non
  ;Sinon on dit que non on veux pas
}

Alias Morpion.New.Party {
  ;Initanalise une nouvelle partie

  if (%Morp.C) set %Morp.C $false
  else set %Morp.C $true
  set %Morp.J %Morp.C
  Morpion.init
}
alias Morpion.look {
  ;ceci vas regarder si on a perdu ou gagné
  if ($Morpion.calc(1,2,3) == 0) Morpion.win 1 2 3
  elseif ($Morpion.calc(1,2,3) == 3) Morpion.Win 1 1 2 3
  elseif ($Morpion.calc(4,5,6) == 0) Morpion.Win 0 4 5 6
  elseif ($Morpion.calc(4,5,6) == 3) Morpion.Win 1 4 5 6
  elseif ($Morpion.calc(7,8,9) == 0) Morpion.Win 0 4 8 9
  elseif ($Morpion.calc(7,8,9) == 3) Morpion.Win 1 7 8 9

  elseif ($Morpion.calc(1,4,7) == 0) Morpion.Win 0 1 4 7
  elseif ($Morpion.calc(1,4,7) == 3) Morpion.Win 1 1 4 7
  elseif ($Morpion.calc(2,5,8) == 0) Morpion.Win 0 2 5 8
  elseif ($Morpion.calc(2,5,8) == 3) Morpion.Win 1 2 5 8
  elseif ($Morpion.calc(3,6,9) == 0) Morpion.Win 0 3 6 9
  elseif ($Morpion.calc(3,6,9) == 3) Morpion.Win 1 3 6 9

  elseif ($Morpion.calc(1,5,9) == 0) Morpion.Win 0 1 5 9
  elseif ($Morpion.calc(1,5,9) == 3) Morpion.Win 1 1 5 9
  elseif ($Morpion.calc(3,5,7) == 0) Morpion.Win 0 3 5 7
  elseif ($Morpion.calc(3,5,7) == 3) Morpion.Win 1 3 5 7
  elseif (4 !isin %Morp.g) Morpion.win 2
}

menu @Morp {
  dclick:{
    ;Quand on double clicque sur une case on met le n° de la case dans une var
    if ($inrect($mouse.x,$mouse.y,20,20,100,100)) var %Morp.temp 1
    elseif ($inrect($mouse.x,$mouse.y,120,20,100,100)) var %Morp.temp 2
    elseif ($inrect($mouse.x,$mouse.y,220,20,100,100)) var %Morp.temp 3

    elseif ($inrect($mouse.x,$mouse.y,20,120,100,100)) var %Morp.temp 4
    elseif ($inrect($mouse.x,$mouse.y,120,120,100,100)) var %Morp.temp 5
    elseif ($inrect($mouse.x,$mouse.y,220,120,100,100)) var %Morp.temp 6

    elseif ($inrect($mouse.x,$mouse.y,20,220,100,100)) var %Morp.temp 7
    elseif ($inrect($mouse.x,$mouse.y,120,220,100,100)) var %Morp.temp 8
    elseif ($inrect($mouse.x,$mouse.y,220,220,100,100)) var %Morp.temp 9
    if (($gettok(%Morp.G,%Morp.temp,32) == 4) && (%Morp.J) ) {  
      ;On l'ajoute %Morp.G  
      set %Morp.G $puttok(%Morp.G,%Morp.me,%Morp.temp,32)
      ;On la désinne    
      Morpion.add %Morp.temp X
      .notice %Morp.Add Morp.New %Morp.G %Morp.temp 
      ;On regarde si qqn à gagné    
      Morpion.look 
      set %Morp.J $false
    }
  }
}

;Quand on reçoit ou à cliquer l'autre
on ^1:notice:Morp.New ? *:?:{
  if ($nick == %Morp.Add) {
    ;Donc là par exemple : 
    ;$1- = Morp.New 1 0 0 4 1 1 0 0 0 5
    ;Avec 5 qui représente la case qui a changé 
    ;On remaplce dans son %Morp.G la case change
    set %Morp.g $puttok(%Morp.G,$iif(%Morp.me == 0,1,0),$11,32)

    ;Si on a pas le même %Morp.G que l'adverssaire alors une erreur 
    if (%Morp.g != $2-10) {
      .Notice %Morp.add Morp.Error
      drawtext @Morp 1 Arial 15 340 80 Une erreur est intervenu on recommence la parti
      .timer 1 0.1 Morpion.win 2
    } 

    ;Si tout vas bien on affiche, on regarde si qqn à gagner puis on dit que c à soit de jouer
    else {
      Morpion.add $11 O
      .timer 1 0 Morpion.look
      set %Morp.J $true
    } 
    haltdef
  }
}

;Quand qqn vous demande si il veux jouer avec vous ( il veux pas de $?! dans remote )
alias Morp.New.Play { 
  if ($window(@morp)) .notice $1 Je suis en train de jouer 

  elseif ($?!="Voulez vous jouer avec $1 ?") { 
    .notice $1 Morp.Play.OK
    set %Morp.me 1 
    set %Morp.J $false
    set %Morp.C $false
    set %Morp.add $1 
    Morpion.init 
  }
  elseif ($?!="Voulez vous ignoré $1 ?") { ignore -nu1200 $address($1,2) | .notice $1 tu es ignoré }
  else .notice $1 Je ne veux pas jouer avec toi
}

;Quand qqn nous dit qu'il est ok pour une partie. Si on est déjà ok on inianalise sinon on lui dit
on ^1:Notice:Morp.new.Party.OK:?:{
  if ($nick == %Morp.Add) {
    if (%Morp.R) .timer 1 1 Morpion.New.Party
    else {
      set %Morp.R $true
      .notice %Morp.Add Morp.new.Party.OK
    }
  }
  halt
}

;Quand ya une error on le dit à l'autre pour que tous recommence en même temps
on ^1:Morp.Error:?:{
  if ($nick == %Morp.Add) {
    drawtext @Morp 1 Arial 15 340 80 Une erreur est intervenu on recommence la parti
    Morpion.win 2
    halt
  }
}

;Si l'autre est pas ok pour un new party
on ^1:notice:Morp.New.Party.Non:?:{
  if ($nick == %Morp.add) drawtext @Morp 1 Arial 15 340 100 votre adversaire veux arrêter la partie
  halt
}

;Si qqn demande un jeux
on ^1:Notice:Morp.Play:?:{ .timer 1 1 Morp.New.Play $nick | halt }

;On reçoit cela quand on a proposer une partie et que la personne est ok
on ^1:Notice:Morp.Play.ok:?:{  
  if ($nick == %Morp.Nadd) {
    set %Morp.me 0
    set %Morp.J $true
    set %Morp.C $true
    set %Morp.add $nick
    unset %Morp.Nadd
    morpion.init
    halt
  }
}

;Le menu
menu Nicklist {
  Proposer un morpion:set %Morp.Nadd $1 | .notice $1 Morp.Play
}

;Quand on ferme la fenetre on vire toutes les var
on 1:close:@Morp:unset %Morp.*

Conclusion :


J'éssairais de mettre à jours le jeux si vous me le demandez

A voir également

Ajouter un commentaire Commentaires
Messages postés
1052
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
30 novembre 2009
2
trop gros a mon gout :/
Messages postés
17
Date d'inscription
mercredi 11 juin 2003
Statut
Membre
Dernière intervention
15 juin 2003

J'epère bien pour toi qui te gruge pas trop mec ;)
Messages postés
17
Date d'inscription
mercredi 11 juin 2003
Statut
Membre
Dernière intervention
15 juin 2003

Hum Morpion tu doit sûrement t'amuser ! Mouhahahu !
Messages postés
117
Date d'inscription
lundi 17 mars 2003
Statut
Membre
Dernière intervention
8 décembre 2003

looooool et c parti
allez je m'occupe du site du serveur de jeux de morpion ^^ nan je dec
Bravo! je ssé pa faire un truc kom ca mwa
Messages postés
83
Date d'inscription
samedi 9 novembre 2002
Statut
Membre
Dernière intervention
18 août 2004

ahah trop tard. Si tu veux on peut se faire un protocol entre les deux clients en comum ...
Afficher les 6 commentaires

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.