diff options
author | scratko <m@scratko.xyz> | 2025-07-25 17:04:21 +0300 |
---|---|---|
committer | scratko <m@scratko.xyz> | 2025-07-25 17:46:22 +0300 |
commit | 90bd5ca05bea4dbeaaeff5cbe13b5671da420c82 (patch) | |
tree | 05757ed9b9ea0c007f4b4e86cfd8402fea4c6a5d /menu_callbacks.cpp | |
parent | ac9a06b04144023e87d1a504cfe5598e7cf3d7b4 (diff) | |
download | picture-puzzle-90bd5ca05bea4dbeaaeff5cbe13b5671da420c82.tar.gz picture-puzzle-90bd5ca05bea4dbeaaeff5cbe13b5671da420c82.tar.bz2 picture-puzzle-90bd5ca05bea4dbeaaeff5cbe13b5671da420c82.zip |
Added const qualifiers is_next_to_empty_box() became visible to other files().
The size of the main window has been changed.
Checking whether the A* algorithm has been launched before starting a new game
or the same A* algorithm.
Fixed indentation in lambda expressions.
The initial node is added to open_queue without additional creation of dynamic
memory (the address of the object field is taken).
Fixed PQ_cont.erase().
IsNearEmptyBox was removed().
EqualNode moved to the Node class.
Diffstat (limited to 'menu_callbacks.cpp')
-rw-r--r-- | menu_callbacks.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/menu_callbacks.cpp b/menu_callbacks.cpp index 5668c67..d6b35dc 100644 --- a/menu_callbacks.cpp +++ b/menu_callbacks.cpp @@ -12,8 +12,8 @@ void new_game_callback(Fl_Widget*, void *gp) { - Fl::check(); - PuzzleGame::StartGame(reinterpret_cast<GameParams*>(gp)); + if(!reinterpret_cast<GameParams*>(gp)->GetAStarActive()) + PuzzleGame::StartGame(reinterpret_cast<GameParams*>(gp)); } static bool check_correct_path_to_img(const char *path) @@ -52,15 +52,19 @@ void load_file_callback(Fl_Widget *sender, void*) void exit_callback(Fl_Widget *w, void*) { - w->parent()->hide(); + exit(0); } void solve_problem_callback(Fl_Widget *w, void *gp) { GameParams *game = reinterpret_cast<GameParams*>(gp); + if(game->GetAStarActive()) + return; + game->SetAStarActive(); std::unique_ptr<ASearch> algorithm = ASearch::Start(game); Node *goal = algorithm->FindSolution(); algorithm->ShowSolution(goal); + game->ResetAStarActive(); int answer = fl_choice("Play again?", "No", "Yes", nullptr); if(answer) PuzzleGame::StartGame(game); |