Para me ensinar programação básica de jogos, vou programar um clone de Pong. Usarei o padrão de design do Observer, com uma interface entre a entrada e o mecanismo do jogo. No entanto, não tenho certeza do que a interface deve fazer. Uma idéia que tive foi que a interface de entrada dissesse ao mecanismo do jogo que (por exemplo) a tela foi clicada e, em seguida, permitisse que o mecanismo de jogo decidisse o que fazer com essa informação (atire uma bala, por exemplo). Outra idéia que tive foi para a interface de entrada, depois de ter captado o clique do mouse, para dizer ao mecanismo do jogo para disparar uma bala.
Qual método seria melhor para eu usar?
input
architecture
Shivam Sarodia
fonte
fonte
Respostas:
O primeiro método é uma implementação do padrão observador, o segundo não. O objeto observado (sua interface de entrada) não precisa saber o que o objeto de observação (seu mecanismo de jogo) fará com a notificação, apenas que ele deseja ser notificado.
No entanto, não sei por que você decidiu usar o padrão de observador aqui. A menos que você tenha vários observadores, parece uma complicação que pode ser evitada. Se clicar sempre faz a mesma coisa, basta que a interface diga ao mecanismo do jogo para fazer uma única coisa. Manter as coisas o mais simples possível torna mais fácil para si mesmo. Isso não significa que nunca use padrões de design, mas geralmente você aborda a aplicação deles na direção oposta à que está fazendo. IE: comece com o problema e escolha o padrão de design para resolvê-lo, em vez de começar com o padrão de design e descobrir como resolver seu problema com ele.
fonte
Se você deseja manter o padrão Observador, deve ser a primeira ideia. O argumento mais forte que pude pensar é que a interface de entrada é um componente genérico que você provavelmente também desejará reutilizar em outros jogos. Portanto, faz sentido mantê-lo livre de qualquer informação específica do jogo, caso contrário você não poderá usá-lo em outro contexto. Em geral, pense cuidadosamente nas responsabilidades de suas turmas e tente mantê-las focadas e limitadas ao contexto da turma.
fonte