From 9707fc975ee88434c7d8206e5a7ee6f42108bfa8 Mon Sep 17 00:00:00 2001 From: inagen Date: Sun, 25 Nov 2018 13:09:19 +0300 Subject: [PATCH] Another bugfix --- build/minesweeper | Bin 35896 -> 36280 bytes logic.cpp | 3 ++- logic.h | 2 +- renderer.cpp | 31 ++++++++++++++++++++++--------- 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/build/minesweeper b/build/minesweeper index 2ed80668451f5ccf80d7e5db3784f0ed2ddbb035..7faee5bf1053a420786668b5c0e10130dda1fb88 100755 GIT binary patch delta 9954 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 void GameLogic::newField(unsigned xpos, unsigned ypos) { + remainingMines = numberOfMines; srand(time(NULL)); for(int i = 0; i < numberOfMines; i++) { unsigned x = rand() % fieldWidth; @@ -82,7 +84,6 @@ int GameLogic::open(unsigned x, unsigned y) { return 0; recOpen(x, y); - //field[ax + ay * fieldWidth].isOpen = true; return 1; } diff --git a/logic.h b/logic.h index d17b87a..6bedc99 100644 --- a/logic.h +++ b/logic.h @@ -3,7 +3,7 @@ constexpr unsigned fieldWidth = 16; constexpr unsigned fieldHeight = 16; -constexpr unsigned numberOfMines = (fieldWidth*fieldHeight) / 32; +constexpr unsigned numberOfMines = (fieldWidth*fieldHeight) / 16; struct Cell { bool isOpen = false; diff --git a/renderer.cpp b/renderer.cpp index 40a9fe0..e94fc85 100644 --- a/renderer.cpp +++ b/renderer.cpp @@ -2,7 +2,7 @@ #include Renderer::Renderer() { - window = new sf::RenderWindow(sf::VideoMode(windowWidth, windowHeight), "Minesweeper"); + window = new sf::RenderWindow(sf::VideoMode(windowWidth, windowHeight), "Minesweeper", sf::Style::Titlebar | sf::Style::Close); window->setFramerateLimit(25); for(int i = 0; i < 13; i++) { textures[i].loadFromFile("contents/cells.png", sf::IntRect(i*16, 0, 16, 16)); @@ -17,6 +17,11 @@ void Renderer::mainLoop() { if(event.type == sf::Event::Closed) { window->close(); } + if (sf::Keyboard::isKeyPressed(sf::Keyboard::Escape)) { + logic.isInMainMenu = true; + logic.isFirstTurn = true; + logic.isLoseOrWin = false; + } if (event.type == sf::Event::MouseButtonPressed) { mouseClick(event); } @@ -99,10 +104,12 @@ void Renderer::mouseClick(const sf::Event& event) { const unsigned cellX = x / columnWidth; const unsigned cellY = y / rowHeight; + + if(logic.isLoseOrWin) { - logic.isLoseOrWin = false; logic.isInMainMenu = true; logic.isFirstTurn = true; + logic.isLoseOrWin = false; return; } @@ -122,18 +129,24 @@ void Renderer::mouseClick(const sf::Event& event) { logic.newField(cellX, cellY); logic.open(cellX, cellY); - } else if (event.mouseButton.button == sf::Mouse::Right) { - - logic.mark(cellX, cellY); - } else if (event.mouseButton.button == sf::Mouse::Left && !logic.getCell(cellX, cellY).isOpen && !logic.getCell(cellX, cellY).isFlagged && !logic.getCell(cellX, cellY).isSuspect && !logic.isFirstTurn) { + int res = logic.open(cellX, cellY); - if(res == 0 || logic.remainingMines == 0) { + if(res == 0) { logic.isLoseOrWin = true; - } - } + } + if(logic.remainingMines == 0) { + logic.isLoseOrWin = true; + } + + } else if (event.mouseButton.button == sf::Mouse::Right) { + logic.mark(cellX, cellY); + if(logic.remainingMines == 0) { + logic.isLoseOrWin = true; + } + } } \ No newline at end of file