Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 5 Dołączył: 4.12.2013 Skąd: Śląsk Ostrzeżenie: (0%)
|
Witam! Ponieważ uczę się PHP postanowiłem napisać w tym właśnie języku prostą gre "saper" niestety mam problem, ponieważ za każdym razem gdy nacisnę input to strona sie odświeża, co z tym idzie nie można przetestować dalszego kodu czy działa poprawie ze względu na reset wszystkiego. Czy moglibyście mi poradzić jak mam rozwiązać ten problem? Ew. jeżeli istnieje jakieś inne lepsze rozwiązanie podsunąć mi je.
Drugim "estetycznym" problemem jest dla mnie napisanie warunku: czy da się if z linii 20 zapisać prościej w stylu linii 23?
Ten post edytował Geniesis 4.12.2013, 19:51:51 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 321 Pomógł: 55 Dołączył: 19.04.2009 Ostrzeżenie: (0%)
|
W sumie gra to zadanie od nauczyciela co mamy mu wysłać, jednak dla mnie to przedewszystkim dobra nauka języka dodając chore ambicje raczej ciężko mi będzie odpuścić do czasu aż tego dobrze nie napiszę. jak tam - wysłałeś już zadanie ? jak tak, to mam dla Ciebie coś - dziś mi się trochę nudziło w pracy więc w międzyczasie napisałem skrypt tego sapera byś się na tym przykładzie pouczył o zastosowaniu/używaniu tablic 2-wymiarowych do takich zadań. może komuś się przyda do nauki Kod <?php
session_start(); /** * konfiguracja */ $X = 10; // ilosc kolumn $Y = 10; //ilosc rzedow $ileBomb = 6; // ilosc bomb /** * losownie nowej planszy */ function losuj($X ,$Y, $ileBomb){ $plansza = array(); while($ileBomb > 0){ $x = rand(1,$X); $y = rand(1,$Y); if( !isset( $plansza[$x][$y] ) ) { $plansza[$x][$y] = -1; $ileBomb--; } } return $plansza; } /** * sprawdzenie otoczenia na planszy */ function sprawdzOtoczenie($x,$y,$plansza){ $pkt = 0; if( isset ($plansza[$x - 1][$y]) && $plansza[$x - 1][$y] == -1) $pkt++; if( isset ($plansza[$x + 1][$y]) && $plansza[$x + 1][$y] == -1) $pkt++; if( isset ($plansza[$x][$y - 1]) && $plansza[$x][$y - 1] == -1) $pkt++; if( isset ($plansza[$x][$y + 1]) && $plansza[$x][$y + 1] == -1) $pkt++; if( isset ($plansza[$x + 1][$y + 1]) && $plansza[$x + 1][$y + 1] == -1) $pkt++; if( isset ($plansza[$x - 1][$y - 1]) && $plansza[$x - 1][$y - 1] == -1) $pkt++; if( isset ($plansza[$x + 1][$y - 1]) && $plansza[$x + 1][$y - 1] == -1) $pkt++; if( isset ($plansza[$x - 1][$y + 1]) && $plansza[$x - 1][$y + 1] == -1) $pkt++; $plansza[$x][$y] = $pkt; return $plansza; } /** * Inicjowanie danych */ if( !isset( $_SESSION['plansza'] ) ){ $_SESSION['plansza'] = $plansza = losuj($X,$Y,$ileBomb); $_SESSION['wolnepola'] = $X * $Y - $ileBomb; } else { $plansza = $_SESSION['plansza']; } /** * Podstawowa logika */ switch( $_GET['todo'] ){ case 'nowagra' : { $_SESSION['plansza'] = $plansza =losuj($X,$Y,$ileBomb); $_SESSION['wolnepola'] = $X * $Y - $ileBomb; break; } case 'strzal' :{ if( isset($_POST['strzal']) ) { /* pomijam kwestie sprawdzania/filtrowania przekazanych danych */ list($x , $y) = explode(',',$_POST['strzal']); if( isset($plansza[$x][$y] ) && $plansza[$x][$y] == -1 ) { /** * PRZEGRALES */ $INFO = 'PRZEGRALES'; $plansza[$x][$y] = '*'; unset($_SESSION['plansza']); } else { if( $_SESSION['wolnepola'] == 1){ /** * WYGRALES */ $INFO = 'WYGRALES'; } $_SESSION['plansza'] = $plansza = sprawdzOtoczenie($x,$y,$plansza);; $_SESSION['wolnepola']--; } } break; } } ?> <!DOCTYPE html> <html> <head> <title></title> <style type="text/css"> button {width:40px;height:40px;} button[type=submit]{background-color:#f0f0f0;} button[type=button]{background-color: #909090;} </style> </head> <body> <div> <a href="?todo=nowagra">nowa gra</a> </div> <div class="plansza"><?php echo ( (isset($INFO) ? $INFO : '') ); ?> <form action="?todo=strzal" method="POST"> <table> <?php for($y = 1; $y <= $Y; $y++){ echo '<tr>'; for($x = 1; $x <= $X; $x++){ // $typ = 'submit'; $typ = (!isset($plansza[$x][$y]) || $plansza[$x][$y] == -1 ) ? 'submit' : 'button'; $text = ($typ == 'button' && $plansza[$x][$y] != 0) ? $plansza[$x][$y] : ''; echo '<td>','<button name="strzal" type="'.$typ.'" value="'.$x.','.$y.'">'.$text.'</button>','</td>'; } echo '</tr>'; } ?> </table> </form> </div> </body> </html> Ten post edytował ctom 7.12.2013, 13:15:57 |
|
|
|
Geniesis [PHP] Zablokowanie odświeżania strony 4.12.2013, 19:50:44
werdan Ciekawe rozwiazanie
Nie wiem czy to dobry pomysł... 4.12.2013, 20:03:10
ctom biorące pod uwagę, że zaczynasz ...
1/ weź kartkę... 4.12.2013, 20:19:03
Geniesis Wiem, że w JS byłoby prościej ale zależy mi by zro... 4.12.2013, 20:33:41
ctom Cytat(Geniesis @ 4.12.2013, 20:33:41 ... 4.12.2013, 21:05:56
Geniesis Troszeczkę nie wiem czy traktujesz mnie poważnie, ... 4.12.2013, 21:23:57
ctom gdzie w moich wypowiedział wyczytałeś, że traktuję... 4.12.2013, 21:36:01
Geniesis Mogło być to moje błędne subiektywne odczucie za c... 4.12.2013, 21:42:32
ctom ja nie z takich co się obrażają - więc nie musisz ... 4.12.2013, 21:55:08
werdan >Podejrzewam, że jest to związane, że PHP jest ... 4.12.2013, 22:11:16 
Geniesis Cytat(werdan @ 4.12.2013, 22:11:16 ) ... 4.12.2013, 22:42:20
Geniesis W sumie gra to zadanie od nauczyciela co mamy mu w... 4.12.2013, 22:13:30
ctom chętnie zobaczę na ile starczy Ci tych ambicji - ... 4.12.2013, 22:30:45
ctom kończąc tą dyskusję na dziś odpowiem Ci skąd moje ... 4.12.2013, 22:52:17
markonix Nie $_SESSION[$man[$a]] tylko ... 5.12.2013, 01:26:00
Geniesis Tak, musiałem... Dziękuję Ci, że to zrobiłeś, z t... 8.12.2013, 21:08:20 ![]() ![]() |
|
Aktualny czas: 29.12.2025 - 13:55 |