From 737ae965d03aeb55d181bd2f00155e99840110cd Mon Sep 17 00:00:00 2001 From: Thomas Lindner Date: Sat, 21 May 2022 10:56:12 +0200 Subject: [PATCH] hardcode field size ;) --- src/main.cc | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main.cc b/src/main.cc index 4d62a63..261ab5b 100644 --- a/src/main.cc +++ b/src/main.cc @@ -55,6 +55,7 @@ class Bot { int x, y; bool up, right, down, left; std::map, unsigned> known_map; + int field_width, field_height; asio::awaitable Protocol(); asio::awaitable Join(); @@ -75,7 +76,9 @@ Bot::Bot(asio::any_io_executor executor, std::string_view name, socket{executor}, server{server}, name{name}, - pass{pass} { + pass{pass}, + field_width{22}, + field_height{22} { asio::co_spawn(executor, std::bind(&Bot::Protocol, this), asio::detached); } @@ -200,19 +203,23 @@ unsigned Bot::ShortestPath(int x, int y) { if (visited.count(position)) { continue; } - if (!(known_map[position] & static_cast(Direction::LEFT))) { + if (!(known_map[position] & static_cast(Direction::LEFT)) && + position.first > 0) { auto pos = std::make_pair(position.first - 1, position.second); queue.emplace(distance + 1 + AStarHeuristic(pos), pos); } - if (!(known_map[position] & static_cast(Direction::RIGHT))) { + if (!(known_map[position] & static_cast(Direction::RIGHT)) && + position.first < field_width) { auto pos = std::make_pair(position.first + 1, position.second); queue.emplace(distance + 1 + AStarHeuristic(pos), pos); } - if (!(known_map[position] & static_cast(Direction::UP))) { + if (!(known_map[position] & static_cast(Direction::UP)) && + position.second > 0) { auto pos = std::make_pair(position.first, position.second - 1); queue.emplace(distance + 1 + AStarHeuristic(pos), pos); } - if (!(known_map[position] & static_cast(Direction::DOWN))) { + if (!(known_map[position] & static_cast(Direction::DOWN)) && + position.second < field_height) { auto pos = std::make_pair(position.first, position.second + 1); queue.emplace(distance + 1 + AStarHeuristic(pos), pos); }