13.11.2014 Views

Programowanie WEB Lista nr 10 mgr inż. Adam Dudek

Programowanie WEB Lista nr 10 mgr inż. Adam Dudek

Programowanie WEB Lista nr 10 mgr inż. Adam Dudek

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

1. Konstruktor<br />

class TStudent<br />

{<br />

public $imie;<br />

public $nazwisko;<br />

public $wiek;<br />

<strong>Programowanie</strong> <strong>WEB</strong><br />

<strong>Lista</strong> <strong>nr</strong> <strong>10</strong> (termin 28.05.2014)<br />

<strong>mgr</strong> inż. <strong>Adam</strong> <strong>Dudek</strong><br />

function przedstaw_sie()<br />

{<br />

echo 'Nazywam się :';<br />

echo 'Imie - '.$this->imie.'';<br />

echo 'Nazwisko - '.$this->nazwisko.'';<br />

echo 'Wiek - '.$this->wiek.'';<br />

}<br />

}<br />

function TStudent($p1,$p2,$p3) //konstruktor<br />

{<br />

echo 'To ja - konstruktor parametrowy';<br />

$this->imie=$p1;<br />

$this->nazwisko=$p2;<br />

$this->wiek=$p3;<br />

}<br />

$Janek = new TStudent(1,2,3);<br />

$Janek->imie='Nazwisko';<br />

$Janek->wiek=22;<br />

$Janek->przedstaw_sie();<br />

?><br />

2. Interfejsy specjalne<br />

function __set($nazwa,$wartosc) //interfejs specjalny<br />

{<br />

echo 'Nie ma zamiennej o nazwie - '.$nazwa.' nie można do niej nic przypisac';<br />

$this->$nazwa=$wartosc;<br />

}<br />

function __get($nazwa) //interfejs specjalny<br />

{<br />

echo 'Zmienna o nazwie - '.$nazwa.' nie istnieje - nie można z niej nic odczytac';<br />

return $this->$nazwa;<br />

}<br />

public function __call($nazwa, $parametry) //interfejs specjalny<br />

{<br />

echo 'Chyba popelniłes literowke, probujac wywolac nieistniejaca metode '.$nazwa.'';<br />

}<br />

$Janek->ilosc=<strong>10</strong>;


echo $Janek->cena;<br />

$Janek->dolicz_vat();<br />

3. Kopiowanie obiektów<br />

class TOsoba<br />

{<br />

public $imie;<br />

public $nazwisko;<br />

public $id;<br />

function TOsoba($im,$nazw)<br />

{<br />

$this->imie=$im;<br />

$this->nazwisko=$nazw;<br />

$this->id=<strong>10</strong>;<br />

}<br />

function przedstaw_sie()<br />

{<br />

echo $this->imie.'';<br />

echo $this->nazwisko.'';<br />

echo $this->id.'';<br />

}<br />

}<br />

public function __clone() //samodzielna obsluga klonowania<br />

{<br />

$this->id=0;<br />

}<br />

$Janek = new TOsoba("Janko","Muzykant");<br />

$Janek->id=<strong>10</strong>0;<br />

$Janek->przedstaw_sie();<br />

$klon_Janka = clone $Janek; //klonujemy<br />

$klon_Janka->przedstaw_sie();<br />

4. Dziedziczenie<br />

class osoba{<br />

public $imie;<br />

public $nazwisko;<br />

public function przedstaw_sie(){<br />

return $this -> imie.' '.$this -> nazwisko;<br />

}<br />

public function __construct($imie, $nazwisko) // to też jest konstruktor<br />

{<br />

$this -> imie = $imie;<br />

$this -> nazwisko = $nazwisko;<br />

}<br />

}<br />

class pracownik extends osoba{


public $zarobki;<br />

public function __construct($imie, $nazwisko, $wynagrodzenie){<br />

parent::__construct($imie, $nazwisko); //konstruktor klasy nadrzędnej<br />

$this -> zarobki = $wynagrodzenie;<br />

}<br />

public function przedstaw_sie(){<br />

return parent::przedstaw_sie().' (wynagrodzenie '.$this->zarobki.')';<br />

//wywołanie metody z klasy nadrzędnej<br />

}<br />

}<br />

5. Dynamiczne tworzenie pól<br />

class magazyn{<br />

private $pole_pryw = 24;<br />

public function dodaj_pole($nazwa, $wartosc){<br />

// dynamiczne tworzenie pola - jak zwykla zmienna<br />

$this -> {$nazwa} = $wartosc;<br />

}<br />

}<br />

$magazyn = new magazyn;<br />

$magazyn -> dodaj_pole('pole1', time());<br />

$magazyn -> dodaj_pole('pole2', rand(0,<strong>10</strong>0));<br />

$magazyn -> dodaj_pole('pole3', 13);<br />

foreach($magazyn as $nazwa => $wartosc){<br />

echo $nazwa.' => '.$wartosc.'';<br />

}<br />

Zadanie 1 (30 pkt)<br />

Zasady gry super farmer<br />

ra jest przeznaczona dla 2,3 lub 4 graczy. Wszyscy gracze rozpoczynają grę z pustymi zagrodami.<br />

Gracz, na którego przypada kolejka, rzuca dwiema dwunastościennymiymi kostkami. Gdy gracz nie<br />

ma jeszcze żadnych zwierząt w swojej zagrodzie, a na kostkach wypadną różne obrazki, to nic się nie<br />

dzieje. Jeżeli jednak na obu kostkach wypadnie obrazek takiego samego zwierzęcia, gracz dostaje to<br />

zwierzę z banku, a właściwie ze stada, bo takiej nazwy używa się w grze. Gdy gracz ma już jakieś<br />

zwierzęta, dodaje się ich liczbę do tego co wypadło na kostkach i wynik dzieli przez dwa (z<br />

ewentualnym zaokrągleniem w dół). Jeżeli gracz ma na przykład 5 królików, 3 owce i 2 świnie, a na<br />

kostkach wypadł królik i owca, to dostaje 3 króliki i 2 owce. Może się jednak zdarzyd, że w stadzie jest<br />

mniej zwierząt, niz graczowi należy sie w wyniku rzutu. W takiej sytuacji gracz otrzymuje tylko tyle, ile<br />

jest w stadzie, a reszta przepada.<br />

Przed rzutem kostkami można dokonad jednej wymiany ze stadem, po kursie podanym w specjalnej<br />

tabeli. Jedna owca jest warta 6 królików, jedną świnię można wymienid na dwie owce itd. Można albo<br />

wymienid jedno cenniejsze zwierzę na odpowiednią liczbę taoszych (np. jedną świnię ma owcę i 6<br />

królików), albo złożyd kilka mniej cennych na jedno droższe (np. jedną krowę, dwie świnie i dwie<br />

owce na jednego konia).<br />

Gra trwa do chwili, gdy jeden z graczy zbierze przynajmniej po jednym przedstawicielu każdego z<br />

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ę<br />

dzieje , gdy gracz wylosuje jednego z drapieżników? Jeżeli na kostce wypadnie lis, gracz traci<br />

wszystkie króliki. Inne zwierzęta nie są przez lisa zagrożone. Gorzej jest wtedy, gdy wypadnie wilk.<br />

Gracz traci wówczas wszystkie zwierzęta z wyjątkiem konia.<br />

Ale przed zagrożeniem ze strony lisa i wilka można się zabezpieczyd, kupując psy. Mały pies, który jest<br />

wart tyle co owca, czyli 6 królików, chroni przed atakiem lisa. Gdy gracz ma małego psa, a na kostce<br />

wypadnie lis, gracz oddaje do stada małego psa, a króliki pozostają w jego zagrodzie. Analogicznie<br />

duży pies, stanowiący równowartośd krowy, chroni przed wilkiem.<br />

Rekwizyty w grze:<br />

- kostka zielona (wilk, krowa, świnia, 3 owce, 6 królików),<br />

- kostka czerwona (lis, koo, 2 świnie, 2 owce, 6 królików),<br />

- 60 królików,<br />

- 24 owce,<br />

- 20 świo,<br />

- 12 krów,<br />

- 6 koni,<br />

- 4 małe psy,<br />

- 2 duże psy,<br />

Tabela wymiany<br />

1 owca = 6 królików<br />

1 świnia = 2 owce = 12 królików = 1 owca + 6 królików<br />

1 krowa = 3 świnie = 6 owiec = 36 królików<br />

1 koo = 2 krowy = 6 świo = 12 owiec = 1 krowa + 1 świnia + 1 owca + 18 królików<br />

1 mały pies = 1 owca = 6 królików<br />

1 duży pies = 1 krowa = 3 świnie = 6 owiec = 36 królików<br />

Jak wygrad ?<br />

Superfarmer jest grą z dużym udziałem losu i dlatego zdarza się, że osoba grająca pierwszy raz, dzięki<br />

szczęśliwym rzutom, pokonuje doświadczonych graczy. Niemniej jednak warto zapamiętad kilka<br />

wskazówek, pozwalających zwiekszyd swoje szanse na zwycięstwo.<br />

1. Sprawdzaj przed rzutem, czy w stadzie jest wystarczająca liczba zwierząt.<br />

Jeżeli masz np. 15 królików, a w stadzie zostały 3, to dostaniesz tylko 3 króliki, a nie 8.<br />

2. Staraj się jak najszybciej wymienic posiadane zwierzęta na konia.<br />

3. Gdy masz dużo królików, weź ze stada małego psa.<br />

4. W stadzie są tylko dwa duże psy. Gdy gra więcej osób, nie dla wszystkich wystarczy.<br />

5. Lepiej mied nieparzystą liczbę zwierząt danego gatunku niż parzystą.<br />

Bazując na powyższych przykładach oraz zasadach gry, proszę zaproponowad rozwiązanie, które<br />

pozwoli przeprowadzid rozgrywkę w grę super farmer dla 2,3 lub 4 graczy przy wykorzystaniu<br />

przeglądarki internetowej. Oczywiście jest to gra "turowa" czyli ci sami gracze korzystają z jednej<br />

przeglądarki, realizując poszczególne kroki gry "na zmianę". Aplikacja musi byd zrealizowana<br />

"obiektowo" przy wykorzystaniu również wiedzy z poprzednich list zadao. Ponadto jest to gra, zatem<br />

"atrakcyjnośd wizualna" będzie istotnym elementem oceny.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!