1. Konstruktor class TStudent public $wiek; Programowanie WEB Lista nr 10 (termin 26.05.2015) mgr inż. Adam Dudek function przedstaw_sie() echo 'Nazywam się :<br>'; echo 'Imie - '.$this->imie.'<br>'; echo 'Nazwisko - '.$this->nazwisko.'<br>'; echo 'Wiek - '.$this->wiek.'<br>'; function TStudent($p1,$p2,$p3) //konstruktor echo 'To ja - konstruktor parametrowy<br>'; $this->imie=$p1; $this->nazwisko=$p2; $this->wiek=$p3; $Janek = new TStudent(1,2,3); $Janek->imie='Nazwisko'; $Janek->wiek=22; $Janek->przedstaw_sie();?> 2. Kopiowanie obiektów class TOsoba public $id; function TOsoba($im,$nazw) $this->imie=$im; $this->nazwisko=$nazw; $this->id=10; function przedstaw_sie() echo $this->imie.'<br>'; echo $this->nazwisko.'<br>'; echo $this->id.'<br>';
public function clone() //samodzielna obsluga klonowania $this->id=0; $Janek = new TOsoba("Janko","Muzykant"); $Janek->id=100; $Janek->przedstaw_sie(); $klon_janka = clone $Janek; //klonujemy $klon_janka->przedstaw_sie(); 3. Metody magiczne class JakasKlasa public $JakiesPole; public function get($name) echo "Obiekt nie posiada właściwości $name"; public function set($name, $value) echo "<br>obiekt nie posiada właściwości $name, nie można więc przypisać wartości $value</br>"; public function call($name, $params) echo "<br>metoda $name nie istnieje. Przekazane parametry:"; print_r($params); echo '<br>'; $ObiektKlasy=new JakasKlasa(); $ObiektKlasy->JakiesPole=100; echo $ObiektKlasy->JakiesPole; $ObiektKlasy->JakiesInnePole=120; echo $ObiektKlasy->JakiesInnePole; $ObiektKlasy->JakasMetoda(5,'6','7'); Są to metody wywoływane w momencie, gdy następuje próba dostępu do nieistniejącej właściwości obiektu. Metoda get() zostanie wykonana, gdy będziemy pobierali taką właściwość. Posiada ona jeden parametr, do którego zostaje przypisana nazwa wywoływanej właściwości. Analogicznie metoda set() wywoła się, gdy będziemy chcieli ustawić nieistniejącą właściwość obiektu. Przyjmuje ona dwa parametry, kolejno: nazwa oraz wartość.
Należy pamiętać, że gdy nie zdefiniujemy powyższych metod, to w przypadku odczytu nieistniejącej właściwości otrzymamy null, natomiast gdy będziemy chcieli do takiej przypisać wartość, zostanie ona w tym momencie utworzona. Metoda call() działa analogicznie do poprzednich, dotyczy jednak metod obiektu. W przypadku, gdy nie zdefiniujemy cal() i wywołujemy nieistniejącą metodę, zostanie wyświetlony odpowiedni błąd, a działanie skryptu zatrzymane. 3. Dziedziczenie class osoba public function przedstaw_sie() return $this -> imie.' '.$this -> nazwisko; public function construct($imie, $nazwisko) // to też jest konstruktor $this -> imie = $imie; $this -> nazwisko = $nazwisko; class pracownik extends osoba public $zarobki; public function construct($imie, $nazwisko, $wynagrodzenie) parent:: construct($imie, $nazwisko); //konstruktor klasy nadrzędnej $this -> zarobki = $wynagrodzenie; public function przedstaw_sie() return parent::przedstaw_sie().' (wynagrodzenie '.$this->zarobki.')'; //wywołanie metody z klasy nadrzędnej 5. Dynamiczne tworzenie pól class magazyn private $pole_pryw = 24; public function dodaj_pole($nazwa, $wartosc) // dynamiczne tworzenie pola - jak zwykla zmienna $this -> $nazwa = $wartosc; $magazyn = new magazyn; $magazyn -> dodaj_pole('pole1', time()); $magazyn -> dodaj_pole('pole2', rand(0,100)); $magazyn -> dodaj_pole('pole3', 13);
foreach($magazyn as $nazwa => $wartosc) echo $nazwa.' => '.$wartosc.'<br/>'; Zadanie 1 (40 pkt) Zasady gry super farmer ra jest przeznaczona dla 2,3 lub 4 graczy. Wszyscy gracze rozpoczynają grę z pustymi zagrodami. Gracz, na którego przypada kolejka, rzuca dwiema dwunastościennymiymi kostkami. Gdy gracz nie ma jeszcze żadnych zwierząt w swojej zagrodzie, a na kostkach wypadną różne obrazki, to nic się nie dzieje. Jeżeli jednak na obu kostkach wypadnie obrazek takiego samego zwierzęcia, gracz dostaje to zwierzę z banku, a właściwie ze stada, bo takiej nazwy używa się w grze. Gdy gracz ma już jakieś zwierzęta, dodaje się ich liczbę do tego co wypadło na kostkach i wynik dzieli przez dwa (z ewentualnym zaokrągleniem w dół). Jeżeli gracz ma na przykład 5 królików, 3 owce i 2 świnie, a na kostkach wypadł królik i owca, to dostaje 3 króliki i 2 owce. Może się jednak zdarzyć, że w stadzie jest mniej zwierząt, niz graczowi należy sie w wyniku rzutu. W takiej sytuacji gracz otrzymuje tylko tyle, ile jest w stadzie, a reszta przepada. Przed rzutem kostkami można dokonać jednej wymiany ze stadem, po kursie podanym w specjalnej tabeli. Jedna owca jest warta 6 królików, jedną świnię można wymienić na dwie owce itd. Można albo wymienić jedno cenniejsze zwierzę na odpowiednią liczbę tańszych (np. jedną świnię ma owcę i 6 królików), albo złożyć kilka mniej cennych na jedno droższe (np. jedną krowę, dwie świnie i dwie owce na jednego konia). Gra trwa do chwili, gdy jeden z graczy zbierze przynajmniej po jednym przedstawicielu każdego z pięciu gatunków zwierząt: królika, owcę, świnię, krowę i konia. Gra nie byłaby specjalnie ciekawa, gdyby nie element ryzyka. Na kostkach jest także lis i wilk. Co się dzieje, gdy gracz wylosuje jednego z drapieżników? Jeżeli na kostce wypadnie lis, gracz traci wszystkie króliki. Inne zwierzęta nie są przez lisa zagrożone. Gorzej jest wtedy, gdy wypadnie wilk. Gracz traci wówczas wszystkie zwierzęta z wyjątkiem konia. Ale przed zagrożeniem ze strony lisa i wilka można się zabezpieczyć, kupując psy. Mały pies, który jest wart tyle co owca, czyli 6 królików, chroni przed atakiem lisa. Gdy gracz ma małego psa, a na kostce wypadnie lis, gracz oddaje do stada małego psa, a króliki pozostają w jego zagrodzie. Analogicznie duży pies, stanowiący równowartość krowy, chroni przed wilkiem. Rekwizyty w grze: - kostka zielona (wilk, krowa, świnia, 3 owce, 6 królików), - kostka czerwona (lis, koń, 2 świnie, 2 owce, 6 królików), - 60 królików, - 24 owce, - 20 świń, - 12 krów, - 6 koni, - 4 małe psy, - 2 duże psy, Tabela wymiany 1 owca = 6 królików 1 świnia = 2 owce = 12 królików = 1 owca + 6 królików 1 krowa = 3 świnie = 6 owiec = 36 królików 1 koń = 2 krowy = 6 świń = 12 owiec = 1 krowa + 1 świnia + 1 owca + 18 królików 1 mały pies = 1 owca = 6 królików 1 duży pies = 1 krowa = 3 świnie = 6 owiec = 36 królików
Jak wygrać? Superfarmer jest grą z dużym udziałem losu i dlatego zdarza się, że osoba grająca pierwszy raz, dzięki szczęśliwym rzutom, pokonuje doświadczonych graczy. Niemniej jednak warto zapamiętać kilka wskazówek, pozwalających zwiekszyć swoje szanse na zwycięstwo. 1. Sprawdzaj przed rzutem, czy w stadzie jest wystarczająca liczba zwierząt. Jeżeli masz np. 15 królików, a w stadzie zostały 3, to dostaniesz tylko 3 króliki, a nie 8. 2. Staraj się jak najszybciej wymienic posiadane zwierzęta na konia. 3. Gdy masz dużo królików, weź ze stada małego psa. 4. W stadzie są tylko dwa duże psy. Gdy gra więcej osób, nie dla wszystkich wystarczy. Bazując na powyższych przykładach oraz zasadach gry, proszę zaproponować rozwiązanie, które pozwoli przeprowadzić rozgrywkę w grę super farmer dla 2,3 lub 4 graczy przy wykorzystaniu przeglądarki internetowej. Oczywiście jest to gra "turowa" czyli ci sami gracze korzystają z jednej przeglądarki, realizując poszczególne kroki gry "na zmianę". Aplikacja musi być zrealizowana "obiektowo" przy wykorzystaniu również wiedzy z poprzednich list zadań. Ponadto jest to gra, zatem "atrakcyjność wizualna" będzie istotnym elementem oceny. Rozwiązanie ma być w pełni obiektowe.