Browse Source

Strategická: Speciální případ pro pathfind

master
David Klement 2 years ago
parent
commit
413c0a08c6
  1. 3
      klient/strategy.cpp
  2. 3
      klient/strategy.py

3
klient/strategy.cpp

@ -289,6 +289,9 @@ bool is_field_accessible(Field* f, Team* t)
// Pokud žádná cesta neexistuje, vrátí STAY. // Pokud žádná cesta neexistuje, vrátí STAY.
Direction pathfind(Member* m, Field* goal) Direction pathfind(Member* m, Field* goal)
{ {
// speciální případ: voják už je v cíli
if (m->field == goal) return STAY;
std::set<Field*> explored; std::set<Field*> explored;
std::queue<Field*> queue; std::queue<Field*> queue;
queue.push(goal); queue.push(goal);

3
klient/strategy.py

@ -202,6 +202,9 @@ def pathfind(member: Member, goal: Field) -> Direction:
Pokud žádná cesta neexistuje, vrátí STAY. Pokud žádná cesta neexistuje, vrátí STAY.
""" """
# speciální případ: voják už je v cíli
if member.field == goal:
return Direction.STAY
# BFS od cíle k vojákovi # BFS od cíle k vojákovi
# tento směr umožní rychle zjistit, že cesta neexistuje, # tento směr umožní rychle zjistit, že cesta neexistuje,
# a také jednoduše získat první krok # a také jednoduše získat první krok

Loading…
Cancel
Save