[C++] Modifier un texte existant en console

    Publicités

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)

Status
Not open for further replies.
Jan 6, 2010
1,308
0
942
Non loin de ce forum
Bonjour,

voilà, je suis débutant en C++ mais commence malgré tout à développer un jeu en console. Je ne rencontre pas réellement de problème, sauf pour faire un truc classe. En effet, tout le monde a déjà fait compter son PC, ainsi :

Code:
for (int i = 0 ; i != 20 ; i++)
{
     cout << i << endl;
}

comptera de 0 à 20 en allant à la ligne à chaque fois. Seulement, j'aimerai bien que 'i' soit écrit une fois et ensuite mise à jour à la place d'être rajouté.

Merci d'avance aux personnes qui se pencheront sur mon problème !
 
Jan 6, 2010
1,308
0
942
Non loin de ce forum
Salut,

tout d'abord merci de ta réponse. J'ai testé vite fait et j'allais m'en aller car en effet, ça faisait "l'effet", en revanche, j'ai fais une recherche à propos de cette commande. Il semblerait que celle-ci efface entièrement la console, et dans la boucle je n'm'en suis pas aperçu.

N'y aurait t-il pas un moyen de modifier qu'une partie d'un texte dans la console déjà écrit ?
 
Jan 6, 2010
1,308
0
942
Non loin de ce forum
Bonsoir,

merci d'avoir répondu, dommage que ta réponse ne m'apporte que mauvaise nouvelle. Ce n'est pas que j'te crois pas, mais j'vais tenter de chercher encore un peu avant de laisser tomber.

Merci encore, à bientôt ! (j'tiens au courant)
 

TheHardButcher

Programmeur C/C++
V
Dec 14, 2009
1,461
58
964
France
Bonne chance, et dit nous si tu trouve autre chose.
Personnellement, je suis en train de développer une lib permettant de simplifier ces actions, pour permettre la création de GUI et de jeux en console facilement et avec une esthétique plus correcte.
 
Jan 6, 2010
1,308
0
942
Non loin de ce forum
Re bonsoir,

il semblerait que j'ai une bonne nouvelle. Il est possible de remplacer la variable, ou plutôt un ou des caractères marqués dans une console. Cela dit, le code est un peu trop compliqué pour moi étant débutant, donc du coup je comprendrai pas d'un coup. Néanmoins, ça te sera utile :

Code:
#include <iostream>
#include <windows.h>

using namespace std;


void gotoXY(int x, int y)
{
	 //Initialize the coordinates
	 COORD coord = {x, y};
	 //Set the position
	 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
	 return;
}

void ClearConsole()
{
	 //Get the handle to the current output buffer...
	 HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
	 //This is used to reset the carat/cursor to the top left.
	 COORD coord = {0, 0};
	 //A return value... indicating how many chars were written
	 //   not used but we need to capture this since it will be
	 //   written anyway (passing NULL causes an access violation).
	 DWORD count;
	 //This is a structure containing all of the console info
	 // it is used here to find the size of the console.
	 CONSOLE_SCREEN_BUFFER_INFO csbi;
	 //Here we will set the current color
	 if(GetConsoleScreenBufferInfo(hStdOut, &csbi))
	 {
		  //This fills the buffer with a given character (in this case 32=space).
		  FillConsoleOutputCharacter(hStdOut, (TCHAR) 32, csbi.dwSize.X * csbi.dwSize.Y, coord, &count);
		  FillConsoleOutputAttribute(hStdOut, csbi.wAttributes, csbi.dwSize.X * csbi.dwSize.Y, coord, &count );
		  //This will set our cursor position for the next print statement.
		  SetConsoleCursorPosition(hStdOut, coord);
	 }
	 return;
}

int main() {
	ClearConsole();
	cout << "The number is: ";
	cout.flush();
	for (int i = 0; i < 1000; i++) {
		gotoXY(15,0);
		cout << i;
		cout.flush();
		Sleep(25); //Needed to add because the computer was too fast...
	}
	return 0;
}

Provenance du code : Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!.

PS : Très bonne idée en ce qui concerne ta lib, en espérant l'utiliser très bientôt !
 
Status
Not open for further replies.