Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]przelicznie odległości pomiędzy punktami, float w pętli
Forum PHP.pl > Forum > Przedszkole
zoorg
Witam moją ulubioną klase w szokle tańca ze zmiennymi

pomysł jest taki, gram sobie w jakąś gierkę i chciałbym zrobić sobie listę odległości pomiędzy bazą gdzie chcę wysłac defa, a całą resztą baz z których moge podesłac defa -) - pierdołki z iteracja, MySqlem tablicami i formularzami do wprowadzania danych, następnie ich wybieraniem sobie dam radę,


kwestia jest taka ze gra uzywa jakiegoś przelicznika odległości aby ustanowić czas niezbędny do pokonania tej odległości przez okreslony typ jednostki, chcę go znaleźć stosujac zmienną której szukam (czyli czas dotarcia do bazy okreslony przez serwer gry (wyświetlany), stąd zamiast wpisywac kolejne wartości, ułozyłem pętlę for, która ma mi przeryć zakres zmiennych, aż znajdzie poszukiwaną.

PHP nie trybi float w pętli for, jak to "obejść" ?

CODE
<?php
header('Content-Type: text/html; charset=utf-8');
?>


<?php

//kordy na mapie

//obirekt 1
$x1=726;
$y1=486;
//obiekt 2 (po przekątnej)
$x2=727;
$y2=482;

$kaw=8*60; //czas w sekundach dla typu jednostki 8 min leci na odl 1 pole w górę, dół lewo, prawo.

//przelicza odl pomiedzy obiektami
odleglosc($x1,$y1,$x2,$y2).'to bez sensu'; //nie mogę dokleić do funkcji tekstu ???.. bo łaj? - nie wyświetla (potrafię sobie odpow, że funkcja zwraca, ale dlaczego nie moge juz w tym mom sobie "dokleić" komenta

$mabyc=28.500000001; //28min 50 sek wskazuje w przeliczniku w grze
//echo odleglosc().'<br>';

$oblicz=odleglosc($x1,$y1,$x2,$y2); //odległosć ale w jakich jednostkach, metr, kilometr?? - pixele ;-)
echo 'wartosc $oblicz z funkcji odległosc '.$oblicz.'<br>';
$oblicz=($oblicz*$kaw)/69.44100111; //tu jakiś ich dziwny przelicznik odległości na czas, nie chce wklepywać az ustale poprawny stąd pętla kt ma mi znaleźć 'dokładny' przelicznik
//echo 'odl '.$oblicz/$kaw;
for ($dzielna=69;$dzielna>=71.00000000;$dzielna+0.000001){
if ($mabyc !== 28.500000001){
}else { echo 'poprawna wartośc dzielnika to '.$dzielna.'<br>'; }

}

echo round($oblicz,19).'<br>';

echo '<br>';
function odleglosc ($x1,$y1,$x2,$y2) {

$d=sqrt( (($x2-$x1)*($x2-$x1))+(($y2-$y1)*($y2-$y1)) );
return sqrt( (($x2-$x1)*($x2-$x1))+(($y2-$y1)*($y2-$y1)) );
echo 'to wygrawerowało wew funkcji'.$d.'<br>'.'lala'; //tez dla mnie ciekawostka ze po return nie działa "nietoperek" (echo)
//return $d;
}

?>
fastlone
  1. odleglosc($x1,$y1,$x2,$y2).'to bez sensu'; //nie mogę dokleić do funkcji tekstu questionmark.gif?.. bo łaj? - nie wyświetla (potrafię sobie odpow, że funkcja zwraca, ale dlaczego nie moge juz w tym mom sobie "dokleić" komenta
  2.  
  3. $mabyc=28.500000001; //28min 50 sek wskazuje w przeliczniku w grze
  4. //echo odleglosc().'<br>';


Możesz do zrobić w taki sposób:
  1. $mabyc=28.500000001; //28min 50 sek wskazuje w przeliczniku w grze
  2. echo odleglosc($x1,$y1,$x2,$y2).'to bez sensu<br>';


Nie możesz doklejać tekstu tak o, do funkcji, jeśli dana funkcja nie będzie przypisana do zmiennej bądź nie zostanie wyświetlona (np. poleceniem echo)

A na samym końcu nie zadziała Ci echo po returnie, gdyż polecenie return nie patrzy na to, co jest za nim wink.gif
zoorg
to jest mniej istotne z tym doklejaniem tekstu, mimo to dzięuję za zwrócenie uwagi na semantykę języka

1 funkcja = 1 return. Oj niedobrze -)


jednak najbardziej mnie zastanawia ten float w pętli for ;/
fastlone
Rozwiązaniem wydaje mi się pomnożenie wszystkich liczb o taką potęgę liczby 10, by zniknęły wszystkie przecinki.
zoorg
dobra, wiem co zjeb%%, w pętli for, nie sprawdzam dzielnej ze zmienna -)

..jednak chyba Twój pomysł jest najlepszy, pomnozyć i potem przerobić na sek/min/godz..


jednak zeby w pętli ..

nie działało takie coś?

  1. $pom=0.000001;
  2.  
  3. for ($dzielna=69.00001;$dzielna>=71.00000001;$dzielna+$pom){
  4. $pom=$pom+0.00001;
  5. if ($dzielna !== 28.5001){
  6.  
  7. }else {
  8.  
  9. echo 'poprawna wartośc dzielnika to '.$dzielna.'<br>';
  10. }
  11.  
  12.  
  13.  
  14. }
  15.  
untorched
A nie przypadkiem
  1. for ($dzielna = 69; $dzielna <= 71.00000000; $dzielna += 0.000001){
zoorg
...i narodziła się misja aby w apache zmienić czas oczekiwania na wyswietlenie strony. -)
Fatal error: Maximum execution time of 30 seconds exceeded in AB_distance.php on line 43

zmiana z > na < na pewno pomogła...

aaa.. i kwestia jest inna - bo w pętli for szukam zakresu dla dzielnika, a dzielnik musi być sprawdzany z efektem funkcji odległośc do wzorca (czyli te oczekiwane 00:28:50) czyli IF ryje wynik z funkcji przez dzialnik do czasu az efekt bedzie taki jak ze wzorca -)


czyli opakujemy for dla dzielnik inną funkcję, podlożymy pod działanie i będziemy sprawdzać do czasu az bedzie zgodne ze wzorcem -)

..no sam sobie nie lajknę "pomógł" -)

albo prościej w IF-ie damy działanie z funkcji.. itd itp-)

Ale dziękuję Wam za zainteresowanie i przyklepałem "pomógł" tym co wnieśli spostrzegawczość w "temat"

Dziękuję -)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.