Global Village BBS Global Village BBS Logo
[ about ] [ gateway ] [ help ] [ links ]


**************************************************
                    PoKeR                         
**************************************************

Table des matieres

0. Conditions d'utilisation (A lire absolument !)
1. Introduction
2. Comment jouer
3. Les regles du Poker sur Global Village BBS
4. Code de bonne conduite du joueur
5. Fonctions internes et problemes de codes
6. Les chiffres et Credits

	Chapitre  0.
	Conditions d'utilisation  du jeu du POKER


Comme tout logiciel, le jeu du Poker peut contenir des bugs, meme s'il
a  ete concu  pour fonctionner  correctement,  et teste  avec la  plus
grande attention.  Cependant, Global Village  BBS ne peut en aucun cas
etre tenu pour responsable de la  perte des CUBES causee par un bug du
jeu,  et pour  tout autre  inconvenient  qu'un bug  peut infliger  aux
joueurs. Inutile de reclamer des CUBES si vous en avez perdu !

Les jeux d'argent comme le  poker peuvent creer une dependance. Global
Village BBS ne pourra pas etre tenu responsable des effets negatifs du
jeu  sur  les  joueurs  ou  les  personnes  de  leur  entourage.    En
entrant dans le jeu, le joueur a accepte ces conditions, ainsi que les
regles  speciales (voir  Chapitre  3)  et le  code  de bonne  conduite
(Chapitre 4).   Les joueurs  du jeu de  poker doivent  accepter qu'ils
utilisent  le  jeu  a  leur  risques et  perils.   Les  violations  du
reglements  du jeu  seront punies  conformement  au chapitre  4 de  ce
document ainsi qu'au reglement du BBS.


Ce document est suceptible de contenir des erreurs. Global Village BBS
ne garanti pas que les  informations contenues si apres sont correcte,
et  ne peut  etre tenus  pour  responsable des  inconvenients dus  aux
erreurs contenues dans ce document.

----------------------------------------------------------------------

	Chapitre 1.
	Introduction


Depuis longtemps,  les programmeurs de  ce BBS avaient  l'intention de
coder un  jeu de poker  pour un usage  public. Mais, avec trop  peu de
temps a y consacrer et ce sur  une tres longue periode, il n'a pas ete
possible  a  nos  programmeurs  de  travailler sur  un  jeu  de  cette
envergure. Mais finallement, le developpement  du jeu est arrive a son
terme, et  le resultat est desormais accessible  en tapant <SHIFT>-<S>
<2> ou <SHIFT>-<M> <S> <2> au prompt du BBS.

Le jeu du poker a une longue  histoire : A l'origine, ce jeu est ne en
Europe  au 16eme  Siecle, et  se jouait  a l'epoque  avec  seulement 3
cartes a la fois.  Plus tard, au  debut du 18eme Siecle, le jeu a pris
sa forme actuelle,  avec 5 cartes. Au cours du 19eme  Siecle, ce jeu a
ete  exporte  vers  les  Ameriques   ou  il  a  connu  son  plus  gros
succes. Depuis 1834, le jeu se joue avec un jeu de 52 cartes.

Il  existe un  nombre  infini de  variation  de ce  jeu. Quelque  soit
l'endroit ou vous irez, vous ne  pourrez trouver deux  facons de jouer
parfaitement identiques, ceci  dependant des  personnes avec  qui vous
voulez jouer.  Pour programmer ce jeu, Certaines regles ont ete defini
afin  d'etre implementees  dans  le code.  Aucune discussion  possible
concernant  les  regles  ne  pourra  etre  envisage.  La  plupart  des
discussions concernant les regles du  jeu ont concerne la selection du
gagnant   parmis   toutes  les   possibilites   de  mains   possibles,
particulierement en cas de mains de valeurs identiques. Le code du jeu
contient  une   tres  longue  liste  de   comparaisons  et  d'egalites
mathematiques pour determiner le gagnant dans ces cas la.



La  version  code  ici est  une version Europenne  du jeu. Cette forme
se caracterise par le fait que les  basses cartes (les 2, 3 et 4) sont
exclues du paquet, permettant la formation de suite de type 8-7-6-5-A,
avec l'As utilise  comme basse carte.  La premiere  condition est donc
que l'on  joue avec un jeu  de 40 cartes, parmis  lesquels ne figurent
pas les 2,  3 et 4. Par  contre, la deuxieme condition n'est  pas : Le
rang du Full  est superieur a celui  de la Suite. Il y  a d'autres cas
d'exceptions qui  seront decrits  dans le chapitre 3. Les  discussions
sur  les  regles  du jeu  ne  sont pas les  bienvenues.Les regles sont
clairement definies et incluses dans  le programme, et elles ne seront
pas remise  en question. Les  regles sont une  adaptation informatique
des regles decrites dans l'Encyclopaedia Britannica, Macropedia, 15eme
Edition, Annee 1974, Volume 14, Page 623ff, modifiees par l'experience
de nos programmeurs et par les requis techniques.

----------------------------------------------------------------------

	Chapitre 2.
	Comment jouer


Le jeu  peut etre appele comme  indique dans le  premier paragraphe du
chapitre  1.  Une  fois  demarre,  le jeu  indiquera  soit un  message
indiquant que  personne n'utilise actuellement  le jeu, soit  les noms
des personnes installes a la table de poker.

Si le nombre  de personne pouvant jouer simultanement  au poker (CINQ)
est atteint,  la session  s'arretera ici. Quand  moins de  5 personnes
utilisent le jeu,  le programme affiche un oui/non,  demandant si l'on
veut entrer  dans leur  partie (ou un  message demandant si  l'on veut
s'assoir et attendre si aucun joueur n'est encore present).

Verifiez  qu'il  existe deja  une  session de  jeu  en  cours ou  bien
recherchez  d'autres  joueurs en  utilisant  des  X-messages AVANT  de
lancer le jeu.

Apres vous  etre assis a la  table de jeu, l'ecran  de celui apparait.
Notez  que  le  jeu utilise des sequences d'echappement pour terminaux
(norme ANSI)  pour afficher  le jeu le  mieux possible.  Ces sequences
peuvent causer  des problemes sur certains emulateurs  de terminaux ou
Programmes CLient  incompatibles ! Si vous  rencontrez des  problemes,
une seule  solution : changer de terminal  ou de CLient.  95  % de ces
programmes  fonctionnent correctement avec  le jeu.
Note :  Si votre  Terminal plante  apres etre entre  dans le jeu, ceci
pourrait bien etre aussi un probleme d'incompatibilite.

---   L'ecran du jeu : 

+-----------------------------------------+------------------------------------+
| Betty               [?] [?] [?] [?] [?] | Master ...... Nicolas              |
| Moumouna     (1)    [?] [?] [?] [?] [?] | Current ..... Moumouna       (2)   |
| Romain              [?] [?] [?] [?] [?] | Pot ......... 53                   |
| Slider              [?] [?] [?] [?] [?] | Round ....... 1                    |
+--------------(8)------------------------+------------------------------------+
| +-----+ +-----+ +-----+ +-----+ +-----+ | [.] Send a chat message            |
| |9- -9| 10* *10 |J+ +J| |Q# #Q| |K* *K| | [X] Exit the game                  |
| |-   -| |*   *| |+(3)+| |#   #| |*   *| |                             (4)    |
| |-   -| |*   *| |+   +| |#   #| |*   *| |                                    |
| |9- -9| 10* *10 |J+ +J| |Q# #Q| |K* *K| |                                    |
| +-----+ +-----+ +-----+ +-----+ +-----+ |                                    |
+-(5)------ Nicolas [658 CUBES] ----------+------------------------------------+
|                                                                              |
|  [SYSTEM] The game is now STARTED (initial pot is 50) ...                    |
|  [SYSTEM] Nicolas has called the bet (1), pot is 51.                         |
|  [Nicolas] Betty ! A toi !                                  (6)              |
|  [SYSTEM] Betty has raised the bet (2), pot is 53.                           |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
>                                   (7)                                        <

L'ecran du jeu est decoupe en 7 parties : 
(1) Zone des adversaires                            [En haut a gauche]
(2) Informations sur le jeu                         [En haut a droite]
(3) Zone du joueur                                [Au milieu a gauche]
(4) Zone de commande                              [Au milieu a droite]
(5) Ligne d'etat    [1 seule ligne, juste en dessous des zones 3 et 4]
(6) Zone des messages                              [Le bas de l'ecran]
(7) Zone de saisie des messages         [La derniere ligne de l'ecran]
(8) Compteur de X recu           [La ligne entre les zones (1) et (3)]
Ces zones sont utilises pour les affichages suivants :  

 2.1.  Zones des adversaires

Dans  cette region  apparaissent les  noms de  vos adversaires.  Si le
joueur  est actif,  que  le jeu  est en  cours  et que  ce joueur  est
toujours en competition  pour gagner le pot, les  cartes de ce joueurs
sont symbolise par un "[?]". Si  le jeu est termine et que quelqu'un a
demande a voir  les cartes avant, le nom du  joueur est affiche suivit
de ses  cartes.  Si un joueur quitte  la table, son nom  est efface de
cette zone et sa place est liberee pour un autre joueur.

 2.2. Information sur le jeu

Ici s'affiche 4 informations differentes : 

En  premier, le  nom du  "Maitre  du jeu".  C'est le  nom de  la
personne  qui est  la premiere  a  jouer a  chaque tour  et doit  etre
obligatoirement un joueur ACTIF.  Si  le Maitre du jeu passe son tour,
le role du maitre revient au  joueur suivant dans le tour.  Les autres
conditions de transmission de ce privilege sont :
- Le Maitre du jeu change a chaque partie
- Si le maitre du jeu n'a pas demarrer le jeu au bout de 3 minutes
Du fait  de la  facon de  transmettre ce role,  il est  possible qu'un
joueur soit maitre du jeu  pendant 2 parties consecutives, par exemple
si celui ci  passe son tour dans une partie a  2 (a condition qu'aucun
autre joueur  ne  se  soit connecte  pendant ce temps  la  !)  Seul le
maitre du jeu peut lancer la partie !

En  second, le nom  du joueur  qui est  en train  de jouer.  Si aucune
partie n'est en cours, cette ligne contient "NO GAME".

En  troisieme, la  valeur du  pot. C'est  la somme  de tout  les CUBES
depose sur la table  de jeu par les joueurs au cours  de la partie. Si
aucune partie n'est en cours, cette ligne contient 'NO GAME".


Et finalement, le numero du tour en cours. On peut y lire : 
1 ................... Le premier tour,
DISCARDING INTERVAL . Pendant ce tour, chaque joueur peut changer
                      de 0 a 3 cartes et en recevoir  de nouvelle
                      pour essayer d'avoir un meilleur jeu 
3, 4, ... 32699 ..... Le Neme tour. Si personne n'a souhaite voir
                      les jeux de ses  adversaires  et  que  l'on
                      atteint  le  32700eme tour,  le  jeu  passe
                      automatiquement en mode SHOWDOWN
SHOWDOWN ............ Chaque  joueur  encore  en  competition doit
                      montrer son jeu aux autres joueurs

 2.3. Zone du joueur

Dans cette zone, on peut avoir 3 types d'affichage : 
- 5 cartes, face cachee : Pas de partie en cours.
- Un message d'information, disant que  vous pourrez vous joindre a la
prochaine partie.   Ce message apparait  quand vous passez  votre tour
pendant une  partie ou quand vous  vous installez a la  table de poker
alors qu'un  jeu est en cours. Dans  ce cas, vous pouvez  voir tout ce
qui se  passe sur la table de  jeu mais vous ne  pouvez pas participer
tant que cett partie est en cours et qu'aucune autre n'a commence.
- 5 cartes,  face visible  : une  partie est commencee  ; CE  SONT VOS
CARTES !

 2.4. Zone de commande

Cette zone contient la liste  des commandes disponibles a ce moment du
jeu pour le joueur.  Deux commandes sont toujours disponibles :
[.] Envoyer un message
[X] Quitter le jeu
Les autres commandes disponibles selon la phase de jeu en cours sont :



[S] Ouvrir le jeu  [Maitre du jeu SEULEMENT]
[B] Surencherir
[P] Passer
[1]  -  [5] Rendre les cartes
[D] Termine, continuer
[H] Voir le jeu
[R] Reveler son jeu

Ces commandes ne  sont utilisables que quand elles sont affichees dans
cette zone comme options disponibles.

La zone de commande est  aussi utilisee pour afficher des informations
secondaires.  Les  question (oui/non) apparaissent ici,  ainsi que les
eventuels messages d'erreurs.

 2.5. Ligne d'etat


La partie  gauche de cette ligne  contient le nom  du joueur ("VOUS"),
ainsi  que la  quantite de  CUBES que  vous possedez  a ce  moment. Le
nombre de CUBES est mis a jour  a chaque fois qu'il y a un changement,
que ce  soit sur la  table de jeu,  ou bien une modification  de votre
argent venant  de l'exterieur du jeu,  par exemple la mise  a jour des
valeurs des actions ou une donation.

La  partie droite  de  cette ligne  peut afficher  une horloge.  Quand
vous  etes le  maitre  du jeu  et  que vous  n'avez  pas demarrer  une
nouvelle  partie, l'horloge  decroit depuis  3:00 jusqu'a  0:00, apres
quoi le  role de  Maitre du jeu  est donne  a un autre  joueur.  Quand
c'est a  votre tour de jouer,  l'horloge va decroitre de  1:00 a 0:00,
temps  apres lequel  le jeu  considera automatiquement  que  vous avez
passe votre tour, (dans ce cas, vous etes elimine pour cette partie !)
sauf pour le  tour de changement de carte et le  moment de reveler son
jeu.

 2.6. Zone des messages


La zone de message est une zone circulaire, qui ressemble au bon vieux
programme UNIX "talk".  Un maximum de 10 messages peuvent etre affiche
en meme  temps, parmis  lesquels les messages  du systeme  (precede de
[SYSTEM]),  les messages  d'informations (precede  de [INFO]),  et les
messages  des  utilisateurs  (precede  du nom  de  l'expediteur  entre
crochets  []).  Le  message  le plus recent est  precede d'une  fleche
"->". Le  message  le  plus  vieux (s'il  y a  plus  de 10  messages a
l'ecran) est efface afin de garder la zone lisible.

 2.7. Zone de saisie de message

Quand la  touche [.] est  pressee, ce qui  peut etre fait  a n'importe
quel moment du jeu, le nom du joueur (vous) apparait au debut de cette
ligne, et  un message peut y  etre saisi.  Parfois, s'il  y a beaucoup
d'activite sur le serveur, le temps  entre la pression de la touche et
la reponse du  systeme n'est pas immediate, et  peut prendre jusqu'a 4
secondes. Ce n'est pas un bug.

 2.8. Compteur de X recus
 

Dans cette zone apparait un  compteur vous indiquant combien de X vous
avez recu  depuis que vous vous etes  installe a la table  de jeu. Les
messages   de  connexions,   deconnexions,  d'information   parce  que
quelqu'un vous a profiler ou que  l'on est en train de vous envoyer un
X ne  sont pas recu pendant le  jeu. Mais vous avez  la possibilite de
lire  tout  les  autres  messages  apres  avoir  quitte  la  table  de
jeu. Toute personne qui essaiera de vous envoyer un X sera informe que
vous etes installe  a la table de poker et que  la reponse pourrait se
faire attendre.

--- 

 Demarrage de la partie et tours de mises : 

Le Maitre  du  jeu  est  la  seule  personne  qui  peut  demarrer  une
partie, et  seulement quand aucune partie n'est  commencee.  Quand une
nouvelle partie  est commencee avec [S],  le Maitre du  jeu devient le
joueur courant, et le chronometre d'une minute demarre.

Des que le Maitre du jeu a lancer la partie, chacun des joueur assis a
la  table  de  jeu  devient  un  Joueur   Actif,  et  10  CUBES  sont
retire  de son  argent et  sont ajoutes  a la  mise de  depart.  Si un
joueur, lors  de cette phase ne  possede pas les  10 CUBES necessaires
(et  cela vaut aussi  pour le  Maitre du  jeu lui  meme !),  le joueur
devient inactif immediatement.  Si vous  possedez moins de 10 CUBES de
monaie, quittez la table de jeu, vous bloquez inutilement une place !


Quand c'est a  votre tour de jouer, vous pouvez  deposer des CUBES sur
le jeu en  tapant [B].  La valeur maximum jouable  est definie ainsi :
La mise maximum est de 200 CUBES,  et si le joueur ne possede pas tant
de monnaie,  le nombre maximum devient  le nombre de  CUBES restant au
joueur.  Le minimum est toujours la valeur de la derniere mise (1 s'il
n'y a eu aucune mise) De ce  fait, il est possible que le minimum soit
superieur au  maximum. Dans ce  cas, le jeu  considere automatiquement
que le  joueur passe son  tour, en l'informant  en meme temps  dans la
zone  de commande  et  dans la  zone  de messages.  Les meme  messages
apparaissent si le joueur n'a pas mise quelque chose dans le temps qui
lui est imparti pour jouer (1 minute).

La  mise  est  donnees en  chiffres.  Si  vous  ne desirez  pas  faire
augmenter  la mise  minimale,  seulement  jouer la  meme  mise que  le
precedent,  tapez simplement  [ENTREE]  des que  le  jeu vous  demande
combien miser.

A partir du 3eme tour, chaque joueur peut decider de faire se terminer
la partie  en demandant a voir  le jeu de ces  adversaires (et definir
ainsi le gagnant). Pour cela, le  joueur tape sur [H] au lieu de taper
sur  [B]. Toutefois,  le joueur  devra tout  de meme  miser  une somme
valide  dans les limites  du temps  imparti pour  que la  demande soit
prise en compte.

La  mise est  automatiquement soustraite  de votre argent  des que  la
mise a  ete confirme. N'esperez  pas  recuperer vos CUBES en  quittant
le jeu en cours de partie ! Ce qui est joue est joue !

Quand c'est a votre tour de  jouer, taper [P] est aussi possible. Ceci
fait vous fait quitter la partie (vous rendez vos cartes et arretez de
concourir  pour  remporter  la  mise)  et  donne  la  main  au  joueur
suivant.  Une question  oui/non vous  sera pose  pour  confirmer votre
demande, afin  d'etre sur que c'est  votre choix et non  une erreur de
prssion de touche.

---

  Tour d'echanges :   

Pendant ce tour le joueur a 1 minute pour echanger 0, 1, 2 ou 3 cartes
de  son jeu  par  autant de  nouvelles  cartes provenant  du reste  du
paquet. Choisissez la ou les cartes  a enlever en tapant sur l'une des
touches [1] a [5]. La carte selectionne est retournee. Si vous changez
d'avis, vous pouvez  recuperer la carte en retapant  son numero. quand
vous avez fini votre selection, confirmez la en tapant [D]. Les cartes
sont automatiquement  triees par rang,  les plus fortes a  droite, les
plus faibles a  gauche. Les cartes sont automatiquement  retriees a la
fin du tour d'echange ; si  vous perdez une carte non echangee de vue,
ne vous inquietez  pas, elle est toujours la,  elle a seulement change
de place.  Ce tri est  important pour le  reste du jeu, car  permet de
mieux voir les possibiltes offertes. Des que vous tapez sur [D] ou que
la minute s'est ecoule, toutes les cartes redeviennent face visible.

--- 
  Le tour de relevation (Showdown) :  

Le tour de revelation se declanche seulement si : 
- Un joueur a  utilise la touche [H] pour demander a  voir les jeux de
ses adversaires
- Tout les  autres joueurs ont abandonne,  et un seul  reste en course
pour la mise (il a gagne !   Mais il doit montrer son jeu pour pouvoir
remporter la mise - s'il veut la ramasser (!?) )
- Le 32700eme tour est atteint.

Pendant le tour de revelation, une seule option est disponible en plus
des deux  options toujours presentes  : [R]. Appuyez sur  cette touche
pour  reveler votre  jeu aux  autres joueurs.   Si vous  attendez plus
d'une minute, votre jeu  sera revele automatiquement, et vous resterez
actif.

--- 

  Fin de la partie : 

Le jeu se termine quand : 
- Il n'y a plus de joueur actif
- Il n'y a plus qu'un seul  joueur actif, tout les  autres joueurs ont
quitte la table de jeu.
- Apres le tour de revelation

Des  qu'il n'y  a plus  de joueur  actif en  jeu, le  jeu  est declare
termine  par le  systeme.  L'argent  mise sur  la table  est  verse au
systeme et ne peut etre reclame.

S'il reste un seul joueur actif, celui ci sera declare Vainqueur, sauf
si tout les joueurs ont quitte le jeu (1 seul joueur a la table). S'il
reste des  joueurs inactifs,  le jeu ne  peut se terminer  qu'apres le
tour de  revelation, ou  alors apres une  demande de  revelation suivi
d'une  mise  valide.  Ce  n'est  pas  un bug ! Seuls les  joueurs ayant
mise  au dernier  tour de  jeu avant  le tour  de revelation  reste en
competition  pour le pot. Si  vous avez passe  (meme au dernier tour),
la partie s'arrete la pour vous.

Apres  le tour  de revelation,  le  Gagnant  est dertemine  parmis les
joueurs actifs, conformement aux regles ennonce au Chapitre 3. S'il ne
reste qu'un suel joueur actif, il devient automatiquement le gagnant.

Le gagnant recoit tout les CUBES  places sur la table. Ensuite, le pot
est remis  a Zero, un nouveau Maitre  du jeu est choisi,  et apres une
periode   de    30   secondes,   une    nouvelle   partie   peut
commencer. Cette periode est necessaire pour permettre a chaque joueur
de prendre  le temps de  consulter les jeux  de ses adversaires  et de
decider s'il reste pour une nouvelle partie ou s'il prefere quitter la
table.

Si le nouveau Maitre du jeu tente de lancer la partie avant la fin des
30 secondes, il  recevra un message lui indiquant  combien de temps il
doit attendre avant que ce soit  possible.  Dans le cas ou il ne reste
plus  qu'un seul joueur  present a  la table,  un message  d'erreur va
apparaitre.

--- 

 Disparition la table de jeu :    

Un joueur est automatiquement deconnecte de la table de jeu si : 
- Le systeme detecte que celui n'est plus connecte (problemes reseaux)
- Un  joueur portant le meme nom est  deja assis a la table de jeu (ca
peut arriver !)
- Un processus systeme associe au joueur apparait avec un autre numero
different de celui enregistre dans la memoire du jeu.
Le controle de ces conditions est periodiquement effectue par TOUT les
processus systeme des joueurs present a la table. Dans le pire des cas,
si un  seul joueur est  present a la  table, le controle  est effectue
toutes les 60 secondes. S'il y a plus de joueurs, ce test est effectue
plus souvent.   En plus,  a chaque fois  qu'un joueur s'installe  a la
table, le test  est invoque.  Si un joueur est efface  de la liste des
joueurs installe  a la table, tout  ce qui le  concerne disparait avec
lui (sauf  les CUBES qu'il  a mise  qui reste dans  le pot !)   et les
autres joueurs  sont informes.  Note :  La disparition de  la table de
jeu ne renvoit pas le user  au prompt normal du BBS, mais va provoquer
la purge d'une structure en  memoire qui fait croire que quelqu'un est
connecte alors qu'il ne l'est pas.  Notez que le simple fait de fermer
son terminal ou son CLient suffit a vous faire disparaitre de la table
de jeu.

----------------------------------------------------------------------

	Chapitre 3.
	Regles du jeu de POKER a Global Village BBS
 

Dans aucun  cas, l'argent joue peut  venir du systeme.  Tout les CUBES
proviennent  de ce  que les  joueurs ont  mises. Il  est  bien entendu
possible de  "tricher" avec les autres  joueurs : Comme  dans une vrai
partie  de poker,  deux joueurs  ou plus  peuvent s'allier  pour faire
tomber  leurs  adversaires. Tout  est  possible  TANT  QUE CELA  RESTE
CONFORME  AUX   REGLES  DE   BONNE  CONDUITE  definies   aux  chapitre
4. (Consulter ce chapitre pour plus de detail).

 Une partie se deroule de la facon suivante : 

(0) Avant
(a) Premier tour de jeu (et de mise)
(b) Tour d'echanges
(c) Autres tours de mises (1 ou plusieurs !)
(d) Tour de revelation 
Pendant et apres  le tour de revelation, le joueur  avec les cartes de
plus grandes valeurs est determine :

Par definition,  toutes les couleurs sont de  meme valeurs. Seulement,
il est  possible d'optenir  2 jeux (ou  plus) de  valeurs parfaitement
identique ! C'est pour cela que chaque couleur possede une valeur pour
determiner le gagnant dans ces  cas la.  L'ordre des couleurs dans ces
cas la sont (du plus fort au plus faible) :
'+', '*','#','-'.
L'utilisation  de ce  classement est  tres rare.   Toute  discussion a
propos de  cet ordre n'est pas  la bienvenue. (vous  risquez de mettre
nos programmeurs de mauvais poil !)

L'ordre logique des cartes est : A-K-Q-J-10-9-8-7-6-5  

Les jeux gagnants sont definis ainsi (du plus fort au plus faible) :

(1) Royal Flush 
    Une suite A-K-Q-J-10, les 5 cartes de la meme couleurs.
    En cas d'egalite, le classement par couleur est applique.

(2) Straight Flush 
    Une  suite de 5 cartes de la meme couleur, mais inferieur au Royal
    Flush. Le  gagnant est celui  qui possede  la carte de plus grande
    valeur. En cas d'egalite, la couleur decide.

(3) Four of a kind (Carre) 
    Quatre  cartes de meme rang,  une de chaque  couleur. Si plusieurs
    Carres, celui fabrique avec la carte de plus haut rang gagne.

(4) Full House 
    Une tierce accompagnee d'une paire.
    En cas de double, la plus grande Tierce gagne.

(5) Flush (Une Couleur)
    Cinq cartes de la meme couleur, ne formant pas de suite.
    S'il y a double, La plus grande carte gagne.
    Si c'est la meme, la deuxieme decide et ainsi de suite.
    Si les deux couleurs sont identiques, l'ordre des couleurs decide.

(6) Straight (Suite)
    Cinq cartes de rang qui se suivent, quelque soit la couleur.
    En cas de double, la suite contenant la carte de plus haute valeur
    gagne. Notez que l'on peut construire une suite avec 8-7-6-5-A.
    (Cette suite est inferieur a toutes les autres suites).

(7) Three of a kind (Tierce)
    Trois cartes de meme rang.
    Les deux restantes ne doivent pas une paire.
    En cas de double, la tierce de plus haut rang gagne.

(8) Two pairs (Deux paires)
    Deux fois deux cartes de meme rang, et une cinquieme seule.
    En cas de double, la plus grande paire gagne.
    Si la plus grande est identique, la deuxieme decide.
    Si  les deux paires sont  les memes, c'est la cinquieme  carte qui
    determine le gagnant.  (Par le rang. Si le rang est  identique, la
    couleur decide)

(9) One pair (Une paire)
    Deux cartes de meme rang et 3 cartes sans valeurs.
    Si les paires sont  identiques, c'est la plus fortes des 3  cartes
    restante qui dertermine le gagnant (rang puis couleur)
    Notez que les deux dernieres cartes n'influent pas sur le choix du
    gagnant !!

(10) High card or No pair (Rien !)
    Aucun jeu parmi ceux defini ci dessus.
    Le gagnant est definie conformement aux regles du Flush (voir (5)).

----------------------------------------------------------------------

	Chapitre 4.
	Code de conne conduite du joueur de POKER	


Le nombre de place a la table de jeu est limite a 5. Les users ne doit
en  aucun  cas  bloquer  la table alors  que  d'autres  veulent jouer.
N'utilisez  pas la table  de jeu  pour utiliser  seulement le  mode de
discussion contenu  dans le jeu.  Laissez la table  de jeu a  ceux qui
veulent jouer.

Aussi,  il est  interdit  de  rester inactif pendant une  periode de 2
parties  de  poker  successives. Si  cela arrivait,  dans le  pire des
cas, voici que qui  se passerait : Si vous etes le  maitre du jeu, les
autres  joueurs devront  attendre  3  minutes pour  que  le role  soit
transmis a quelqu'un d'autre et  pouvoir jouer. Et quand votre tour de
jeu arrivera, les autres joueurs  devront attendre encore 1 minute. Ce
genre  d'action est  totalement  inutile et  est  considere comme  une
offense serieuse.

N'employez  pas un language  offensant ou  agressif contre  les autres
joueurs.   Soyez sympa  et ne  faites pas  aux autres  ce que  vous ne
voudriez  pas qu'il vous  arrive a  votre tour  !

"Tricher"  avec  d'autres  joueurs  est  autorise, du  fait  qu'aucune
somme  d'argent ne  peut venir  du systeme.  Mais cette  "triche" doit
rester  conforme  aux regles  du  jeu  du  poker (bluff,  arrangement,
etc...).  Mais si  vous  etes pris  a tricher en  utilisant  un bug du
jeu,  cela  constitue un  crime !  Si vous  detectez  un  bug  pouvant
interferer la  course normale  du jeu et  que vous n'informez  pas les
Superviseurs  immediatement, ceci  constitue aussi  une  violation des
regles.

Les Violations  des regles  sont punies selon  les regles  definies au
niveau  du  BBS lui  meme.   Les  sanctions  peuvent aller  du  simple
avertissement au TWIT (verouillage du compte) et meme a la suppression
pure et simple de votre compte !

----------------------------------------------------------------------

	Chapitre 5.
	Fonctions internes et problemes de codages
 


Ce chapitre concernant le code du jeu n'interesse que les programmeurs
et les users  vraiment interesse par ce genre  d'information.  Si vous
ne voulez pas lire ce chapitre, passez directement au chapitre 6.

Ce  chapitre etant  tres  technique, je  ne  l'ai pour  le moment  pas
traduit. Si  quelqu'un est  volontaire pour s'en  charger, il  peut me
contacter par Mail>, j'integrerai sa traduction avec plaisir.

This  game  features:  
- a  command  system  working  with  broadcast technique
- semaphore locking for multi-express-messages (i.e. broadcasting)
- terminal escape sequences 
- redirection  of the  alarm()  handler to  an  own game-function  and
recalling of the alarm() handler after game-exit
- decentralized game handling
- avoiding of reentrant functions

Commands  between the  processes are  exchanged by  making use  of the
broadcast  technique. The  broadcast memory  area is  filled  with the
necessary  command  data,   and  then  the  signal  is   sent  to  all
processes. The problem with this,  however, is that the broadcast area
is  at the same  time also  used by  a lot  of other  system messages,
i.e. the login-information ("ABC just logged in"), and really a lot of
other stuff. Therefore caution had to be taken that these messages can
in no  case overwrite the  command data of  the poker game.   This was
ensured  by introducing  semaphore-locking. The  YAWC-code  contains a
lock_function() which was  part from the ISCA code  (!). This function
was changed  to also  lock the broadcast  area whenever a  function is
using this memory areay. But since multi-express-messages never give a
feedback signal  back, the  sending process has  to find out  when its
time to unlock the memory region  again. This is the weak point of the
game (admittedly). It is _impossible_ to find that out. Therefore, for
normal  broadcasts, unlocking  is done  immediately after  loading the
memory    structure    with    the    broadcast    data,    but    for
poker-command-messages, either  containing important game information,
or chat data, or even the vital process information about who is going
to be next  in turn, the structure is unlocked after  a timeout of 350
milliseconds. This  causes the  following behaviour: The  processes of
the people playing the game have enough time to read the data from the
structure, and additionally, the structure may not be loaded by either
another poker  game message or  a broadcast-like message from  the BBS
during that  time. This  way it is  ensured that the  messagee arrives
where it should, at just the small cost of a delay of 1/3 of a second.
But it  is possible  that the  message does not  arrive in  10042f all
cases.  If  the message is by  accident a vital  game information, the
game  will stall immediately,  possibly not  being able  to reactivate
itself by  making use  of the auto-purge  functions. Users  might note
this and leave the poker-table to enter it again. Except under special
testing  conditions, the  vital command  and message  data  did always
arrive  at all  poker  player processes,  which  gives the  programmer
enough  positive feedback  to believe  that stalls  of the  game might
either never or  hardly ever really take place.   A variant was tried,
in  which the  process currently  in turn,  sends a  signal  (a direct
X-message, so-to-say!) to  the player next in turn.  However, this did
not work as  well as the broadcast method. It used  to be unstable and
made the code crash because  of non-avoidable reentrant calling of the
sendx() and catchx() functions, respectively.

Terminal  escape   sequences  are  being   used  for  a   better  game
impression. They contain just a handful: - clear screen - clear to end
of line - go to cursor position X,Y on screen - save cursor position -
restore cursor position Problematic is the use of these sequences only
in   the   cases   when   the   user's   terminal   is   in   no   way
ANSI-compatible. But most terminals  are, thanks God. Some aren't, but
it should not be the intention  to limit the game impression for 9942f
all users, only to satisfy the need of a minority.

Redirection of  the alarm() handler:  Normally, during a  BBS session,
every 60 seconds a function is  called which does check for idling and
other important stuff. There may only be ONE alarm() handler active at
one time.  But the alarm()  handler was needed to realize the timeouts
during the  game, and to display  the clock(s). The  workaround was as
follows:  Upon  every invokation  of  the  normal sleeping()  function
within  the  BBS,  the current  time  is  stored  in a  global  system
variable. During the poker game,  the alarm() handler points to an own
function which upon  every call to itself checks  if it's already time
again to call the sleeping() function  of the BBS. The function in the
poker game works just with number of consecutive calls, and every call
takes place  all five seconds.  When  the user leaves  the poker game,
the  last call  to the  function will  determine that  the user  is no
longer  within the game,  and restore  the normal  sleeping() function
after   the  appropriate  amount   of  time   (which  can   easily  be
calculated). Therefore,  the normal course of  the sleeping() function
is not shifted by more than 4 seconds!

Decentralized   game  handling:   All  processes   contain   the  full
information  to do everything.  But only  certain processes  (i.e. the
game-master) are actually allowed to do something. The game-master and
the  current player  are stored  in shared  memory, and  every process
checks if it is allowed to  do functions, by first checking the shared
memory. Therefore  it is ensured that  no process does  what it should
not do!   The only function that  is invoked by all  processes, is the
checking of the  players online (whether they are  still all there and
logged in). In this case, the "removal" of a user from the table might
under certain circumstances be announced  twice. But that is all there
is, so this is no big deal. In testing, even under extreme conditions,
this did never occur.

Avoiding  of reentrant  functions: It  is clear  that a  process which
sends the command-message may not at the same time receive that signal
and   send  another  command-message.   This  would   cause  reentrant
functions, and I had this  often during my experiments. Especially the
function  which determines the  end of  the game,  is being  called by
non-privileged processes (not gamemaster, but current player!). Having
seen no way out of this,  I did the following: an override variable is
stored in shared memory, and when the game-end function is called, the
process calling  this function, stores  its ID in shared  memory. When
the  informational signal is  now sent  back to  all processes,  it is
checked back whether  the receiving process is the  sending process at
the same time. If it is, it waits till the sending function terminates
and  then the  receiving function  is re-entered.  This was  a special
problem with the previously mentioned semaphore-locking, but using the
methods as described,  it could be done more  or less "properly", even
when there *might* be more elegant ways of doing it.

There was a  lot of other technical problems, but  these were the ones
which might be of basic interest.

----------------------------------------------------------------------

	Chapitre 6.
	Les chiffres et credits


Les chiffres : 

70 000 : C'est la taille totale en octets du code source du jeu.
 2 500 : Nombre total de ligne de code.
   165 : Nombre d'heures passes au developpement.

Credits :

Idee originale de  : Michael Tritthart
Programmeur        : Michael Tritthart
Presentation       : Romain  Lheritier /  Michael Tritthart
Testeurs           : Tous les Sysops et Superviseurs de Global.

Dedicace                 : Ce programme est dedicace a  M.H.,
                           et a tout les users de Global Village BBS!

"I wish everyone a lot of fun with this game!  Hopefully you will have
as much  fun in  playing it  as I had  in coding  it (although  it was
sometimes a pain :)!"
					Mike.

Traduction :  Nicolas Aout / Septembre 1999

Last Updated