From 7d0108d71276ff20e5e2d6e1cd293c4d258c6b4c Mon Sep 17 00:00:00 2001 From: "fodor.agoston" <fodor.agoston@hallgato.ppke.hu> Date: Sat, 18 May 2024 12:54:46 +0200 Subject: [PATCH] =?UTF-8?q?ellen=C5=91rz=C3=A9s=20teljes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application.cpp | 75 +++++++++++++++++++++++++++++++++++-------------- 1 file changed, 54 insertions(+), 21 deletions(-) diff --git a/application.cpp b/application.cpp index d7533d9..6a8a4c8 100644 --- a/application.cpp +++ b/application.cpp @@ -19,7 +19,7 @@ void ellenoriz(vector<Widget> v) void Application::registerWidget(Widget* w) { - // Az új widgetet közvetlenül hozzáadjuk a widgets vektorhoz + widgets.push_back(w); } @@ -42,11 +42,22 @@ void Application::event_loop() } wrongi = -1; - for (int k = 0; k < 81; k += 9) { - for (int i = k; i < 9+k; ++i) { - for (size_t j = i+1; j < 9+k; ++j) { - if (widgets[i]->getter() == widgets[j]->getter()) { - wrongi = j; + + + + + + if (focus != -1) { + widgets[focus]->handle(ev); + for (int k = 0; k < 81; k += 9) { + for (int i = k; i < 9+k; ++i) { + for (size_t j = i+1; j < 9+k; ++j) { + if (widgets[i]->getter() == widgets[j]->getter()) { + wrongi = j; + break; + } + } + if (wrongi != -1) { break; } } @@ -54,16 +65,17 @@ void Application::event_loop() break; } } - if (wrongi != -1) { - break; - } - } - for (int k = 0; k < 9; ++k) { - for (int i = k; i < 81; i += 9) { - for (size_t j = i+9; j < 81; j += 9) { - if (widgets[i]->getter() == widgets[j]->getter()) { - wrongi = j; + + for (int k = 0; k < 9; ++k) { + for (int i = k; i < 81; i += 9) { + for (size_t j = i+9; j < 81; j += 9) { + if (widgets[i]->getter() == widgets[j]->getter()) { + wrongi = j; + break; + } + } + if (wrongi != -1) { break; } } @@ -71,14 +83,35 @@ void Application::event_loop() break; } } - if (wrongi != -1) { - break; - } - } + for (int row_offset = 0; row_offset < 9; row_offset += 3) { + for (int col_offset = 0; col_offset < 9; col_offset += 3) { + std::vector<bool> seen(10, false); - if (focus != -1) { - widgets[focus]->handle(ev); + for (int i = row_offset; i < row_offset + 3; ++i) { + for (int j = col_offset; j < col_offset + 3; ++j) { + int num = widgets[i * 9 + j]->getter(); + if (num != 0) { + if (seen[num]) { + wrongi = i * 9 + j; + break; + } else { + seen[num] = true; + } + } + } + if (wrongi != -1) { + break; + } + } + if (wrongi != -1) { + break; + } + } + if (wrongi != -1) { + break; + } + } } for (int i = 0; i < widgets.size(); ++i) { -- GitLab