Kilka dni temu przysiadłem się do napisania skryptu do generowania kontynentów/wysp na mapie. Kod w postaci jaką zamieściłem poniżej działa, jednak wystarczy zmienić w funkcji losuj() z if(mt_rand(0,10) <= 4) { na if(mt_rand(0,10) <= 3) { i skrypt raptem przestaje działać. Google Chrome pokazuje następujący komunikat:
Kod
Brak odebranych danych
Nie można wczytać strony internetowej, ponieważ serwer nie wysłał danych.
Oto kilka propozycji:
Ponownie załaduj tę stronę internetową później.
Błąd 324 (net::ERR_EMPTY_RESPONSE): Serwer zakończył połączenie bez wysyłania jakichkolwiek danych.


Skrypt znajduje się pod adresem: http://rysh.tk/mapa/

  1. <?php
  2.  
  3. $rozmiar = 100;
  4. $_SESSION['mapa'] = array();
  5.  
  6. function losuj () {
  7. if(mt_rand(0,10) <= 4) {
  8. return 0;
  9. } else {
  10. return 1;
  11. }
  12. }
  13.  
  14. function sprawdz($x, $y) {
  15. if(isset($_SESSION['mapa'][$x][$y]['typ'])) {
  16. return 0;
  17. } else {
  18. $_SESSION['mapa'][$x][$y]['typ'] = losuj();
  19. if($_SESSION['mapa'][$x][$y]['typ'] == 1) {
  20. if(!isset($_SESSION['mapa'][$x+1][$y]['typ'])) {
  21. sprawdz($x+1,$y);
  22. }
  23. if(!isset($_SESSION['mapa'][$x][$y+1]['typ'])) {
  24. sprawdz($x,$y+1);
  25. }
  26. if(!isset($_SESSION['mapa'][$x-1][$y]['typ'])) {
  27. sprawdz($x-1,$y);
  28. }
  29. if(!isset($_SESSION['mapa'][$x][$y-1]['typ'])) {
  30. sprawdz($x,$y-1);
  31. }
  32. }
  33. }
  34. }
  35.  
  36. for($i = count($_SESSION['mapa']) ; $i <= 150 ; $i++) {
  37. sprawdz(mt_rand(-$rozmiar,$rozmiar), mt_rand(-$rozmiar,$rozmiar));
  38. }
  39.  
  40. $gd = imagecreatetruecolor($rozmiar*2, $rozmiar*2);
  41. $white = imagecolorallocate($gd, 255, 255, 255);
  42. foreach($_SESSION['mapa'] as $klucz => $wartosc ) {
  43. foreach($wartosc as $pole => $pozycja) {
  44. if($pozycja['typ'] == 1) {
  45. imagesetpixel($gd, $klucz+$rozmiar,$pole+$rozmiar, $white);
  46. }
  47. }
  48. }
  49. Header("Content-type: image/png");
  50. ImagePNG($gd);
  51.  
  52. ?>