A que linguagem voce faz referencia nesse caso? Parece C++ mas nao tenho certeza....
Mesmo assim muito bom... tem gente que ainda não mexe com matrizes e tabelas...
Por noobinhu, 16 de abr. de 2010 em Outras Linguagens
info
Grupo: Campones
Registrado: 21/03/10
Posts: 78
Reputação: +17
Char no Tibia: Dragonlordez

A que linguagem voce faz referencia nesse caso? Parece C++ mas nao tenho certeza....
Mesmo assim muito bom... tem gente que ainda não mexe com matrizes e tabelas...
info
Grupo: Marquês
Registrado: 01/03/06
Posts: 1k
Reputação: +38
Gênero: Masculino

A lógica não fiz em nenhuma linguagem, fiz o mais parecido com uma sintaxe estruturada em português mesmo.
O exemplo é em AS 3.0
info
Grupo: Administrador
Registrado: 08/07/05
Posts: 5.8k
Reputação: +1.4k
Gênero: Outro

Anderson,
Muito bom rapaz ... que tal mostrar para a galera um pouco sobre o AS3.0, o que eles podem fazer com o flash ... que tal ensiná-lo um pouco do Tibia Flash Client? Era uma coisa que eu adoraria aprender =p Pense nisso xD
Abraços
info
Grupo: Marquês
Registrado: 01/03/06
Posts: 1k
Reputação: +38
Gênero: Masculino
Falaaaaa galera, trouxe um artigo hoje sobre colisão bidimensional, isto é, colisão em um ambiente 2D orientado por 2 coordenadas: x e y. É um assunto bem simples, mas que muita gente comete erros de lógica, o que faz muitos jogos ficarem extremamente lentos.
Este artigo vai falar sobre a LÓGICA de colisão e não sobre como aplicar ela em um projeto efetivamente, não colocarei aqui códigos prontos, apenas uma fórmula e explicações. Apesar de não termos códigos, temos um exemplo com código fonte aberto pra quem quiser olhar na prática como é feito.
O exemplo mostra também na prática o que é x, o que é y, e como nossa fórmula retorna o índice do vetor que representa nosso mapa. No exemplo você pode movimentar o quadrado preto sobre o mapa e verificar suas respectivas propriedades em tempo de execução.
Exemplo em Actionscript 3.0: http://www.andersonferminiano.com/games/colisao_bidimensional/
Download das sources no fim do artigo.
Então, começamos apresentando como é formado o mapa. Um mapa 2D é formado por 2 coordenadas, onde um representa o x e outro representa y, ou seja, um representa as colunas e o outro as linhas respectivamente. Ele é representado matematicamente por uma matriz, como a seguir:
Temos acima um mapa com 4 tiles, sendo suas dimensões 2x2 (x vs y SEMPRE). Para entendermos melhor, vamos fazer um mapa:
Certo, agora temos um mapa 7x6, onde 1 representa algum objeto para colisão (uma pedra por exemplo) e 0 representa o chão, onde podemos andar normalmente.
Neste exemplo, X máximo = 7.
Obs: o que cada número vai representar no jogo depende diretamente do projeto e do desenvolvedor, não há uma regra para isto.
Vamos passar essa matriz pra programação!
Matriz = {0,0,0,1,0,0,0,0,0,1,1,1,0,0,1,1,0,1,0,1,1,1,1,0,1,0,1,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0}Pra quem não entendeu, eu simplesmente juntei todas linhas e colunas com vírgulas, agora no vetor não temos mais nenhuma divisão visível sobre o que é linha, ou o que é coluna, isto será feito à partir de variáveis.
Para montarmos um mapa, devemos saber o X máximo, assim sempre que chegarmos ao X máximo em um loop sobre o vetor, acrescentamos uma unidade no Y e resetamos o X para 1, até finalizar o mapa. Se quiser saber mais sobre a etapa da criação do mapa sobre X e Y, olhe o exemplo e verá na prática esta parte.
“Beleza, mas se não temos mais divisões, como vamos achar nesse vetor aí a posição de um personagem?!”
Também à partir do X máximo e uma fórmula que criei, conseguimos descobrir em que índice do vetor, a posição que procuramos se encontra.
Fórmula:
Na fórmula primeiro subtrai 1 tanto do y, quanto do X para corrigir as diferenças, porque um vetor geralmente começa do índice 0 (depende da linguagem esta parte), mas X e Y sempre são >= 1, depois disso multipliquei o Y pelo máximo X e obtive a quantidade de linhas que já passei e somei as colunas (X).
Feito isso, agora você já pode criar alguns joguinhos com uma pouca criatividade, como o clássico Bomberman.
Download do exemplo:
http://www.andersonferminiano.com/games/colisao_bidimensional/sources.zip
Espero que tenham aproveitado!