Partage
  • Partager sur Facebook
  • Partager sur Twitter

input non bloquant

Sujet résolu
Anonyme
    21 février 2020 à 23:17:39

    Bonjour,

    J'aimerais pour faire un jeu de la vie avoir un input non bloquant pour pouvoir arrêter le "jeu" (c'est très le fun xD) pour pouvoir sauvegarder la partie palpitante qui ce déroulait sous mes yeux. J'ai donc vu la fonction getch mais je ne sais pas du tout comment l'utiliser, tout ce que je sais, c'est que c'est ungetchar non bloquant mais dans le code suivant il est encore plus bloquant que le getchar T-T

    #include <stdio.h>
    #include <conio.h>
    
    typedef int bool;
    #define TRUE 1
    #define FALSE 0
    
    int main(){
        //init
        bool stop = FALSE;
        int i=0;
        char car;
        car = 'A';
    
        //code
        car = getchar();
        printf("%c",car);
    
        printf("Voyeux noel!\n");
        do{
            if (car == '1'){
                stop = TRUE;
            }else{
                car = getch();
            }
            i++;
        }while (!stop);
        printf("i:%d",i);
    
        //end
        return 0;
    }

    Le pire c'est que quand j'ajoute le getchar avant le code le code fonctionne bizarrement, il fonctionne mais pas comme je veux :/

    (d'ailleurs fait gaffe si vous retirez le getchar mystique le code bloque la console :/, tous les Crt+C finissent dans le getch et plus rien ne ce passe)

    si vous pouvez m'aider à corriger ce code :D

    -
    Edité par Anonyme 21 février 2020 à 23:19:42

    • Partager sur Facebook
    • Partager sur Twitter
      21 février 2020 à 23:39:42

      Salut !

      C'est le couple kbhit/getch qui permet du non bloquant :

      Exemple simple :

      http://fvirtman.free.fr/recueil/01_07_01_kbhit.c.php

      Un shoot em up a la console :

      http://fvirtman.free.fr/recueil/04_02_10_tir.c.php

      • Partager sur Facebook
      • Partager sur Twitter

      Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

        21 février 2020 à 23:42:01

        Hello,

        Tu t'y prends mal, getchar() est bloquant. Un petit code pour te mettre sur la voie

        #include <stdio.h>
        #include <conio.h>
        #include <stdbool.h>
        
        int main(void){
        	//init
        	bool stop=false;
        	int i=0;
        	
        	//code
        	do
        		if(kbhit()) {
        			if(getch()=='1')
        				stop=true;
        			i++;
        		}
        	while(!stop);
        	printf("i:%d",i);
        	
        	//end
        	return 0;
        }

         Edit: grillé -:)

        -
        Edité par edgarjacobs 21 février 2020 à 23:53:46

        • Partager sur Facebook
        • Partager sur Twitter

        On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

          22 février 2020 à 5:05:51

          Salut,
          Il ne faut pas mélanger le getchar() avec getch(). Il faut utiliser la fonction kbhit().
          Voici un autre topic sur le sujet:
          P.S. J'ai sauté directement à la fin. Désolé ` vous deux :)

          -
          Edité par PierrotLeFou 22 février 2020 à 5:10:34

          • Partager sur Facebook
          • Partager sur Twitter

          Le Tout est souvent plus grand que la somme de ses parties.

          Anonyme
            22 février 2020 à 13:14:37

            Thx les gens ça marche ^^ sans faire de choses bizarres
            • Partager sur Facebook
            • Partager sur Twitter

            input non bloquant

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown