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() {
|
||||
|
||||
this->render();
|
||||
this->update();
|
||||
this->render();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -76,6 +76,12 @@ void Engine::nextTurn() {
|
||||
<< "> ";
|
||||
|
||||
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;
|
||||
choice |= 32;
|
||||
|
||||
|
||||
@@ -238,6 +238,10 @@ void Game::run() {
|
||||
std::cout << "Wpisz nazwe gracza " << (i + 1) << " (" << colorNames[i] << "): ";
|
||||
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
|
||||
// Jeżeli nie została zdefiniowana flaga do ignorowania ziarna użytkownika
|
||||
// (deterministyczne losowanie), to pozwól na wprowadzanie ziaren.
|
||||
@@ -251,8 +255,10 @@ void Game::run() {
|
||||
engine.addPlayer(name, seed, color);
|
||||
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user