"pierre"feuille"ciseau"

guiguicod -  
Pierre Feuille Messages postés 34 Statut Membre -
Bonjour,
voila j'aimerais faire un "pierre"feuille"ciseau" en C je m'explique

prenons 2 lettres a et b

si a=1 "pierre" b=1"piere" donc egalité
si a=2"papier" b=1"pierre" donc a gagne
si a=3"ciseau" b=2"papier"donc a gagne

et pour avoir ses nombres ba justement c'est le probleme
un nombre donner aleatoirement lorsqu'on appuie sur entrée par exemple

sa parais compliquer ou tout simplement mal expliquer ^^

11 réponses

.N Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   577
 
Mais bon sang... si j'étais pessimiste, je dirais que voilà un ramassis d'absurdités... toutes les réponses pertinentes dépréciées, et les idioties en tête de liste...
+1 pour geokie et fiddy

C'est possible de simler le hasard, mais pas vraiment de le créer. Effectivement, on parle de nombres pseudo-aléatoires. Mais en fait, c'est la définition même du hasard qui constitue une polémique. En mathématiques, on peut qualifié de hasardeux ce qui possède des propriétés chaotiques, bref un système (dynamique) instable, et donc difficilement prédictible.

Alors, dans ce cas, c'est en effet une bonne chose d'utiliser srand(time(NULL));
et rand().

pour le code, qui est véritablement simplissime, voici ce à quoi le résultat devrait ressembler :
#include <stdlib.h> 
#include <stdio.h> 
#include <string.h> 
#include <time.h> 

#define LANG_COUNT 2 
#define OBJECT_COUNT 3 

int main(int argc, char*argv[]) 
{ 
    if (argc != 2) 
    { 
        printf("Using : <object choice> (\"?\" to see differents choices)\n"); 
        return -1; 
    } 

    srand(time(NULL)); 
    const char* choices[] = 
    { 
        "rock", 
        "roche", 
        "paper", 
        "papier", 
        "scissors", 
        "ciseaux" 
    }; 

    const char gamesStates[][OBJECT_COUNT] = 
    { 
        {1,0,1}, 
        {1,1,0}, 
        {0,1,1} 
    }; 

    long i, ii, iii; 
    if (!strcmp("?", argv[1])) 
    { 
        for (i=0; i<OBJECT_COUNT; i++) 
        { 
            for(ii=0; ii<LANG_COUNT-1; ii++) 
                printf("%s/", choices[i*LANG_COUNT+ii]); 
            printf("%s, loose against : \n", choices[i*LANG_COUNT+ii]); 

            for(ii=0; ii<OBJECT_COUNT; ii++) 
            { 
                if (!gamesStates[i][ii]) 
                { 
                    printf("-"); 
                    for(iii=0; iii<LANG_COUNT-1; iii++) 
                        printf("%s/", choices[ii*LANG_COUNT+iii]); 
                    printf("%s\n", choices[ii*LANG_COUNT+iii]); 
                } 
            } 
        } 

        return 0; 
    } 

    for (i=0; strcmp(choices[i], argv[1]) && i<OBJECT_COUNT * LANG_COUNT; i++); 

    if (i >= OBJECT_COUNT * LANG_COUNT) 
    { 
        printf("There exists no objects choices with name %s.", argv[1]); 
        return -1; 
    } 

    i /= LANG_COUNT; 

    long computerChoice = rand() % OBJECT_COUNT; 

    printf("You choosed : "); 
    for(ii=0; ii<LANG_COUNT-1; ii++) 
                printf("%s/", choices[i*LANG_COUNT+ii]); 
            printf("%s\n", choices[i*LANG_COUNT+ii]); 

    printf("Computer choosed : "); 
    for(ii=0; ii<LANG_COUNT-1; ii++) 
                printf("%s/", choices[computerChoice*LANG_COUNT+ii]); 
            printf("%s...\n", choices[computerChoice*LANG_COUNT+ii]); 

    switch(gamesStates[i][computerChoice]-gamesStates[computerChoice][i]) 
    { 
        case 1: 
            printf("You win!\n"); 
        break; 

        case 0: 
            printf("The game is null.\n"); 
        break; 

        case -1: 
            printf("You loose.\n"); 
        break; 
    } 
    return 0; 
} 
17
Pierre Feuille Messages postés 34 Statut Membre 11
 
Pile poil ce que je cherchais, je regarde ça.
Le post est ancien, mais merci !
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Salut,

Si tu veux le faire contre la machine : tu lui fais choisir un nombre au hasard : srand(time(NULL)); 1+ (float)rand() /RAND_MAX * 3;
Ensuite, toi tu choisis, en appuyant sur la touche 1 2 ou 3.
Et enfin tu affiches la réponse de l'ordinateur, qui regarde qui est le gagnant.

Je te laisse réfléchir pour la programmation, elle n'est pas très dur. Mais reviens, si tu as besoin d'aide ;)

Cdt
4
Utilisateur anonyme
 
Bonjour.
On ne peux pas générer de nombres aléatoires en informatique, mais on peux se servir de l'horloge système pour en générer des pseudo-aléatoires :
#include <time.h>
srand(time(NULL));
3
Rien compris
 
Franchement je n'ai rien compris les amis ><"
expliquer un peu plus clairement svp :)
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gamima
 
comma on fer pour avoir l atitude pierre feuille ciseaux
1
joueur de dofus
 
je ne comprend rien xD
0
metiss97460
 
j'adore ce jeu il est trop au top
0
Zyanna-44 Messages postés 3 Statut Membre
 
Moi j'ai adopté une technique : je vise toujours la feuille, la souris prête à cliquer sur le ciseau ! xD
Il faut te mettre un rythme dans la tête, et au moment ou le "rythme" résonne dans ta tête tu appuie. ^^
Perso, te risque pas à faire du hasard ou à faire l " défi " si t'as gagner, tu fais abandonner après.
0
amine
 
pliiiiiiiiiiiiiiiiiiiiiiiiiiiizz je veut fair l'attitude pierre feuille ciseaux
0
full-master
 
jai rien compris il fo faire koi??
-1
dededede4 Messages postés 237 Statut Membre 9
 
L'aléatoire en informatique n'existe pas ! ( c'est phisique )
Je te conseille de donné un ordre des gagnient ( 1 : 1-2, 2: 3-1; 3 : 22, 4: 3-2, 5:.... ) et au bout de 100 ( par ex ) sa recommence a 1....
Bon pour le script c'est pas trop conpliquer...
Fin jler pas sur moi ^^'

Mais bon.
plus x'=)
-4