2011-01-21 3 views
2

J'essaye de créer un jeu de console pong mais j'ai rencontré le problème suivant. Je donne les résultats suivants:Double buffering dans la console (affichage)?

int main() 
{ 
    while(1) 
    { 
     clearScreen(); 

     std::stringstream sstr; 
     for(int i = 0; i < 20; ++i) 
     { 
      sstr << "Mooooooo \n"; 
     } 
     printf(sstr.str().c_str()); 
     restThread(50); 
    } 
    return 0; 
} 

La sortie est j'attendre pour Moo à écrire 20 fois et pour le contenu de l'écran pour changer jamais réellement. Cependant, il scintille de temps en temps. Je suppose que c'est parce que la sortie est affichée à l'écran avant qu'elle ne soit entièrement dessinée. Y a-t-il un moyen de contourner ceci? par exemple, ne rien montrer à l'utilisateur avant que tous les caractères aient été dessinés à l'écran?

Merci

+0

Encore une fois, C++ fait très peu pour la sortie de la console ('cout' n'a même pas besoin d'aller en console, c'est juste une convention). Quelle plateforme? Vous pourriez avoir plus de chance en regardant un moteur simple prêt à l'emploi comme SDL ou SFML. – GManNickG

+0

@GMan Habituellement, je fais des jeux en OpenGL et/ou SDL, je suis juste en train d'essayer cela pour le plaisir et la nouveauté de celui-ci. J'essaie de cibler Windows et Linux – jmasterx

Répondre

7

Il y a les malédictions/bibliothèque ncurses, ce qui vous oblige à rafraîchir l'écran avant tout est affiché. C'est assez omniprésent en termes de support de plate-forme.

+0

+1 J'étais sur le point de suggérer la même chose. – chrisaycock