Movendo o Indio

Para mover o índio, adicionamos o método anda () na sua classe. No Kwarwp original, havia um método que executava o roteiros de comandos programado pelo usuário. Colocamos então um método executa () que vai conter estes comandos. Também no jogo original bastava clicar no céu para executar os comandos. Programamos então um enlace do evento clique com método executa. No caso, o ceu pertence à classe Kwarwp então criamos um método executa () na classe Kwarwp e chamamos o respectivo método do índio, self.o_indio.executa (). No momento o índio só apresenta o comportamento de andar. Este código é uma modificação do código descrito em Adicionando o Indio

Classe Indio

Com esta classe vamos separar o índio dos outros elementos da tela. Com isso poderemos colocar funcionalidades nela que os outros não tem. No momento o índio tem o método kwarwp.kwarapp.Indio.anda() que movimenta o personagem na direção que está olhando. O método kwarwp.kwarapp.Indio.executa() contém o conjunto de comandos que dever ser executados para resolver o desafio.

Cria o personagem principal na arena do Kwarwp na posição definida.

param imagem:A figura representando o índio na posição indicada.
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.
class Indio():

   def __init__(self, imagem, x, y, cena):
      self.lado = lado = Kwarwp.LADO
      self.indio = Kwarwp.VITOLLINO.a(imagem, w=lado, h=lado, x=x, y=y, cena=cena)

Método Anda

Este método define um comportamento que faz o personagem andar na direção para onde está olhando.

def anda(self):
   """ Faz o índio caminhar na direção em que está olhando.
   """
   self.posicao = (self.posicao[0], self.posicao[1]-1)
   """Assumimos que o índio está olhando para cima, decrementamos a posição **y**"""
   self.indio.y = self.posicao[1]*self.lado
   self.indio.x = self.posicao[0]*self.lado

Método Executa

Este método define um roteiro do comportamento que o personagem vai executar.

def executa(self):
   """ Roteiro do índio. Conjunto de comandos para ele executar.
   """
   self.anda()

Kwarwp - Enlace do Céu

A classe Kwarwp vai ter um enlace que liga o clique no céu com o chamado do roteiro de execuções do indio.

Jogo para ensino de programação.

param vitollino:
 Empacota o engenho de jogo Vitollino.
param mapa:Um texto representando o mapa do desafio.
param medidas:Um dicionário usado para redimensionar a tela.
class Kwarwp():
   VITOLLINO = None
   ...
   self.o_indio = None
   """Instância do personagem principal, o índio, vai ser atribuído pela fábrica do índio"""
   ...

Veja o código completo no tutorial Método Cria

Enlace no Método Cria

Este método define uma fábrica de componentes.

param mapa:Um texto representando o mapa do desafio.
def cria(self, mapa=""):
...
ceu = self.v.a(fabrica["~"].imagem, w=lado*self.col, h=lado, x=0, y=0, cena=cena, vai= self.executa)
"""No argumento *vai*, associamos o clique no céu com o método **executa ()** desta classe"""
...

Delegando a Execução

Este método recebe o evento .

param _:este argumento recebe a estrutura oriunda do evento, o _ indica que não será usado.
def executa(self, *_):
   """ Ordena a execução do roteiro do índio.
   """
   self.o_indio.executa()

Atribuindo o Indio na Fábrica

Este método define uma fábrica criando o índio o personagem principal.

param imagem:imagem que representa o elemento que será posicionado.
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 o personagem principal na arena do Kwarwp na posição definida. Em vez de criar diretamente um elemento do Vitollino, cria uma classe para lidar com o componente e seu comportamento distinto. O atributo da instância o_indio passa a ser uma referência para uma instância da classe kwarwp.kwarapp.Indio

def indio(self, imagem, x, y, cena):
   self.o_indio = Indio(imagem, x=x, y=y, cena=cena)
   return self.o_indio