class Test(unittest.TestCase): def setUp(self): self.input = Input() def test_pyyda_maara(self): """ Testaa pyyda maara metodia. Enteria painamalla pitaisi nousta ValueError """ self.assertRaises(ValueError, lambda: self.input.pyyda_maara("paina enter",False)) def test_laatikko(self): """ Ajaa laatikko() metodin koodin. Ei siis testaa mitaan. """ ruutu = pygame.display.set_mode((500,500)) self.input.laatikko(ruutu,"paina enter",False) def test_pyyda_merkki(self): """ Ajaa pyyda_merkki() metodin koodin. Ei siis testaa mitaan. """ self.input.pyyda_merkki() def test_kysy_kysymys(self): """ Ajaa kysy_kysymys() metodin koodin. """ ruutu = pygame.display.set_mode((500,500)) self.input.kysy_kysymys(ruutu, "fdsa",False)
class Simulaatio(object): def __init__(self): self.input = Input() self.kaytosmalli = Kaytosmalli() self.kartta = Kartta() def aloita_simulointi(self): """ Kysyy kayttajalta yksilo- ja seinamaarat. Alustaa kartan ja simuloi kunnes Kartta.paivita_kartta() palauttaa arvon False """ yksilomaara = self.kysy_yksilomaara() estemaara = self.kysy_estemaara() self.luo_yksilot(yksilomaara) self.kartta.alusta_kartta(estemaara) self.kaytosmalli.alusta_seinien_paikkavektorit(self.kartta) clock = pygame.time.Clock() while (self.kartta.paivita_kartta(self.kaytosmalli.yksilo_lista)): self.kaytosmalli.laske_voimat() self.kaytosmalli.paivita_paikat() if (len(self.kaytosmalli.yksilo_lista)==0): self.luo_yksilot(yksilomaara) clock.tick(Input.FPS) def kysy_yksilomaara(self): """ Kysyy ja palauttaa kayttajalta yksilomaaran ja virheellisen syotteen jalkeen kysyy uudestaan virheilmoituksen kanssa """ virheilmoitus = False while (True): try: yksilomaara = self.input.pyyda_maara("Anna yksilomaara (1 - 100)",virheilmoitus) if (yksilomaara<1 or yksilomaara>100): raise ValueError else: break except ValueError: virheilmoitus = True return yksilomaara def kysy_estemaara(self): """ Kysyy ja palauttaa kayttajalta valiseinamaaran ja virheellisen syotteen jalkeen kysyy uudestaan virheilmoituksen kanssa """ virheilmoitus = False while (True): try: estemaara = self.input.pyyda_maara("Anna esteiden maara (0 - 3)",virheilmoitus) if (estemaara<0 or estemaara>3): raise ValueError else: break except ValueError: virheilmoitus = True return estemaara def luo_yksilot(self,yksilomaara): """ Luo parametrin yksilomaaran verran Yksiloita ja arpoo niille aloituspaikat ulkoseinien sisapuolelta """ for i in range(0,yksilomaara): paikka_x = random.randint(10,Input.RUUDUN_LEVEYS-10) paikka_y = random.randint(45,Input.RUUDUN_KORKEUS-10) yksilo = Yksilo(paikka_x,paikka_y) self.kaytosmalli.lisaa_yksilo(yksilo)