Oi pessoal.
Eis o problema: tenho 2 classes: Tela e Jogo. A classe Jogo vai cuidar de toda a lógica de um determinado problema, enquanto que a classe Tela vai cuidar (obviamente) dos dados gráficos e da entrada do teclado (por exemplo, detectar que a tecla “Up” foi apertada). O problema é que eu tenho que notificar a classe Jogo que a tecla para cima foi apertada. Porém, eu não tenho uma referência de Jogo em Tela, somente o contrário (é o correto?).
Deve ser possível de existir uma maneira de, quando a tecla para cima foi pressionada, avisar a classe Jogo. O que já tentei:
- Um método static, enviando a tecla que foi apertada. Não deu certo porque dentro do método static eu preciso chamar outros (movimentarCima(), baixo(), direita() e equerda() - que não são static); - (acho que parece um pouco com o pattern Observer)
O que posso tentar fazer:
- Uma outra classe, chamada Notificadora, que a Tela tem referência. Quando a tecla para cima for apertada, a Tela chama um método (paraCima()), que por sua vez chama o movimentarCima() de Jogo. Isso eu acho meio gambi…
- Implementei essa Notificadora, mas do pior jeito possível. Apesar de estar funcionando, quero mudar esse esquema, para que fique o mais coeso possível. Além do mais, ela é um Singelton (vergonha de falar isso)
O que vocês me aconselhariam?
Abraço.