"pierre"feuille"ciseau"

[Fermé]
Signaler
-
Messages postés
30
Date d'inscription
vendredi 11 octobre 2013
Statut
Membre
Dernière intervention
1 juin 2016
-
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

Messages postés
25
Date d'inscription
samedi 12 mars 2011
Statut
Membre
Dernière intervention
17 mars 2011
509
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
30
Date d'inscription
vendredi 11 octobre 2013
Statut
Membre
Dernière intervention
1 juin 2016
11
Pile poil ce que je cherchais, je regarde ça.
Le post est ancien, mais merci !
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 773
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

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));

Franchement je n'ai rien compris les amis ><"
expliquer un peu plus clairement svp :)
comma on fer pour avoir l atitude pierre feuille ciseaux

je ne comprend rien xD

j'adore ce jeu il est trop au top
Messages postés
3
Date d'inscription
mercredi 16 mars 2011
Statut
Membre
Dernière intervention
16 mars 2011

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.
pliiiiiiiiiiiiiiiiiiiiiiiiiiiizz je veut fair l'attitude pierre feuille ciseaux

jai rien compris il fo faire koi??
Messages postés
235
Date d'inscription
jeudi 23 juin 2005
Statut
Membre
Dernière intervention
11 septembre 2009
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'=)