Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Tworzenie czasu
licha
post 4.07.2012, 20:42:38
Post #1





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 7.12.2010

Ostrzeżenie: (0%)
-----


od kilku dni dla zabawy tworzę sobie klona pewnej gry przeglądarkowej i w końcu natrafiłem na problem nie do przejścia. Zastanawiam się jak napisać skrypt który będzie obliczał dany dzień w tej grze na podstawie algorytmu : 8 h = 24 h w grze. Jak według tego obliczyć minuty ?
Nie proszę o gotowy skrypt lecz o jakiś pomysł i drobne wskazówki jak to napisać
Go to the top of the page
+Quote Post
Tuminure
post 5.07.2012, 07:06:49
Post #2





Grupa: Zarejestrowani
Postów: 178
Pomógł: 49
Dołączył: 16.04.2012
Skąd: Bytom

Ostrzeżenie: (0%)
-----


Ja bym zrobił to sprawdzając różnicę czasu.

A trochę bardziej opisowo...
Przypisałbym na stałe "czas zero", który oznaczałby początek gry. Powiedzmy, że jest to 1 sierpnia 00:00:00.
Następnie po prostu brałbym obecny czas i sprawdzał różnicę od "czasu zero". Powiedzmy, że sprawdzamy czas gry 2 sierpnia 06:00:00. Różnica to 1 dzień i 6h, czyli 30h, czyli 1800 minut. Teraz po prostu mnożę przez 3 (ponieważ czas w grze płynie 3 razy szybciej). Wychodzi, że w grze minęły 4 dni, czyli 90h, czyli 5400 minuty.

Ten post edytował Tuminure 5.07.2012, 07:10:39
Go to the top of the page
+Quote Post
Shido
post 5.07.2012, 07:30:40
Post #3





Grupa: Zarejestrowani
Postów: 121
Pomógł: 22
Dołączył: 22.06.2012

Ostrzeżenie: (0%)
-----


  1. <?php
  2. function to_real($time, $day)
  3. {
  4. $day = $day*60;
  5. $scale = $day/1440;
  6. return round($time*$scale);
  7. }
  8. ?>

Czymaj.
Powinno działać.
Wywołujesz funkcje w ten sposób:
  1. $min = to_real(50, 8);

Gdzie 50 to ile minut w grze, a 8 to ile realnych godzin w grze na dobę w grze.
Wynik daje w realnych minutach.
W tym wypadku zrobi coś takiego:
  1. function to_real(50, 8)
  2. {
  3. 8h*60min = 480min
  4. 480min/1440min = 0.333333333333min [1440min = 24h]
  5. 50min * 0.333333333333min = 16.6666666667min
  6. round(16.6666666667min) = 17min.
  7. }

Czyli 50 minut w grze gdzie doba trwa 8h wynosi 17 realnych minut.
Wynik zaokrągla, ale możesz sobie to wywalić i dalej jakoś rozwinąć ta funkcję.

Ten post edytował Shido 5.07.2012, 07:33:36


--------------------
Sorka za błędy ort. jak coś dajcie znać na PW to popoprawiam.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 22.07.2025 - 20:09