Witam. Chciałbym państwu przedstawić moją pierwszą grę. Oto jej kod źdódłowy:
<?php $level = http://www.php.net/file_get_contents('lvl.txt'); $exp = http://www.php.net/file_get_contents('exp.txt'); $hp = http://www.php.net/file_get_contents('hp.txt'); $zloto = http://www.php.net/file_get_contents('zloto.txt'); if ($exp > 99) //po zdobyciu ponad 99 expa daje 2 lvl { $level = 2; file_put_contents("lvl.txt",$level); } if ($exp > 199) //po zdobyciu ponad 99 expa daje 2 lvl { $level = 3; file_put_contents("lvl.txt",$level); } if ($exp > 399) //po zdobyciu ponad 99 expa daje 2 lvl { $level = 4; file_put_contents("lvl.txt",$level); } if ($exp > 699) //po zdobyciu ponad 99 expa daje 2 lvl { $level = 5; file_put_contents("lvl.txt",$level); http://www.php.net/echo "maj dik gut kak <br />"; } ?> <h1>walka</h1> <p>Aby rozpoczac walke musisz wpisac "1" i kliknac "walcz".<p> <form method="post" /> <input type="text" name="wartosc" /> <input type="submit" value="walcz!" /> <?php $potworek = 10; $otrzymane = $_POST['wartosc']; if($otrzymane == 2) // po wpisaniu 2 zresetuje EXP $expplik = http://www.php.net/fopen("exp.txt", "w"); if($otrzymane == 1) // po wpisaniu 1 zaatakuje potworka { if ($hp >10) //sprawdza czy masz wystarczajaco HP by walczyc { $exp = $exp+$potworek; $zloto += 50; file_put_contents("exp.txt",$exp); // zapisze dodane exp do pliku z expem file_put_contents("zloto.txt",$zloto); // zapisze dodane zloto do pliku } } if ($hp >10) {$hp -=10; //odbierze 10hp file_put_contents("hp.txt",$hp); //zapisze stan HP w pliku } else { http://www.php.net/echo "nie masz już zycia"; } ?> <h1>uzdrowiciel </h1> <p>Aby sie uzdrowic musisz wpisac ponizej "1" i kliknac "uzdrow". koszt 100zlota</p> <form method="post" /> <input type="text" name="uzdrowiciel" /> <input type="submit" value="uzdrow" /> <?php $uzdrowiciel=$_POST['uzdrowiciel']; if ($uzdrowiciel == 1) { if($zloto > 100) {$hp = 100; $zloto -= 100; file_put_contents("zloto.txt",$zloto); file_put_contents("hp.txt",$hp); } } ?> <h2>statystyki postaci</h2> <?php http://www.php.net/echo "poziom $level <br />"; //pokazuje lvl http://www.php.net/echo "doswiadczenie $exp <br />"; //pokazuje EXP http://www.php.net/echo "zycie $hp <br />"; //pokazuje zycie http://www.php.net/echo "zloto $zloto"; //pokazuje zloto ?>
Moim zdaniem powinieneś zamienić formularze na bardziej intuicyjny, np.
if(http://www.php.net/isset($_POST['submit']))
if ($uzdrowiciel == 1)
http://www.php.net/echo "poziom " . $level . " <br />";
if ($exp > 699) //po zdobyciu ponad 99 expa daje 2 lvl
@up
Dzięki znam teraz kilka przydatnych sposobów.
Oto aktualny kod:
<?php $level = http://www.php.net/file_get_contents('lvl.txt'); $exp = http://www.php.net/file_get_contents('exp.txt'); $hp = http://www.php.net/file_get_contents('hp.txt'); $zloto = http://www.php.net/file_get_contents('zloto.txt'); if ($exp > 99) //po zdobyciu ponad 99 expa daje 2 lvl { $level = 2; file_put_contents("lvl.txt",$level); } if ($exp > 199) //po zdobyciu ponad 199 expa daje 3 lvl { $level = 3; file_put_contents("lvl.txt",$level); } if ($exp > 399) //po zdobyciu ponad 399 expa daje 4 lvl { $level = 4; file_put_contents("lvl.txt",$level); } if ($exp > 699) //po zdobyciu ponad 699 expa daje 5 lvl { $level = 5; file_put_contents("lvl.txt",$level); http://www.php.net/echo "maj dik gut kak <br />"; } ?> <h1>walka</h1> <form method="post"> <select name="wartosc"> <option value="1">Walcz</option> <option value="2">Zresetuj doświadczenie</option> </select> <input type="submit" value="wykonaj"> </form> <?php $potworek = 10; $otrzymane = $_POST['wartosc']; if($otrzymane == 2) // po wpisaniu 2 zresetuje EXP $expplik = http://www.php.net/fopen("exp.txt", "w"); if($otrzymane == 1) // po wpisaniu 1 zaatakuje potworka { if ($hp >10) //sprawdza czy masz wystarczajaco HP by walczyc { $exp = $exp+$potworek; $zloto += 50; file_put_contents("exp.txt",$exp); // zapisze dodane exp do pliku z expem file_put_contents("zloto.txt",$zloto); // zapisze dodane zloto do pliku } } if ($hp >10) {$hp -=10; //odbierze 10hp file_put_contents("hp.txt",$hp); //zapisze stan HP w pliku } else { http://www.php.net/echo "nie masz już zycia"; } ?> <h1>uzdrowiciel </h1> <form method="post"> <input type="hidden" name="uzdrowiciel" value="1" /> <input type="submit" name="submit" value="uzdrow" /> </form> <?php $uzdrowiciel=$_POST['uzdrowiciel']; if ($uzdrowiciel == 1) { if($zloto > 100) {$hp = 100; $zloto -= 100; file_put_contents("zloto.txt",$zloto); file_put_contents("hp.txt",$hp); } } ?> <h2>statystyki postaci</h2> <?php http://www.php.net/echo "poziom ". $level . "<br />"; //pokazuje lvl http://www.php.net/echo "doswiadczenie" .$exp. "<br />"; //pokazuje EXP http://www.php.net/echo "zycie ". $hp ." <br />"; //pokazuje zycie http://www.php.net/echo "zloto" . $zloto; //pokazuje zloto ?>
Kod się wykonuje? Jeśli tak to jest poprawny. Jakościowo słabo. Pisać może każdy, jednak mało kto robi to sensownie. Stwórz przynajmniej schemat blokowy na kartce papieru.
$uzdrowiciel=$_POST['uzdrowiciel'];
$otrzymane = $_POST['wartosc'];
5. Tak, wiem, chodzi tutaj o setne sekundy optymalności. Ale już się nie zajmujmy tak drobnym czasem - tłumacząc początkującemu mówię prosto
6. Zdziwiony jestem twoją wypowiedzią. W przypadku "dwóch szkół" sięgnijmy do szkoły główne czyli do strony php.net o warunkach:
http://php.net/manual/en/control-structures.if.php
W przykładach pięknie pokazane jest że najbardziej prawidłową konstrukcją, używaną przez twórców php jest:
if() {
}
A konstrukcja:
if()
{
}
jest jedynie wymysłem programistów którzy piszą w PHP
Ma być czytelnie i przejrzyście żebyś po x miesiącach zajrzał i widział wszystko i wiedział co gdzie jest.
Podsumowywując:
1. Piszesz kod od początku
2. Korzystasz z bazy danych, i musisz koniecznie użyć PDO
3. Rezygnujesz z tego:
$exp = $exp+$potworek; file_put_contents("exp.txt",$exp);
file_put_contents("exp.txt",$exp+$potworek);
/* po słowie kluczowym spacja */ if ($condition === true && evaluate($sth) >= 2) { }
Nigdy nie wiesz do jakiej grupy trafisz więc raczej ciężko ocenić jak lepiej a jak gorzej, taki zapis jest prosty do ewentualnie przestawienia się i pisania inaczej więc raczej nie robi to problemu gdybyś pisał:
if () {
}
a trafił na grupę, która pisze
if ()
{
}
Z początku wydawało mi się, że ktoś przeniesie do ocen ale z biegiem czasu temat zaczął bardziej pasować do hydeparku.
Co do if'ów to nie spotkałem się z nikim kto stosowałby 2 linijkowe rozwiązanie, poza jakimiś jednoosobowymi kursami itp.
Za dziwne uważam, że komuś może poprawić czytelność przeniesienie '{' fo nowej linij, sądzę, że to kwestia przyzwyczajenia oczywiście nie chce nikogo obrazić.
Dodatkowo kod jest krótszy choć to słaby argument.
Najlepiej zastosować się do tych https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md wytycznych i z głowy cała dyskusja.
Nowa linia po nagłówkach funkcji i metod? Moim zdaniem taka sama sprawa jak z if'ami...
Mała dygresja z mojej strony: kiedyś, dobrych parę lat temu jak pisałem w C nie wyobrażałem sobie pisać inaczej niż { w nowej linii. Teraz jest zupełnie na odwrót @Adi32 kod jest krótszy, ale w takim sensie, że więcej go widać na ekranie i jest to jeden IMHO z ważniejszych argumentów za tym stylem. Podoba mi się rozwiązanie z Pythona, gdzie całkowicie zrezygnowano z instrukcji określających początek i koniec bloku, a tą rolę pełnią zwyczajnie "wcięcia" (które i tak robimy, a przynajmniej powinniśmy). Nie programowałem jednak w tym języku i nie wiem na ile jest to wygodne i czy nie wiąże się z jakimiś uciążnieniami (taby? spacje? ile spacji? szybkie przenoszenie na koniec/początek bloku w IDE?)
Dziwne to trochę (osobiście też wolę w jednej linii) ale zarówno Zend jak i Symfony a pewnie jeszcze masa innych projektów się do tego stosuje, łatwo znaleźć ustawienia dla edytorów więc cóż.. jak standard to standard.
ludzie co to za dyskusja.
piszę { od nowej linii, bo dzięki temu kod zdaje mi się być czytelniejszy, z resztą jeśli ktoś się wczytał to zauważył że ogólnie lubię zamieszczać jak najmniej danych w linii
Skoro to taka różnica to od dziś będę pisał if(){
załatwione
Wiem że mogłem to zrobić z bazami, ale jeszcze nie miałem styczności z MYSQL, poza tym to było robione tak 4fun by utrwalić wiedzę po przebrnięciu jakimś cudem przez 5 rozdziałów kursu: http://kursphp.com
a co do projektu to jeszcze coś wstawię, na razie nie mam pojęcia co
Też zaczynałem od pisania takich rzeczy.
Zapoznaj się z MySQL'em - podstawy pracy z bazą danych są prostsze niż się to wcześniej wydaje
I chyba trochę przesadzasz w rzucaniu pomagajkami.
A niech mnie, materkamil uczy innych jak pisać i formatować kod! klękajcie narody...
Jak wspomniał pamil PSR-* załatwia sprawę. Klamra w nowej linii to tylko kwestia estetyczna i nie ma najmniejszego znaczenia, nawyk jeszcze z czasów, gdy większości z Was nie było na świecie
Wyzerowałem praktycznie wszystkie pomagajki.
Pół tony tekstu o wyższości ' nad " i położenia klamer - i to od ludzi, którzy w najlepszym przypadku są początkującymi programistami... ręce opadają.
Th0e, wszystkie dane mozęsz zapisac w jenym pliku, (ini, yaml, xml, tablica php) - chociaż bardziej bym się skłaniał przynajmniej do SQLite - może się nauczyć czegoś przydatnego.
Pozatym sugeruję rozbicie tego pliku na kilka:
1. Wyświetlający "panel"
2. przeliczające wskaźniki w zależności od akcji
Już samo to spowoduje, że kod będzie czytelniejszy i łatwiejszy w zarządzaniu i ewentualnej rozbudowie.
Nawet gdyby spotkała Cie takowa fala hejtu jak to napisałeś, to nie ma się czym przejmować tylko w sumie dostosować się do wypowiedzi, uczyć się na błędach i wprowadzać poprawki.
A, że tak się spytam... czemu nauka "obsługi bazy danych" z poziomu mysql_* jest zła ? Przecież te funkcje na początku są po prostu wystarczające i proste w użyciu. Zanim autor nauczy się pisać (pseudo)obiektowo, trochę czasu minie. A bez znajomości pseudoobiektowości trudno się połapać w mysqli czy pdo (tak mi się wydaje )
Dlatego:
Na mojej oczelni jest najpierw nauka programowania strukturalnego (najpierw asm, potem pascal). Następnie będę miał C, potem chyba C++ potem java i/lubc#. Czyli od strukturalnego do obiektowego, bo obiektówka jest trudniejsza. Dlatego moim zdaniem, nauka programowania wykorzystując tylko struktralne funkcje nie jest grzechem. Nie są one zalecane... ale przecież to nauka, a nie tworzenie komercyjnych aplikacji.
W sumie masz rację, że korzystanie z obiektów nie jest trudne, wystarczy wygooglować sobie kawałek kodu który pobiera coś z bazy i dostosowywać go do swoich możliwości.
Co do javy, czy znacie kogoś, to zaczynał od nauki tego języka ? Pewnie są takie osoby, ale nauka obiektowości od zera jest dużym wyzwaniem. Chociaż z drugiej strony... można mieć jedną klasę, jedną metodę i w tej metodzie pisać strukturalnie nie zagłębiając się w szczegóły poco jest ta klasa i po co jest ta metoda i dla czego jest ona statyczna.
<?php // LOSOWANIE LOSOWANIE LOSOWANIE LOSOWANIE LOSOWANIE $losowanko = $_POST['loteria']; if ($losowanko == "loteria") { $losowanie = http://www.php.net/rand(1,10); if ($losowanie == 6) { http://www.php.net/echo "Gratulacje! Wygrales! Odswierz strone (kliknij [F5])by otrzymac 100 zlota!"; $zloto += 100; file_put_contents("zloto.txt",$zloto); } else { $zloto -= 10; file_put_contents("zloto.txt",$zloto); } } //LOSOWANIE LOSOWANIE LOSOWANIE LOSOWANIE LOSOWANIE ?>
<?php // LOSOWANIE LOSOWANIE LOSOWANIE LOSOWANIE LOSOWANIE $losowanko = $_POST['loteria']; if ($losowanko == "loteria") { $losowanie = http://www.php.net/rand(1,10); if ($losowanie == 6) { http://www.php.net/echo "Gratulacje! Wygrales! Odswierz strone (kliknij [F5])by otrzymac 100 zlota!"; $zloto += 100; file_put_contents("zloto.txt",$zloto); } else { $zloto -= 10; file_put_contents("zloto.txt",$zloto); } } //LOSOWANIE LOSOWANIE LOSOWANIE LOSOWANIE LOSOWANIE ?>
<?php // LOSOWANIE LOSOWANIE LOSOWANIE LOSOWANIE LOSOWANIE $losowanko = $_POST['loteria']; if ($losowanko == "loteria") { $losowanie = http://www.php.net/rand(1, 10); if ($losowanie == 6) { http://www.php.net/echo "Gratulacje! Wygrales! Odswierz strone (kliknij [F5])by otrzymac 100 zlota!"; $zloto += 100; file_put_contents("zloto.txt", $zloto); } else { $zloto -= 10; file_put_contents("zloto.txt", $zloto); } } //LOSOWANIE LOSOWANIE LOSOWANIE LOSOWANIE LOSOWANIE ?>
netbeans to jakiś program do edycji?
Jeśli chodzi o ten nowy kod to powiedz po co Ci to:
$losowanko = $_POST['loteria'];
Piszemy odswieŻ
Po drugie, poczytaj na internecie i włącz sobie pełną obsługę błędów razem z NOTICE. Bo obecnie jak ktoś nie wyśle $_POST['loteria'] dostaniesz notice właśnie. Od początku ucz się pisać bez błędów, będzie prościej wszystko zrozumieć czy znaleźć jakiś błąd trudny.
1. Nie cierpię tych tutoriali o php z uw-team.org -> własnie one wprowadzają w błąd i wymyślają te przypisywania zmiennych. Założę się że to je właśnie oglądałeś.
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)