IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

problème pour fausse bombe


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut problème pour fausse bombe
    Bonjour,

    Voilà, je cherche à créer un programme pour un jeu. Je dois faire une "fausse bombe".

    j'ai déjà fait le code mais je ne sais pas comment imbriquer la partie "déclanchement, arret, etc..." et la partie "compte à rebour". De plus, j'aimerais que l'ordi joue un son à partir d'un certain temps ainsi qu'un autre son si le désamorçage à échoué.

    le principe que j'ai fais pour le coeur du programme, c'est que le "poseur" doit entrer un nombre entre 1 et 100, ce qui choici un code de désactivation différent suivant le nombre entré.
    Ensuite, une devinette est affichée au démineur et s'il répond juste, le compte à rebour s'arrète et un message lui disant que la bombe est désamorcée s'affiche.
    S'il échoue, le programme joue une musique et un message apparait disant qu'il à perdu.

    en résumé, c'est simple. Mais en pratique, je ne sais pas comment faire pour que le compte à rebour tourne tout en laissant affiché la devinette et permettant au démineur d'entrer la réponse.
    Et je ne sais pas non plus comment faire jouer un son au programme.

    voici le code actuel: (il n'y a pas de devinettes, juste un nombre à 9 chiffres)
    pour le programme lui-même:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
     
    #include <stdio.h>
    #include <stdlib.h>
     
    void flush() {
    	while (getchar() != '\n');
    }
     
    int main (){
    	char choix_activation = 'n';
    	int activation1 = 123654789;
    	int activation2 = 147852369;
    	int activation3 = 987456321;
    	int activation4 = 963258741;
    	int activation5 = 456987123;
    	int activation6 = 456321789;
    	int activation7 = 852369741;
    	int activation8 = 852147963;
    	int activation9 = 659863145;
    	int activation10 = 95147523;
    	int code = 0;
    	int choix = 0;
     
     
    	printf("veuillez entrer un nombre entre 1 et 100 \n");
    	do{
    		scanf("%i", &choix);
    		flush();
    		if (choix<101 && choix>0){
    		}
    		else {
    			printf("erreur dans le choix, veuillez recommencer \n");
    		}
    	}while (choix>100 || choix<1);
    		do{
    			printf("pour activer la bombe, appuyez sur o\n");		
    			scanf("%c", &choix_activation);
    			flush();
    		}while (choix_activation != 'o');
    			system("cls");
     
    			if (choix>0 && choix<11){
    				printf("le code est %i\n", activation1);
    				printf("code: ");
    				scanf("%i", &code);
    				if (code == activation1){
    					system("cls");
    					goto reussi;
    				}
    				else {
    					goto echoue;
    				}
    			}
    			else if (choix>10 && choix<21){
    			printf("le code est %i\n", activation2);
    			printf("code: ");
    				scanf("%i", &code);
    				if (code == activation2){
    					system("cls");
    					goto reussi;
    				}
    				else {
    					goto echoue;
    				}
    			}
    			else if (choix>20 && choix<31){
    			printf("le code est %i\n", activation3);
    			printf("code: ");
    				scanf("%i", &code);
    				if (code == activation3){
    					system("cls");
    					goto reussi;
    				}
    				else {
    					goto echoue;
    				}
    			}
    			else if (choix>30 && choix<41){
    			printf("le code est %i\n", activation4);
    			printf("code: ");
    				scanf("%i", &code);
    				if (code == activation4){
    					system("cls");
    					goto reussi;
    				}
    				else {
    					goto echoue;
    				}
    			}
    			else if (choix>40 && choix<51){
    			printf("le code est %i\n", activation5);
    			printf("code: ");
    				scanf("%i", &code);
    				if (code == activation5){
    					system("cls");
    					goto reussi;
    				}
    				else {
    					goto echoue;
    				}
    			}
    			else if (choix>50 && choix<61){
    			printf("le code est %i\n", activation6);
    			printf("code: ");
    				scanf("%i", &code);
    				if (code == activation6){
    					system("cls");
    					goto reussi;
    				}
    				else {
    					goto echoue;
    				}
    			}
    			else if (choix>60 && choix<71){
    			printf("le code est %i\n", activation7);
    			printf("code: ");
    				scanf("%i", &code);
    				if (code == activation7){
    					system("cls");
    					goto reussi;
    				}
    				else {
    					goto echoue;
    				}
    			}
    			else if (choix>70 && choix<81){
    			printf("le code est %i\n", activation8);
    			printf("code: ");
    				scanf("%i", &code);
    				if (code == activation8){
    					system("cls");
    					goto reussi;
    				}
    				else {
    					goto echoue;
    				}
    			}
    			else if (choix>80 && choix<91){
    			printf("le code est %i\n", activation9);
    			printf("code: ");
    				scanf("%i", &code);
    				if (code == activation9){
    					system("cls");
    					goto reussi;
    				}
    				else {
    					goto echoue;
    				}
    			}
    			else if (choix>90 && choix<101){
    			printf("le code est %i\n", activation10);
    			printf("code: ");
    				scanf("%i", &code);
    				if (code == activation10){
    					system("cls");
    					goto reussi;
    				}
    				else {
    					goto echoue;
    				}
    			}
     
     
    reussi:system("cls");
    	printf("\n\n\n\n BOMBE DESAMORCEE\n\n\n\n\n\n\n\n\n\n\n\n");
    	system("PAUSE");
    	return 0;
    echoue:system("cls");
    	printf("\n\n\n\nPERDU\n\n\n\n\n\n\n\n\n\n\n\n");
    	system("pause");
    	return 0;
    }
    et là, le code récupéré pour le compte à rebour:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
     
    void wait ( int seconds ){
      clock_t endwait;
      endwait = clock () + seconds * CLOCKS_PER_SEC ;
      while (clock() < endwait) {}
    }
     
    int main (){
      int n;
      for (n=10; n>0; n--){
    	  system("cls");
    	  printf ("%d\n",n);
        wait (1);
      }
      system("cls");
      printf ("fin du temps!!!\n");
      system("pause");
      return 0;
    }
    je tiens à préciser que séparément, ces 2 codes fonctionnent parfaitement.

    encore merci pour votre aide

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par demonofshadow Voir le message
    Bonjour,

    Voilà, je cherche à créer un programme pour un jeu. Je dois faire une "fausse bombe".

    j'ai déjà fait le code mais je ne sais pas comment imbriquer la partie "déclanchement, arret, etc..." et la partie "compte à rebour". De plus, j'aimerais que l'ordi joue un son à partir d'un certain temps ainsi qu'un autre son si le désamorçage à échoué.
    Je trouve ça assez malsain comme sujet... Il n'y a donc que ça qui motive les jeunes ? Poser des bombes ?

    Ca me fait penser aux cours de math pour dealers où ils apprennent les règles de trois en coupant la poudre ...

    Genre ça (mais là, c'est clairement une parodie)

    http://www.parodie.com/quizz.htm

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    je fais de l'airsoft...
    et le fait d'avoir une fausse bombe rendrait les parties plus "sportive".

    c'est pour ça que j'essai de mettre du son au programme sinon, on ne saurai pas où est planqué l'ordi.

    Mais si ça te gêne, t'as qu'à te dire que je fais un questionnaire en c++ avec un timer et de la musique (en gros, c'est ça).


    le corps du programme (questionnaire) est téléchargeable ici

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    bon... suite à vos aides, j'ai quand même réussi à pas mal avancer...

    mais là, j'ai vraiment besoin d'aide...

    est-ce que quelqu'un sait comment faire en sort pour qu'un compte à rebour puisse tourner sans s'arrèter en attendant qu'il y aie du texte entré ??

    je m'explique...
    pour répondre à la question, le joueur doit entrer une suite de caractères.
    j'aimerai qu'indépendement, il y aie un timer qui tourne. or, si j'incorpore les 2 en même temps, le chrono s'arrète à cause du "scanf".


    voilà où j'en suis actuellement...

  5. #5
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par demonofshadow Voir le message
    est-ce que quelqu'un sait comment faire en sort pour qu'un compte à rebour puisse tourner sans s'arrèter en attendant qu'il y aie du texte entré ??
    Il faut un thread : http://emmanuel-delahaye.developpez.com/pthreads.htm

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    houlàlà... je sens venir une de ces migraines...

    soit c'est hyper compliqué, soit c'est moi qui panique...

    tout ce que je veux, c'est que le compte à rebour ne s'arrète pas lorsque le programme rencontre un scanf... c'est tout...

    il n'y aurait pas une autre solution ??? (ou une autre explication...)
    je sais pas moi.... un truc du genre:

    si tu rencontre un scanf, alors tu ne t'arrète pas en attendant la saisie...

    (je sais, c'est pas possible...) mais je cherche un truc simple. je débute et j'ai déjà de la peine... alors est-ce qu'il n'y aurait pas une solution plus "simple" ??

    ou alors dire au programme d'exécuter un action (bipper) toutes les x secondes ? (avec une commande d'arrêt à la fin).
    Ouais, en fait, ce serait plus simple d'avoir un "bip" toutes les x secondes (sans s'arrèter lors d'un scanf). est-ce que ça c'est possible ?

Discussions similaires

  1. [fileupload] problème pour parser la requete
    Par jaimepasteevy dans le forum Struts 1
    Réponses: 12
    Dernier message: 24/04/2008, 12h02
  2. Réponses: 13
    Dernier message: 23/12/2004, 18h01
  3. C/asm : problème pour link
    Par SteelBox dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 06/04/2004, 23h03
  4. Réponses: 3
    Dernier message: 29/08/2003, 10h57
  5. Problème pour récupérer la clé primaire
    Par caramel dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/04/2003, 13h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo