Posté le 09/06/2012 14:40
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 115 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 10/06/2012 19:09 | #
Tous les joueurs ne peuvent rencontrer qu'un seul joueur à la fois. On garde le même tableau de points. Chaque joueur ne tombe plus en face d'un seul joueur mais de plusieurs au fil des manches. Voila pourquoi trahir à tous les coups ne rapportera pas le maximum de points.
Je me demandais juste comment organiser équitablement la rencontre entre les joueurs...
Je posterai mon code plus tard, car en basic il change à chaque fois que les stratégies changent. Je vais plutôt programmer le tout en C, pour les variables ça sera plus simple.
Edit: Voila comment je pense programmer le jeu: (je débute en C)
Début programme:
Chaque stratégie logera dans un fonction:
Fonction 1, stratégie 1 renvoie une valeur qui correspond à trahir ou coopérer.
Fonction2, stratégie 2... etc.
For 1-> NuméroManche To NombreDeManches
For 1-> NuméroJoueur To NombreDeJoueurs
Le joueur n°(valeur de la variable NuméroJoueur) rencontre 1 des 3 autres joueurs aléatoirement. Il choisit alors de coopérer ou non grâce au fonctions correspondantes.
Attribution des points
Next
Next
Afficher le score.
Dites moi ce que vous en pensez
Citer : Posté le 11/06/2012 18:59 | #
Le problème de le faire en C est que tu devrais recompiler pour chaque stratégie...
Au passage, tu es au courant que ton code ressemble à tout sauf du C ?
Citer : Posté le 11/06/2012 19:15 | #
Le problème de le faire en C est que tu devrais recompiler pour chaque stratégie...
Au passage, tu es au courant que ton code ressemble à tout sauf du C ?
Bien sur, mais comme on est sur un forum ou la majeure partie des gens programment en basic j'ai écrit mon programme en français, pas directement en C.
Si tu as une idée pour éviter de recompiler le programme...
Citer : Posté le 11/06/2012 19:29 | #
Le C est entièrement constitué de fonctions...
Autant mettre "pour" que mettre un faux mot clé en anglais.
Ajouté le 11/06/2012 à 19:30 :
Au fait, si vous coulez pas mon idée de 4 joueurs en même temps, vous voulez faire comment ? C\'est pas mal mon idée, ça met du piquant. Parce qu\'avec la règle à 2 si tu trahis tu ne peux pas perdre...
Citer : Posté le 12/06/2012 09:47 | #
Eh bah si !
Cyatophilum propose de faire une sorte de tournois où les IA s'affrontent aléatoirement.
Si un joueur trahit à chaque fois, il risque de ne gagner dans certains cas qu'un seul point par manche. Au même tour, les autres joueurs s'affrontent. S'ils coopèrent tous les deux, ils repartent avec trois points chacun.
Dans ce cas là, la stratégie de Cartix n'est forcément avantageuse.
@Cyatophilum : je te conseille de coder le programme en basic. Ce sera nettement plus simple
Citer : Posté le 12/06/2012 11:01 | #
Eh bah si !
Cyatophilum propose de faire une sorte de tournois où les IA s'affrontent aléatoirement.
Si un joueur trahit à chaque fois, il risque de ne gagner dans certains cas qu'un seul point par manche. Au même tour, les autres joueurs s'affrontent. S'ils coopèrent tous les deux, ils repartent avec trois points chacun.
Dans ce cas là, la stratégie de Cartix n'est forcément avantageuse.
@Cyatophilum : je te conseille de coder le programme en basic. Ce sera nettement plus simple
Tu as compris ce que je voulais dire
Vu qu'en ce moment je révise le bac, je vais rester sur du Basic pour le moment.
Je vous envoye le code dès que ça ressemble à quelque chose.
(En C, rien que pour tirer un chiffre entre 1 et 4 aléatoirement ... )
Citer : Posté le 12/06/2012 12:04 | #
La fonction de base pour générer un nombre aléatoire est buggé. Pierrotll et Eiyeron m'avait fourni un code fonctionnel (impossible de remettre la main dessus )
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 12/06/2012 12:13 | #
C'est à dire? Toto, si tu précises, je peux peut-être le retrouver
.
Citer : Posté le 12/06/2012 13:28 | #
Je crois qu'il est quelque part dans ce topic.
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 12/06/2012 13:44 | #
En quoi elle est buguée?
Citer : Posté le 12/06/2012 16:16 | #
Bah, Pierrotll m'a dit qu'elle générait mal un nombre aléatoire. En fait, ce n'était pas aussi aléatoire que ça...
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 12/06/2012 17:02 | #
Quoi ?
J'ai du mal me faire comprendre parce que je ne vois pas de quoi tu parles.
Les fonctions standards rand et srand fonctionnent normalement.
Citer : Posté le 12/06/2012 17:08 | #
Tu m'avais parlé d'un truc avec RTC machin chose...
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 12/06/2012 18:19 | #
Il est vrai que rand() a un "bug" : les nombres pseudo-aléatoires sont les mêmes à chaque fois que tu relances le programme. D'où l'utilité de srand().
Citer : Posté le 12/06/2012 18:22 | #
le srand pour initialiser le générateur d'aléatoires, tu l'initialises avec le RTC afin d'avoir à chaque lancement des nombres différents
Citer : Posté le 12/06/2012 18:31 | #
C'est la fonction time qui n'est pas implémentée (et qu'on remplace par RTC_GetTicks), rand et srand sont tout à fait normales
Citer : Posté le 12/06/2012 20:24 | #
D'accord, je comprends petite nuance, merci beaucoup !
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 12/06/2012 20:36 | #
Pourquoi programmer ce jeu en C, pour quelque chose de si simple ?
Pour la gestion des variables, utilise les listes. Je vais essayer en basic...
Escape prison
Bloxorz
Free wheel
QR code
Nombre en or
RayCasting Engine
Mario Party
Zelda
et Planète Casio
Citer : Posté le 12/06/2012 21:46 | #
Ouais finalement je vais le programmer en Basic. Et je vais avoir besoin de votre aide =S.
Purobaz : ça à l'air simple.. en effet ...
J'ai commencé mais il reste pas mal de boulot.
Les action ( trahir=0 , coopérer = 1 ) seront stockées dans List n [1]
Les scores seront stockés dans List n [3]
n correspond au numero de la stratégie.
Début du programme:
1 -> List 1 [1] // Stratégie 1 coopére au début.//
1 -> List 2 [1]
0 -> List 3 [1]
1 -> List 4 [1]
0 -> List 1 [3] // Les scores sont mis à zéro//
0 -> List 2 [3]
0 -> List 3 [3]
0 -> List 4 [3]
1 -> Z
// Manche Z //
// La stratégie 1 rencontre une des 3 autres stratégies.//
Do
Int 4 Ran# +1 -> A
LpWhile A =1
// cas où la elle rencontre la 2ème stratégie//
if A = 2 : then if List 1 [1] = 1
then List 1 [3] +3 -> List 1 [3]
List 2 [3] +3 -> List 2 [3]
else List 1 [3] +5 -> List 1 [3]
ifend : 1 -> List 1 [1] : if end
// cas où la elle rencontre la 3ème stratégie//
if A = 3 : then if List [1] = 1
then List 3 [3] + 5 -> List 3 [3]
else List 1 [3] + 1 -> List 1 [3]
List 3 [3] + 1 -> List 3 [3]
ifend : 0 -> List 1 [1] : ifend
// cas où la elle rencontre la 4ème stratégie//
if A = 4
then if Frac (Z/2) = 0
then if List 1 [1] = 1
then List 1 [3] + 3 -> List 1 [3]
List 4 [3] + 3 -> List 4 [3]
else List 1 [3] + 5 -> List 1 [3]
ifend
else if List 4 [1] = 0 And List 1 [1] = 0
then List 1 [3] + 1 -> List 1 [3]
List 4 [3] + 1 -> List 4 [3]
else if List 4 [1] = 0 And List 1 [1] = 1
then List 4 [3] + 5 -> List 4 [3]
else if List 4 [1] = 1 And List 1 [1] = 0
then List 1 [3] + 5 -> List 1 [3]
else if List 4 [1] = 1 And List 1 [1] = 1
then List 1 [3] + 3 -> List 1 [3]
List 4 [3] + 3 -> List 4 [3]
ifend
ifend
En gros, je me suis arrêté à la première manche, et celle-ci n'est pas terminée.
Car la stratégie 1 rencontre 1 des 3 autre stratégies. Mais j'ai un problème:
-> Un stratégie peut rencontrer plusieurs stratégies pendant la même manche ( si je continue mon code pour les autres stratégies).
-> Le code est trop long, comment faire pour le raccourcir ? Y-a t-il des erreurs ?
Citer : Posté le 12/06/2012 21:57 | #
Pas meiux avec une balise code?
Citer : Posté le 13/06/2012 00:02 | #
Int 4 Ran# +1 -> A
LpWhile A =1
Je ne comprends vraiment pas pourquoi tu fais un code aussi compliqué pour si peu de choses. Le nombre de points gagnés dans telle ou telle situation est écrit plein de fois à plein d'endroits différents. Le cas où le joueur 1 rencontre le joueur 2 ne dépend pas du contenu de la liste 2, à quoi sert la liste 2?