def maloc(self, imagem, x, y, cena): """ Cria uma maloca na arena do Kwarwp na posição definida. :param x: coluna em que o elemento será posicionado. :param y: linha em que o elemento será posicionado. :param cena: cena em que o elemento será posicionado. Cria uma vaga vazia e coloca o componente dentro dela. """ coisa = Oca(imagem, x=0, y=0, cena=cena, taba=self) vaga = Vazio("", x=x, y=y, cena=cena, ocupante=coisa) return vaga
def atora(self, imagem, x, y, cena): """ Cria uma tora na arena do Kwarwp na posição definida. :param x: coluna em que o elemento será posicionado. :param y: linha em que o elemento será posicionado. :param cena: cena em que o elemento será posicionado. Cria uma vaga vazia e coloca o componente dentro dela. """ coisa = Tora(imagem, x=0, y=0, cena=cena, taba=self) vaga = Vazio("", x=x, y=y, cena=cena, ocupante=coisa, taba=self) coisa.vazio.vai = lambda *_: self.o_indio.larga() return vaga
def indio(self, imagem, x, y, cena): """ Cria o personagem principal na arena do Kwarwp na posição definida. :param x: coluna em que o elemento será posicionado. :param y: linha em que o elemento será posicionado. :param cena: cena em que o elemento será posicionado. """ self.o_indio = Indio(imagem, x=1, y=0, cena=cena, taba=self) """ O índio tem deslocamento zero, pois é relativo à vaga. O **x=1** serve para distinguir o indio de outros derivados. """ self.o_indio.indio.vai = lambda *_: self.o_indio.pega() """o índio.vai é associado ao seu próprio metodo pega""" vaga = Vazio("", x=x, y=y, cena=cena, taba=self, ocupante=self.o_indio) return vaga
def testa_chega_taba_indio(self): """ Chega no seu destino, tenta mover o índio, mas fica preso.""" ftaba = self.t cena = self.k.cria() l = self.LADO indio = self.k.o_indio oca = Oca("", x=0, y=0, cena=cena, taba=ftaba) vaga = Vazio("", x=3*l, y=2*l, cena=cena, ocupante=oca) vazio = self.k.taba[(3,1)] = vaga self.assertIsInstance(vazio.ocupante, Oca, f"but vaga was {type(vazio.ocupante)}") pos = oca.posicao self.assertEquals((3, 1), pos, f"but oca pos was {pos}") indio.anda() indio.anda() self.assertIsInstance(indio.vaga, Oca, f"but vaga was {type(indio.vaga)}") self.assertEquals(oca, indio.vaga, f"but vaga was {indio.vaga}") self.assertIn("chegou", ftaba.falou, f"but fala was {ftaba.falou}") indio.anda() pos = indio.posicao self.assertEquals((3, 1), pos, f"but last pos was {pos}")
def testa_prende_indio(self): """ Tenta mover o índio, mas fica preso.""" ftaba = self.t cena = self.k.cria() l = self.LADO indio = self.k.o_indio piche = Piche("", x=0, y=0, cena=cena, taba=ftaba) vaga = Vazio("", x=3*l, y=2*l, cena=cena, ocupante=piche) vazio = self.k.taba[(3,1)] = vaga self.assertIsInstance(vazio.ocupante, Piche, f"but vaga was {type(vazio.ocupante)}") pos = piche.posicao self.assertEquals((3, 1), pos, f"but piche pos was {pos}") indio.anda() indio.anda() self.assertIsInstance(indio.vaga, Piche, f"but vaga was {type(indio.vaga)}") self.assertEquals(piche, indio.vaga, f"but vaga was {indio.vaga}") indio.anda() pos = indio.posicao self.assertEquals((3, 1), pos, f"but last pos was {pos}") self.assertIn("preso", ftaba.falou, f"but fala was {ftaba.falou}")
def testa_larga_tora(self): """ Vai até a tora pega e larga.""" cena = self.k.cria() self.k.o_indio.larga() l = self.LADO indio, tora = self._pega_tora() indio.larga() pos = tora.posicao self.assertEquals((1, 3), pos, f"but tora pos was {pos}") coisa = Tora("", x=0, y=0, cena=cena, taba=self.k) vaga = Vazio("", x=0*l, y=3*l, cena=cena, ocupante=coisa) vazio = self.k.taba[(0,3)] = vaga indio.pega() pos = tora.posicao self.assertEquals((2, 3), pos, f"but tora pos was {pos}") indio.anda() pos = indio.posicao self.assertEquals((1, 3), pos, f"but indio andou pos was {pos}") pos = tora.posicao self.assertEquals((1, 3), pos, f"but tora andou pos was {pos}") indio.anda() indio.larga() pos = tora.posicao self.assertEquals((1, 3), pos, f"but tora not drop pos was {pos}")
def vazio(self, imagem, x,y ,cena): vaga = Vazio(imagem, x=x, y=y, cena=cena, ocupante=self) return vaga
def indio(self, imagem,x,y,cena): #self.o_indio = Indio(imagem, x=x, y=y, cena=cena) #era para estar funcionando este imagem mesmo? self.o_indio = Indio(imagem, x=1, y=2, cena=cena, taba=self)#estou precisando de um deslocamento mínimo. pq? """indio tem deslocamento zro pois é relativo à vaga""" vaga = Vazio("", x=x, y=y, cena=cena, ocupante = self.o_indio) return vaga