use cin.ignore to avoid leaking input buffer in future calls
This commit is contained in:
@@ -154,8 +154,8 @@ void Board::render() {
|
|||||||
|
|
||||||
void Board::updateAndRender() {
|
void Board::updateAndRender() {
|
||||||
|
|
||||||
this->render();
|
|
||||||
this->update();
|
this->update();
|
||||||
|
this->render();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -76,6 +76,12 @@ void Engine::nextTurn() {
|
|||||||
<< "> ";
|
<< "> ";
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
|
|
||||||
|
// Czyścimy bufor, aby zignorować cokolwiek, co pojawiło się po znaku
|
||||||
|
// białym a przed \n - aby np. żaden z użytkowników nie mógł
|
||||||
|
// napisać "a a" i potencjalnie zadecydować o ruchu oponenta.
|
||||||
|
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
|
||||||
|
|
||||||
std::cin >> choice;
|
std::cin >> choice;
|
||||||
choice |= 32;
|
choice |= 32;
|
||||||
|
|
||||||
|
|||||||
@@ -238,6 +238,10 @@ void Game::run() {
|
|||||||
std::cout << "Wpisz nazwe gracza " << (i + 1) << " (" << colorNames[i] << "): ";
|
std::cout << "Wpisz nazwe gracza " << (i + 1) << " (" << colorNames[i] << "): ";
|
||||||
std::cin >> name;
|
std::cin >> name;
|
||||||
|
|
||||||
|
// Zignoruj zawartość bufora do \n, aby zapobiec nadpisywaniu ziarna
|
||||||
|
// poprzez podanie nazwy ze znakami białymi.
|
||||||
|
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
|
||||||
|
|
||||||
#ifndef CHINCZYK188_IGNORE_USER_SEED
|
#ifndef CHINCZYK188_IGNORE_USER_SEED
|
||||||
// Jeżeli nie została zdefiniowana flaga do ignorowania ziarna użytkownika
|
// Jeżeli nie została zdefiniowana flaga do ignorowania ziarna użytkownika
|
||||||
// (deterministyczne losowanie), to pozwól na wprowadzanie ziaren.
|
// (deterministyczne losowanie), to pozwól na wprowadzanie ziaren.
|
||||||
@@ -251,8 +255,10 @@ void Game::run() {
|
|||||||
engine.addPlayer(name, seed, color);
|
engine.addPlayer(name, seed, color);
|
||||||
|
|
||||||
board.updateAndRender();
|
board.updateAndRender();
|
||||||
//this->update();
|
|
||||||
//this->render();
|
// Podobnie, jak wyżej
|
||||||
|
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Przekaż ev i window, aby obsługiwać zdarzenia
|
// Przekaż ev i window, aby obsługiwać zdarzenia
|
||||||
|
|||||||
Reference in New Issue
Block a user