В следующем коде у меня есть игровая панель. У меня есть цикл программ, так что пользователь может перерабатывать карты через столько раз, сколько они хотят. Мне бы хотелось, чтобы персонаж, набранный пользователем, каждый раз показывал в одном и том же месте, вместо того, чтобы создавать новую строку. Я бы хотел, чтобы он показывал, чтобы они могли видеть, что они набрали, прежде чем они попали в enter. Я все еще довольно новичок в кодировании, и я нахожусь в своем 2-м классе C++, и я хочу учиться и впечатлять. Для начала, я использую Microsoft Visual Studio 2013. В результате исследований я получил этот код построен:Как сделать шоу cin в одном и том же месте каждый раз для консоли C++
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <Windows.h>
#include <string>
using namespace std;
const TCHAR SUITS[] = { 'H', 'C', 'D', 'S' };
const TCHAR FACES[] = { 'A', '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K' };
const TCHAR SPACE = ' ';
const int number_of_cards = 5;
int main() {
char * line_of_stars = "*****************************************************\n";
char * line_of_spaces = "* *\n";
char * top_of_cards = "* ******* ******* ******* ******* ******* *\n";
char * card_sides = "* * * * * * * * * * * *\n";
char quit = 'q';
//Display Screen
cout << line_of_spaces << top_of_cards << card_sides << card_sides << card_sides
<< card_sides << card_sides << top_of_cards << line_of_spaces << line_of_stars;
cout << "\nPress 'q' to quit or any other key to get new cards: ";
DWORD dw;
COORD suitCoord;
COORD faceCoord;
COORD nextMove;
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
if (hStdOut == INVALID_HANDLE_VALUE){
printf("Invalid handle");
}
nextMove.X = 53;
nextMove.Y = 11;
do {
for (int i = 0; i < number_of_cards; i++){
int startX = 6 + (i * 10);
int startY = 3;
//Set coords for the i-nth card
suitCoord.X = (startX);
suitCoord.Y = (startY);
faceCoord.X = (startX);
faceCoord.Y = (startY + 2);
//suit random num
int rand1 = rand() % 4;
TCHAR suit_char = SUITS[rand1];
int rand2 = rand() % 13;
TCHAR face_char = FACES[rand2];
//Print to screen
WriteConsoleOutputCharacter(hStdOut, &suit_char, 1, suitCoord, &dw);
WriteConsoleOutputCharacter(hStdOut, &face_char, 1, faceCoord, &dw);
}
// Cover Last input with a space
WriteConsoleOutputCharacter(hStdOut, &SPACE, 1, nextMove, &dw);
cin.clear();
cin >> quit;
cout << "\b\b";
} while (!(quit == 'q' || quit == 'Q'));
return 0;
}
Я его так, что программа ставит пространство в том месте, где начальные, что пользователь будет введите первый вход. После первого ввода символ cin отображается на следующей строке, пока пользователь не наберет «q» или «Q». Я хотел бы, чтобы он показывался в одном и том же месте каждый раз. Координация X должна быть: 51, а координата Y должна быть: 12. Я стараюсь не использовать метод четкого экрана, потому что я использовал это для моего последнего последнего семестра, и он много раз перепечатывал строки.
Первый блок работал отлично, за исключением того, что ему нужно было {51,12}. Это было слишком легко исправить. У меня есть четкий экран в моей программе, однако, когда отображается меню, и я сделал это неправильно, но сейчас я его изменю. Спасибо за оба ответа! – kingcobra1986