Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Anderson Ferminiano

problema com include para determinada ação

Recommended Posts

ok, vamos lá, to fazendo um jogo.. e tenho uma dificuldade aqui em relação aos events criados por mim mesmo.

 

eu criei vários eventos para o personagem, onwalk, onattack, e toda vez q o personagem faz toda ação eles enviam parâmetros específicos com relação a ação.

 

tudo bem, eu posso tratar com o switch pra fazer uma ação pra cada tile no evento onwalk por exemplo, ou fazer uma ação pra cada monstro no evento onattack..

 

agora imagine um jogo com 20000 tiles, e 1000 monstros, o switch ficaria imenso e muito ruim de ler, pra resolver isso em C/C++/C# eu usaria a linguagem LUA pra tal ação, teria um arquivo LUA pra cada tile que seria lido, e interpretado pela respectiva linguagem. mas e no as3? como resolvo? crio um monte de *.txt pra ajudar? tem alguma forma melhor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendi bem pra que serviria o switch...

 

cada evento dispara uma função especifica certo?

e no parâmetro da função você identifica qual objeto disparou o evento...

 

de toda forma, creio que seria melhor ainda utilizando Observer, cada qual com sua função update.

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando o jogador se move, eu disparo

this._onMove(player, itemtile)

aí no evento onMove

function _onMove(player, itemtile)
{
  switch(itemtile.getId())
  {
    case 1000:
     // personagem pula
    break;
    case 1050:
     // personagem envia mensagem
    break;
    (...)
    default:
   // n faz nada
    break;
  }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendo...

 

não está usando o manipulador de eventos para isso?

como disse, creio que o melhor mesmo seria aplicar o padrão de projetos observer.

 

em todo caso, dependendo de como está tudo organizado aí, não dá para ter um atributo, no objeto itemtile, que guarde uma determinado método a ser executado durante esses eventos, assim como você define o ID?

 

sem ter uma visão geral é mais dificil...

Compartilhar este post


Link para o post
Compartilhar em outros sites

classe de exemplo

 

public class GameEvents {
		
		
		public static function callEvent(eventName:String, parameters:Array):Boolean
		{
			switch (eventName)
			{
				case "onwalk":
					return GameEvents.__onwalk(parameters['player'], parameters['tile']);				
				break;
				
			}			
			return false;
		}
		
		public static function __onwalk(player:Object, tile:Object):Boolean
		{
			switch(tile.getFileName())
			{
				case "flower.png":
					player.walkToDirection(1);
					trace("você pisou numa flor e foi direcionado para a posição acima");
				break;
				default:
					trace("você não pisou numa flor");
				break;
			}
			;
			return true;
		}
		
	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.