"pierre"feuille"ciseau"

Fermé
guiguicod - 17 nov. 2007 à 21:49
Pierre Feuille Messages postés 30 Date d'inscription vendredi 11 octobre 2013 Statut Membre Dernière intervention 1 juin 2016 - 6 janv. 2014 à 13:43
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 ^^
A voir également:

11 réponses

.N Messages postés 25 Date d'inscription samedi 12 mars 2011 Statut Membre Dernière intervention 17 mars 2011 562
Modifié par .N le 17/03/2011 à 03:50
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 30 Date d'inscription vendredi 11 octobre 2013 Statut Membre Dernière intervention 1 juin 2016 11
6 janv. 2014 à 13:43
Pile poil ce que je cherchais, je regarde ça.
Le post est ancien, mais merci !
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
17 nov. 2007 à 22:43
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
20 mars 2010 à 18:39
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
9 mars 2011 à 14:13
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
comma on fer pour avoir l atitude pierre feuille ciseaux
1
joueur de dofus
28 nov. 2009 à 12:02
je ne comprend rien xD
0
metiss97460
20 mars 2010 à 17:45
j'adore ce jeu il est trop au top
0
Zyanna-44 Messages postés 3 Date d'inscription mercredi 16 mars 2011 Statut Membre Dernière intervention 16 mars 2011
16 mars 2011 à 20:29
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
pliiiiiiiiiiiiiiiiiiiiiiiiiiiizz je veut fair l'attitude pierre feuille ciseaux
0
full-master
25 juin 2008 à 21:21
jai rien compris il fo faire koi??
-1
dededede4 Messages postés 235 Date d'inscription jeudi 23 juin 2005 Statut Membre Dernière intervention 11 septembre 2009 9
13 avril 2008 à 19:10
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