library("knitr")
library("SuperFarmerPKEK")
library("ggplot2")
library(reshape2)

Gra w SuperFarmera

Pakiet SuperFarmerPKEK symuluję grę w SuperFarmera w wersji jednoosobowej. Dokładne zasady gry są dostępne na stronie: klik

Dane dostępne w pakiecie

Do pakietu zostały przyłączone następujące zbiory danych:

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

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 i badaj_gre2

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

Strategie

Strategie dostępne w pakiecie

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)

Strategie pochodzące z innych pakietów

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 na innych pakietach

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)



PawKed/SuperFarmerPKEK documentation built on May 8, 2019, 1:27 a.m.