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

[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--------------------------------------



reply via email to

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