R-ohjelmointi.org

Tilastotieteellistä ohjelmointia R-kielellä

Simppeli ”tankkipeli”

R-bloggers -aggregaattorissa oli postaus parabolisen ballistisen yhtälön ratkaisemisesta R:llä. Se muistutti mieleeni nostalgiset hetket tietokonepelien Gorillas ja Scorched Earth parissa. Pakkohan se oli kokeilla, miten vaikeaa tuollaisen pelin tekeminen R:llä olisi!

Pelin koodi on Githubissa, ja tarvittavat funktiot voidaan noutaa suoraan sieltä:

library(RCurl)
script <- getURL("https://raw.githubusercontent.com/jtuimala/Rtanks/master/Rtanks3.R", ssl.verifypeer = FALSE)
eval(parse(text = script))

Tämän jälkeen peli voidaan alustaa ja aloittaa seuraavasti:

game<-initialize_game()

Peli voidaan aloittaa myös käyttämällä käyttäjän valitsemaa satunnaislukua:

game<-initialize_game(seed=123)

Alustettu ja alkuvalmiina oleva pelialue näyttää melko karulta:

tanks1

Tämän jälkeen pelaajat voivat ampua toisiaan. Esimerkiksi sininen pelaaja voi ampua ensimmäisen laukauksen vaikkapa seuraavasti:

shoot(game, "blue", 115, 35)

Punainen vastaa tuleen, minkä jälkeen pelaajat vuorottelevat, kunnes jompikumpi saa osuman:

shoot(game, "red", 215, 35)
shoot(game, "blue", 285, 35)
shoot(game, "red", 270, 35)

Osuman jälkeen peli julistaa voittajan:

tanks2

Kuten olen aiemminkin kirjoittanut, on tällaisten yksinkertaisten pelien ohjelmoiminen R:llä mahdollisuuksien rajoissa. Yhden illan (oikeastaan vähän alle tunnin) projektiksi tämä on kuitenkin melko onnistunut. Testiryhmäkin jaksoi kiinnostua pelistä jopa kahden pelin ajan, mitä voidaan pitää jo selkeänä voittona. Testiryhmä tosin huomautti, että ruudulla olevat kuviot eivät muistuta lainkaan tankkia, ja että kannattaisi ottaa mallia vaikkapa Rovion ja Supercellin peleistä. Pitääpä tutustua viimeksi mainittuihin, kun eivät olekaan ollenkaan tuttuja…

Tags:


Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *