[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Maitretarot-devel-fr] le client avance :)
From: |
philippe brochard |
Subject: |
Re: [Maitretarot-devel-fr] le client avance :) |
Date: |
03 Jun 2002 14:30:06 +0200 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 |
"address@hidden"<address@hidden> writes:
> > Yves Mettier <address@hidden> writes:
> >
> > > On 01 Jun 2002 23:54:41 +0200
> > > philippe brochard <address@hidden> wrote:
> > >
> > > >
> > > > enfin il avance mais j'ai quand meme pris le temps
> de faire quelques
> > > > modifs dans le code de mon nouveau gestionnaire de
> fenetre (evilwm :)
> > > >
> > > > Bon, donc au programme :
> > > >
> > > > - j'ai rendu la fonction main plus propre en
> mettant le code d'une
> > > > partie dans game.c game.h
> > > >
> > > > - je laisse le jeu intact quand on a joue une
> carte -> ca va permettre
> > > > de voir comment reagit le serveur quand on joue 2
> fois la meme carte
> > > > :)(Par la suite ca sera une option)
> > >
> > > Est-ce que tu aurais moyen de forker le client? Un
> qui soit 'propre',
> > > pour les joueurs, pour s'amuser. Et un qui permette
> de tester le serveur
> > > en laissant jouer deux fois la meme carte par
> exemple, ou jouer une
> > > carte qui n'est pas dans le jeu. Bref, tenter de
> tricher ou meme de
> > > faire planter le serveur. A moins que ce ne soit plus
> facile de ne pas
> > > forker mais au contraire d'avoir une variable (parait
> que c'est mieux
> > > qu'un #define et la compilation conditionnelle: j'ai
> vu ca dans les GNU
> > > coding standards), qui est mise a une valeur par
> defaut pour le joueur,
> > > mais qu'on peut mettre a une valeur differente a la
> compilation ou via
> > > un "cheat code" pour tenter de peter le serveur ou de
> tricher?
> > >
> > Personnelement, je prefere des #define pour mettre ou
> ne pas mettre du
> > code, ca me semble plus facile a faire/maintenir => une
> simple
> > recompilation pour ajouter/enlever du code pour
> tricher :
> > c'est plus facile de faire
> > #ifndef TRICHE
> > player_remove_card_play (player);
> > #endif
> >
> > pour pouvoir jouer 2 fois la meme carte, plutot que de
> faire un fork
> > complet du programme.
>
> OK.
>
> Alors forke pas.
> Par contre, dans les gnu coding standards, il est dit
> qu'il vaut mieux mettre:
>
> if(triche) {
> player_remove_card_play (player);
> }
>
> que
>
> #ifndef TRICHE
> player_remove_card_play (player);
> #endif
>
> Raison: le preprocesseur analyse tout et est capable de
> detecter des erreurs partout, alors que si tu fais de la
> compilation conditionnelle, le code n'est pas analyse la
> ou ce ne sera pas compile.
>
Ok, ca me va, les deux methodes sont propres. Ca depend juste
de ce qu'on veut faire :
- soit on laisse le code pour la triche => on definit une
variable triche et a la rigueur elle est configurable via
un fichier de config.
- soit on enleve le code apres avoir teste le serveur et
dans ce cas des #define suffisent.
mais, bon la solution 1 me plait plus car la triche est
integree au code et comme tu dit, le compilo analyse la
ligne de code => si on change le nom d'une fonction dans
le code normal et pas dans le code triche, il y aura pas
de warning avec les #define alors qu'avec la variable,
la compilation ne passera pas (c'est mieux).
Donc c'est partie pour la solution 1. et un truc de plus
a rajouter dans la config :)
Philippe
--
,-------------------. ,---------------,----------------------.
| Philippe Brochard | ... | address@hidden | http://hocwp.free.fr |
`------------------(_ (. .) `---------------'----------------------'
-------------------ooO--(_)--Ooo--------------------------------------