Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

omijanie przeszkód?


Rekomendowane odpowiedzi

Opublikowano

jestem w trakcie robienia gry (strategia)

 

i mam mały problem, ponieważ chcę żeby akcja toczyła się na m.in. mapie europy

 

i tu najgorsze (morza i oceany) :(

na początku gry nie ma możliwości przedostania się przez takie morzę na drugą stronę

742833d9388a6.png

 

i tu moje pytanie, czy ktoś może mi pomóc ewentualnie wskazać gdzie szukać

by wojsko szło na około po lądzie (z niebieskiej do zielonej kropki => czerwona droga)

 

albo żeby wyskoczył komunikat że "nie ma drogi lądowej do tego miejsca" (szara droga)

 

 

pixel na mapie europy (max 300x300 ) -> pole na na mapie gry (coś jak niżej)

mapa1nawi.jpg

np. żeby wyznaczyło że taka czarna droga(jak na obrazku wyżej) jest ta najkrótsza z omijaniem wody :)

 

 

droga po prostej jest łatwa do wyliczenia, ale nie wiem jak to zrobić :(

Opublikowano

@jimmyblack

 

trochę popatrzyłem, pomyślałem i zrobiłem :)

 

tylko trzeba wygenerować pola mapy za pomocą dwóch znaków (#) - kontynent, (.)-morze/ocean

+ ramka z kropek na około mapy...

(mapa zapisana w SQL, to nie będzie trudno takiej uzyskać, chociaż małą chwile to potrwa

<?php

function shortpath($h, $v, $maps, $sx, $sy, $fx, $fy)
{
     echo '<h2>Your map</h2>';     
     var_dump($maps);
     echo '<br />';
     for($i=0; $i<$v; $i++)
     {
          $horizontal= str_split($maps[$i]);
          
          for($j=0; $j<$h; $j++)
          {
               $maps2[$i][$j] = $horizontal[$j];
          }
     }
     
     $maps2[$sy-1][$sx-1] = "S";
     $maps2[$fy-1][$fx-1] = "F";
     
     echo '<h2>Your map with S(statr) and F(finish)</h2>';     
     for($i=0; $i<$v; $i++)
     {
          echo'<pre>';
          for($j=0; $j<$h; $j++)
          {
               echo $maps2[$i][$j];
          }
          echo '</pre>';
     }
     
     $finish = false;
     $c_x = $sx-1; //current_x
     $c_y = $sy-1; //current_y
     $meter=1;
     $n_x = array(); //next_x     
     $n_y = array(); //next_y
     $n_meter = array(); //next meter     
     $step=1;

     do
     {
          echo '<h2>Step '.$step.'</h2>';
          
          if($maps2[$c_y][$c_x-1]=="#")
          {
              $maps2[$c_y][$c_x-1]=$meter;
              $n_y[] = $c_y;
              $n_x[] = $c_x-1;
              $n_meter[] = $meter+1;
          }
          if($maps2[$c_y][$c_x+1]=="#")
          {
              $maps2[$c_y][$c_x+1]=$meter;
              $n_y[] = $c_y;
              $n_x[] = $c_x+1;
              $n_meter[] = $meter+1;
          }
          if($maps2[$c_y-1][$c_x]=="#")
          {
              $maps2[$c_y-1][$c_x]=$meter;
              $n_y[] = $c_y-1;
              $n_x[] = $c_x;
              $n_meter[] = $meter+1;
          }
          if($maps2[$c_y+1][$c_x]=="#")
          {
              $maps2[$c_y+1][$c_x]=$meter;
              $n_y[] = $c_y+1;
              $n_x[] = $c_x;
              $n_meter[] = $meter+1;
          }
          
          
          // State of array before array_shift
          //print_r($n_x);
          //print_r($n_y);
          //print_r($n_meter);
          
          $c_y=$n_y[0];   
          $c_x=$n_x[0];        
          $meter=$n_meter[0];  
          
          array_shift($n_y);
          array_shift($n_x);
          array_shift($n_meter);
          //echo '<br />';
          // State of array after array_shift
          //print_r($n_x);
          //print_r($n_y);
          //print_r($n_meter);
          
          
          if($maps2[$c_y][$c_x-1]=="F")
          {
               $finish=true;
          }
          if($maps2[$c_y][$c_x+1]=="F")
          {
               $finish=true;
          }
          if($maps2[$c_y-1][$c_x]=="F")
          {
               $finish=true;
          }
          if($maps2[$c_y+1][$c_x]=="F")
          {
               $finish=true;
          }
          
     
     for($i=0; $i<$v; $i++)
     {
          echo'<pre>';
          for($j=0; $j<$h; $j++)
          {
               echo $maps2[$i][$j];
          }
          echo '</pre>';
     }
     
     $step++;
     }
     while($finish==false);
     
     echo 'Distance: '.$meter;
}

//------------------------------ IN GAME ----------------------------

$maps = array(
      "........................",
      ".#####...###.#..#.#.#.#.",
      ".#...###.#.#.#.####.#.#.",
      ".#####.###...###.###.##.",
      "........................"
      );

shortpath(24, 5, $maps, 4,4, 12,3);

?>

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...