library("knitr") library("SuperFarmerPKEK") library("ggplot2") library(reshape2)
Pakiet SuperFarmerPKEK
symuluję grę w SuperFarmera w wersji jednoosobowej.
Dokładne zasady gry są dostępne na stronie: klik
Do pakietu zostały przyłączone następujące zbiory danych:
StadoGracza
- nazwany wektor z aktualnym stanem stada gracza (na początku gracz nie posiada żadnych zwierząt),max_stado
- nazwany wektor z maksymalna liczba zwierząt dostępną w grze,kostka1
- wektor nazw zwierząt, które znajdują się na kostce nr 1,kostka2
- wektor nazw zwierząt, które znajdują się na kostce nr 2,ceny_w_krolikach
- nazwany wektor wyrażający wartość w królikach poszczególnych zwierząt. kable(t(StadoGracza)) kable(t(max_stado)) kable(t(kostka1)) kable(t(kostka2)) kable(t(ceny_w_krolikach))
Kolejność zwierząt i sposób nazewnictwa został ustalony przez grupę.
Funkcja gra
przeprowadza pojedynczą grę w SuperFarmera i zwraca czas gry.
Domyślnie argumenty kostka1, kostka2, oraz StadoGracza, które są zapisane w pakiecie jako zbiory danych, można zastąpić innymi tego samego typu.
gra(strategia=SuperFarmerPKEK::strategy2, kostka1 = SuperFarmerPKEK::kostka1,kostka2 = SuperFarmerPKEK::kostka2,StadoGracza = SuperFarmerPKEK::StadoGracza)
Przykład zastosowania:
gra(strategia = strategy3)
Funkcja badaj_gre
10 000 powtarza grę zadaną strategią i na tej podstawie wyznacza podstawowe statystyki dotyczące czasu gry.
Przykład zastosowania:
badaj1<-badaj_gre(strategy2)
#save(badaj1,file="badaj1.rda") load("C:/Users/Key/Documents/SuperFarmerPKEK/vignettes/badaj1.rda")
badaj1
Funkcja badaj_gre2
również powtarza grę 10 000, ale zwraca wektor czasów gry:
badaj2<-badaj_gre2(strategy1)
#save(badaj2,file="badaj2.rda") load("C:/Users/Key/Documents/SuperFarmerPKEK/vignettes/badaj2.rda")
head(badaj2,15)
Wynik tej funkcji jest obiektem, który daje możliwość dalszej pracy z tymi danymi. Możemy np. narysować wykres:
badaj3<-melt(badaj2) g <- ggplot(badaj3,aes(x=value))+ geom_histogram(aes(fill=..count..),col="black",breaks=seq(0,500,5))+ scale_fill_gradient("Count", low = "green", high = "red") g
W pakiecie są dostępne trzy strategie: strategy1
, strategy2
i strategy3
.
*strategy1
: najmniej skomplikowana strategia; zawsze gdy możemy, wymieniamy na większe zwierzę. Gdy wartość stada jest wystarczająca (przynajmniej 127 królików) wymianimy zwierzęta na brakujęce mniejsze, co kończy grę. Po testowaniu funkcją gra()
z pakietu SuperFarmerAGOJZB
dowiedzieliśmy się, że jest to strategia oszukańcza.
*strategy2
: najlepsza pod względem średniej liczby tur potrzebnych do zakończenia gry. Znów celem strategii jest jak najszybsze kupienie konia. Do tego momentu inwestujemy w króliki oraz małego psa.
*strategy3
: najbardziej skomplikowana strategia; podzielona jest na 8 części ze względu na wartość stada. Dobór tych przedziałów i stosowanych na nich podstrategii został wybrany na podstawie wyliczenia wartości oczekiwanej.
W pakiecie jest dostępna funkcja porownaj_strategie()
, która wywołana bez argumentów rysuje wykres skrzypcowy czasu gry dla tych trzech strategii przy powtórzeniu pojedynczej gry 10 000 razy.
wykres<-porownaj_strategie() #save(wykres, file="wykres.rda")
load("C:/Users/Key/Documents/SuperFarmerPKEK/vignettes/wykres.rda") wykres
load("C:/Users/Key/Documents/SuperFarmerPKEK/vignettes/a1.rda") load("C:/Users/Key/Documents/SuperFarmerPKEK/vignettes/a2.rda") load("C:/Users/Key/Documents/SuperFarmerPKEK/vignettes/a3.rda") podsumowanie <- data.frame(cbind(a1,a2,a3)) names(podsumowanie)<-paste(c("strategy1","strategy2","strategy3")) kable(podsumowanie)
Funkcja gra działa dobrze na strategiach z innych pakietów. Aby użyć funkcji gra z pakietu SuperFarmerPKEK
dla strategii z innego pakietu wystarczy użyć standardowego sformułowania:
SuperFarmerPKEK::gra(strategia=SuperFarmerInnyPakiet::strategia_zInnegoPakietu)
Analogicznie, żeby zastosować jedną z naszych strategii do funkcji gra z innego pakietu użyjemy komendy:
SuperFarmerInnyPakiet::gra(strategia=SuperFarmerPKEK::strategy2)
Jest możliwość zastosowania funkcji porownaj_strategie
dla strategii z innych pakietów na przykład:
wykres2=porownaj_strategie(strategy1 = SuperFarmer.SuperDziewczyn::strategia_wymian_0_0_0_0, strategy2= SuperFarmer.SuperDziewczyn::strategia_wymian_1_1_1_1, strategy3 = SuperFarmerRCNK::strategia_anty_yolo)
#save(wykres2,file="wykres2.rda") load("C:/Users/Key/Documents/SuperFarmerPKEK/vignettes/wykres2.rda")
wykres2
Domyślnie argumentami funkcji porownaj_strategie
, są odpowiednio SuperFarmerPKEK::strategy1
, SuperFarmerPKEK::strategy2
i SuperFarmerPKEK::strategy3
, dlatego jeżeli zostanie podanych mniej argumentów, w miejsce niepodanych wartości zostanie narysowany wykres odpowiedniej strategii z pakietu SuperFarmerPKEK
.
Działanie naszych funkcji z innymi pakietami ilustruje poniższa tabela:
| Pakiet |SuperFarmerInnyPakiet::gra(SuperFarmerPKEK::strategia) |SuperFarmerPKEK::gra(SuperFarmerInnyPakiet::strategia)| |:--------------------------:|:-----------------------------------------------------:|:----------------------------------------------------:| |SuperFarmer.SuperDziewczyn |+ |+ | |SuperFarmer.SuperPakiet |+ |+/-(1_na_wiele działa, wiele_na_wiele nie działa) | |SuperFarmerADiPR |+ |+ | |SuperFarmerAGOJZB |+ |+ | |SuperFarmerMoc |Funkcja gra nie jest eksportowana |+ | |SuperFarmerDA |Funkcja gra nie jest eksportowana |+ | |SuperFarmerRCNK |+ |+ |
Pakiety zostały ściągnięte z: link1,link2. (30-12-2016, 12:10)
Przykład wywołania: ```r library(SuperFarmerRCNK ) SuperFarmerRCNK::gra(SuperFarmerPKEK::strategy1) SuperFarmerRCNK::gra(SuperFarmerPKEK::strategy2) SuperFarmerRCNK::gra(SuperFarmerPKEK::strategy3) SuperFarmerPKEK::gra(SuperFarmerRCNK::strategia_anty_yolo) SuperFarmerPKEK::gra(SuperFarmerRCNK::strategia_yolo) SuperFarmerPKEK::gra(SuperFarmerRCNK::strategia_nk)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.