maitretarot-devel-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Maitretarot-devel-fr] les encheres ne marche toujours pas


From: philippe brochard
Subject: Re: [Maitretarot-devel-fr] les encheres ne marche toujours pas
Date: 12 May 2002 21:27:51 +0200
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2

ok, ton code marche (voir plus bas)
mais je reprend le protocole quand même parce que je crois que
j'ai pas tout compris à ce qui est ecrit.


Yves Mettier <address@hidden> writes:

> On 12 May 2002 15:13:25 +0200
> philippe brochard <address@hidden> wrote:
> 
> > 
> > bon, j'ai vraiment un probleme avec les encheres.
> > voila le code que j'ai fait et la partie du protocole qui va avec :
> > 
> > 
> > ---------------------------------------------------------------------
> > ------ La sequence suivante est repetee quatre fois:
for (i = 0; i < 4; i++)
{
  ok = 0;
  while (ok == 0)
    {
> > S->C(4*gint) : chaque gint correspond à l'enchère du joueur dans
> >            l'ordre des places. Ils sont à -1 si le joueur n'a pas
> >            encore parlé. C'est au client de déterminer grace à ces
> >            enchères qu'elle est sa position.
      get_bid   (les 4 gint)

> > S->C(1*gint) : Si le gint est non nul, on passe à la suite. S'il est
> > nul, on revient à l'étape précédente (attendre les 4*gint).
      ok = bid_is_valide  (1 gint)
    }  /* si ok est null on revient à l'etape precedente */
    
> > C->S(1*gint) : Uniquement si le gint précédent était non nul. Mise du
> > client.
> >                Si la valeur est erronée, le serveur considère que le
> >            client passe.
  /* avec le while, ok est forcement à 1 si on arrive ici */
  make_bids
  send_bids

> > Fin de la sequence
}

> > 
> > S->C(4*gint) : resultat final des enchères. C'est au client de savoir
> >            si quelqu'un a pris et qui.  Si personne n'a pris, les
> >            4 gint sont à 0, et c'est au client de savoir qu'on va
> >            voir le chien puis recommencer la partie.
> > ---------------------------------------------------------------------
> > 
> > 
> > dans mt_ncurses_client/src/main.c
> > ---------------------------------------------------------------------
> > ------
> >   for (gi = 0; gi < nb_player; gi++)
> >     {
> >       ok = 0;
> > 
> >       while (ok == 0)
> >     {
> >       player_get_bid (&player);
> > 
> >       player_client_draw_desktop (&player, "Player ??? make its
> >       bid");
> > 
> >       ok = player_get_bid_is_valide (&player);
> >     }
> > 
> >       if (player_have_to_make_bid (&player) != 0)
> >     {
> >       player_client_make_bid (&player);
> >       player_send_bid (&player);
> >     }
> > 
> >       sprintf (str, "ICI gi=%d", gi);
> >       print_message (str);
> >     }
> > 
> >   /* Get final bids */
> >   player_get_bid (&player);
> > ---------------------------------------------------------------------
> > ------
> > 
> > 
> > le code pour chaque fonctions est dans
> > 
> >         mt_ncurses_client/src/player.c
> > ou      mt_ncurses_client/src/player_client.c
> > 
> > et nb_player vos 4.
> > 
> > 
> > Si vous voyez ou je fait une erreur...
> 
> Je capte rien a la structure de ton code. J'ai l'impression qu'il y a
> une boucle de trop.
> 
> Je te le refais, en esperant pas me tromper.
>    for (gi = 0; gi < nb_player; gi++)
>      {
>        ok = 0;
>  
>        /* lit les 4+1 gint */
>        player_get_bid (&player);
>  
>        player_client_draw_desktop (&player, "Player ??? make its bid");
> 
> /*     c'est quoi player_get_bid_is_valide() ?
>  *     Je commente parce que je crois que ca ne sert pas
>  *     ok = player_get_bid_is_valide (&player);
>  */
> 
>        /* test si c'est au joueur de faire son enchere
>         * ici, il vaut mieux tester en fonction des 4 premiers gint
>         *  plutot qu'en fonction du gint qui suit
>         *  parce que le gint qui suit risque de disparaitre
>         */
>        if (player_have_to_make_bid (&player) != 0)
>       {
>           /* Calcule l'enchere possible en fonction du jeu des des
>            * encheres deja faites des autres joueurs
>            */
>         player_client_make_bid (&player);
>           /* envoie un gint: c'est l'enchere */
>         player_send_bid (&player);
>       }
>  
>        sprintf (str, "ICI gi=%d", gi);
>        print_message (str);
>      }
> 
> 
> 
> > 
> > En tout cas, la partie avec
> >       sprintf (str, "ICI gi=%d", gi);
> >       print_message (str);
> > 
> > n'est atteinte qu'une fois et on ne sort jamais de la boucle for,
> > en plus des fois sa segfault :(
> 
> J'ai pas teste ce que je t'ai ecrit.
> J'ai l'impression que ton while ne sert a rien.
> 
Ben, le while sert juste à repeter l'acqisition des encheres temps
que le gint n'est pas à 1 (comme dis dans le protocole).

> > bon en attendant, je teste la lib de maitretarot.
> 
> Alors?
> 
J'ai des pb de compilation :

configure.in: 22: required file `./ltconfig' not found

j'ai donc pris le ltconfig de /usr/share/libtool/ltconfig


ensuit un pb avec PKG :

./configure: line 1754: syntax error near unexpected token 
`PKG_CHECK_MODULES(GLIB,'
./configure: line 1754: `PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.1)'

je me suis arreté la, j'attend que tu mette tout ça dans maitretarot
et libmaitretarot.


> De mon cote, j'ai quelques trucs a faire sur gtktalog.
> Ensuite, je forke maitretarot dans le CVS pour le compiler contre
> libmaitretarot.
> 
> Un petit truc sur les clients et libmaitretarot.
> Est-ce qu'il est envisageable d'avoir les fonctions qui lisent/ecrivent
> au serveur suivant le protocole dans libmaitretarot?
> Le but, c'est bien sur que le code commun a toutes les IA et a toutes
> les GUI ne soit pas duplique mais dans libmaitretarot.
> 
oui, c'est faisable, le code commun est dans player.c player.h
toutes ces fonction prennent en argument la structure player_t qu'il
suffit de remplir avant chaque envoie.

exemple avant d'envoyer le chien, il faut remplir player->chien[6]
                 "      une carte a jouer    "    player->card_play
etc...


pour l'instant, ce code est dupliquer dans le client et dans mt_dolphin_ia.



Philippe

-- 
,-------------------.         ,---------------,----------------------.
| Philippe Brochard |   ...   | address@hidden | http://hocwp.free.fr |
`------------------(_  (. .)  `---------------'----------------------'
-------------------ooO--(_)--Ooo--------------------------------------



reply via email to

[Prev in Thread] Current Thread [Next in Thread]