2014-04-21 2 views
2

Je tente de créer un programme de jeu de vie en C, mais je ne suis pas très familier avec un processus de mise à jour de la sortie affichée sur le terminal. Donc, par exemple, je vais avoir un tableau char 2d, où chaque élément contiendra un '#' ou un '-'. Je vais imprimer ce tableau sur l'écran, mais plutôt que d'imprimer un nouveau tableau 2d chaque fois qu'il y a un changement d'état, je veux écraser l'ancien tableau dans le terminal avec le nouvel état.Mise à jour/Actualisation du texte affiché sur le terminal

J'ai cherché des moyens de le faire, mais je n'ai pas eu beaucoup de chance. Le plus proche que j'ai trouvé est un retour de chariot dans la fonction printf (\ r), mais j'espère que quelqu'un peut me dire la meilleure façon de le faire. Plus précisément, comment pourrais-je imprimer un tableau 2d sur l'écran, changer les éléments du tableau, et imprimer le nouveau tableau sur l'ancien, c'est-à-dire, l'écraser.

+1

Avez-vous une question précise? – this

+0

J'ai mis à jour la question –

+0

Que voulez-vous dire par dessus? – this

Répondre

1

(certains de ces liens, des extraits de code sont Linux, et d'autres sont Windows)
Compte tenu de vos questions spécifiques, (et en supposant que vous savez comment écrire un tableau à la console):

1) écrit le premier tableau.
2) Ensuite Effacer la console (ou sur écriture la console)
Quelque chose comme ceci:

#include <stdlib.h> 

void main() 
{ 
    system("cls"); 
}  

Ou écrivez ce qui suit à stdout: (Linux)

write(1,"\E[H\E[2J",7); 

qui est ce que fait/usr/bin/clear sauf qu'il ne crée pas d'autre processus.
Ou les deux:

void clear_screen() 
{ 
    #ifdef WINDOWS 
    system ("CLS"); 
    #else 
    // Assume POSIX 
    system ("clear"); 
    #endif 
} 

More Options Here

3) écrire le prochain tableau

+0

Ryyker, des excuses pour ne pas commenter plus tôt, ont été au travail. Cela semble être exactement ce que j'ai cherché! Je vais essayer cela plus tard et cochez la solution si tout va bien. Merci :) –

+0

@syco_link - Oui, ce genre de travail fait parfois obstacle. – ryyker

+0

Effacé l'écran parfaitement, exactement ce que j'étais après! Est-il possible que vous puissiez expliquer l'expression dans la fonction d'écriture, ou me diriger vers une documentation pour cela? Je vous remercie! –

0

Vous pouvez essayer quelque chose comme ceci:

#include<stdio.h> 

int main(void) 
{ 

printf ("#####-----\r"); 
printf ("-#####----\r"); 

} 

Je ne sais pas si je vraiment répondu à votre question. Et si ce n'est pas votre réponse, alors vous cherchez certainement quelque chose comme ncurses.

+0

Désolé, le tableau est en 2d donc il pourrait s'agir d'une grille 10 x 10 sur le terminal.Autant que je sache, je ne traiterai que d'une ligne et pas plus, mais je regarderai ncurses, merci! –

Questions connexes