| Logado como Visitante | Grupo "Visitantes" Está vendo: Forum | Sábado, 21/12/2024, 7:33 AM | RSS |
Anime Mugen


[ Novas Mensagens · Membros · Regras · Buscar · RSS ]
  • Página 1 de 1
  • 1
Moderador do fórum: lMDl  
[Dica] Expressões
ThunderbertData: Sexta, 18/03/2011, 9:08 AM | Mensagem # 1
Criador Iniciante
Grupo: Usuários
Mensagens: 343
Awards: 0
Reputação: 19
Status: Offline
Yo pessoal!
Vim aqui hj falar sobre as expressões no MUGEN q muita gente desconhece!
Vou começar falando sobre números inteiros e decimais!
Primeiramente, todos aqui devem saber o que é um número inteiro e um número decimal, mas muita gente não sabe, para o MUGEN, o número 5 é diferente do número 5.0 por exemplo, pois 5 é um número inteiro e 5.0 é um número decimal. O MUGEN dá suporte para números decimais de até 7 casas decimais, por exemplo: 6.2748164
Segundo, eu estarei falando de valor 1 e 0 aqui, então vou explicar como os Triggers funcionam. Se o valor do Trigger for 1, então o Trigger vai ativar, se for 0, então ele não vai ativar! Por isso, quando colocamos Trigger1 = 1 o trigger será sempre ativado, pois sempre vai valer 1, mas se colocarmos Trigger1 = Time = 10, o Trigger irá valer 1 somente quando o Time for 10.
Dado essa breve introdução, vamos falar das expressões em sí:

Ordem do cálculo das expressões:
Assim como na matemática existem ordem para os cálculos, no MUGEN também tem!
Caso dois operadores possuam a mesma ordem de cálculo, a fórmula é analisada da esquerda para a direita.
Caso você queira alterar a ordem de cálculo, será necessário o uso dos parênteses.
A ordem é a seguinte:
1º !
2º **
3º * / %
4º + -
5º > >= < <=
6º = != intervalos
7º :=
8º &&
9º ^^
10º ||

Um exemplo do uso dos parênteses seria o seguinte:
2+3*5 resultaria em 17, pois a multiplicação vem primeiro e depois vem a soma
(2+3)*5 resultaria em 25, pois o parênteses alterou a ordem para que a soma viesse primeiro.

Sintáxe das expressões
Basicamente, qualquer operador pode ser utilizado em uma expressão.
Um exemplo seria a seguinte expressão:
1.0 = (2 = (1 > 0) + !(1 < 0))
O termo 1>0 irá retornar o valor 1, o termo 1<0 retornaria o valor 0, mas como existe a negação transformando o termo !(1<0), o valor será 1, então a expressão se resume em
1.0 = (2 = 1 + 1)
Veja que 2 = 1 + 1, então essa parte irá retornar o valor 1, e também, como o número da esquerda é decimal, o número da direita será convertido para decimal, ficando:
1.0 = 1.0

Note que os únicos operadores que podem operar sobre intervalo são "=" e "!=", assim, a expressão 5 > [0,2] ou 4 + [1,4) não é permitido.

Enfim, essas expressões podem vir a ser muito útil!
Eu mesmo não sabia o que significava o %

Um exemplo da utilização do % que eu uso com certa frequência é para fazer randomização simplificada...

Por exemplo:

Code
[State 200, End]
Type = ChangeState
Trigger1 = AnimTime = 0
Value = 201+(Random%5)
Ctrl = 0

Note a expressão 201+(Random%5)
Para explicá-la, os restos da divisão de um número por 5 podem ser 0, 1, 2, 3 ou 4, o Random varia de 0 a 999
Então dependendo valor que Random assumir, ele irá ser dividido por 5 e o resto dessa divisão será somado ao 201
Assim, o Value irá variar entre 201 e 205

Enfim, espero que essas informações possam ser úteis para vocês o/




Vlw MD ²
Vlw Baka-Sennin
Vlw FM ²
 
SonSon3000Data: Sexta, 18/03/2011, 12:25 PM | Mensagem # 2
Aprendiz Destaque
Grupo: Mugen News
Mensagens: 100
Awards: 0
Reputação: 4
Status: Offline
cara, ótimas dicas!!! o/
muitos iniciantes até sabem fazer calculos básicos com adição,subtração, multiplicação e divisão, mas o resto é muito importante para os iniciantes saberem, pq eles poderam usar isso frequentemente num char um pouco mais avançado.

enfim, ficou ótimo e bem explicativo esse tópico!!! :)
abraço!


Visitem o meu cantinho do mugen: SonSon3000 - NEWS

*Projetos, Lançamentos, Tutoriais, News e outros*
 
david11Data: Sexta, 18/03/2011, 1:12 PM | Mensagem # 3
Criador Iniciante
Grupo: Moderadores
Mensagens: 301
Awards: 0
Reputação: 27
Status: Offline
puts mano, muito show tudo isso =D
só nao conhecia a "atribuiçao" ali, acho q se tu me explico, no msn, nao prestei atençao, ou seila.
muito bom msms manolo, bem, explicado e tals xD

flws


davidluanrizi@hotmail.com <-- Se add por favor se identificar o/
 
Naruto_MDData: Sexta, 18/03/2011, 2:05 PM | Mensagem # 4
Criador Iniciante
Grupo: Usuários
Mensagens: 391
Awards: 3
Reputação: 26
Status: Offline
pow muito bom cara, eu só sabia sobre os basicos ^^ brigadão man
só uma pergunta se colocasse 1.0 = 1.0 como vc mesmo disse que aquilo tudo seria isso ai... então se por acaso eu colocasse esse valor em algum lugar no meu personagem pra fazer certa condição e tals, ele funciona ou tem que fazer esse calculo todo pra funcionar?

só isso a minha duvida .-.

flws thunder e valeu ai cara vou te dar creditos pro resto dos meus chars kkk

uhullll


Satanás está obtendo êxito por meio da televisão de uma forma impossível através de qualquer outro tipo de invasão demoníaca.
Por meio desse ídolo que fala, ele pode realizar nesta geração o que realizou no jardim do Éden. Mas os sodomitas estão aqui agora - em nossos lares. E somos agora os cegos.
Escritores, atores homossexuais apregoam seu direito maligno bem diante de nossos olhos, e quer você admita ou não, você e todos os outros em sua casa estão debaixo de um ataque sodomita demoníaco. (David Wilkerson)
 
Dark_KingData: Sexta, 18/03/2011, 2:55 PM | Mensagem # 5
Criador
Grupo: Usuários
Mensagens: 622
Awards: 1
Reputação: 11
Status: Offline
Muito BOM, mas num entendi algumas coisas, fora isso, isso é funfa em qualquer mugen?!!!!!!



W.I.P's
(DRAGON BALL) Baby Vegeta Pocket - 60% / Uub SB - 10%
(YUYU HAKUSHO) Yusuke - 95%
 
ThunderbertData: Sexta, 18/03/2011, 7:36 PM | Mensagem # 6
Criador Iniciante
Grupo: Usuários
Mensagens: 343
Awards: 0
Reputação: 19
Status: Offline
Quote (david11)
puts mano, muito show tudo isso =D
só nao conhecia a "atribuiçao" ali, acho q se tu me explico, no msn, nao prestei atençao, ou seila.
muito bom msms manolo, bem, explicado e tals xD

flws


vlw manolo!
e sim, eu expliquei via msn pra vc xD

Quote (SonSon3000)
cara, ótimas dicas!!! o/
muitos iniciantes até sabem fazer calculos básicos com adição,subtração, multiplicação e divisão, mas o resto é muito importante para os iniciantes saberem, pq eles poderam usar isso frequentemente num char um pouco mais avançado.

enfim, ficou ótimo e bem explicativo esse tópico!!! :)
abraço!


vlw ae ^^

Quote (Naruto_MD)
pow muito bom cara, eu só sabia sobre os basicos ^^ brigadão man
só uma pergunta se colocasse 1.0 = 1.0 como vc mesmo disse que aquilo tudo seria isso ai... então se por acaso eu colocasse esse valor em algum lugar no meu personagem pra fazer certa condição e tals, ele funciona ou tem que fazer esse calculo todo pra funcionar?

só isso a minha duvida .-.

flws thunder e valeu ai cara vou te dar creditos pro resto dos meus chars kkk

uhullll


Vlw ae MD *_*
Tipo, usar esse exato code 1.0 = (2 = (1 > 0) + !(1 < 0)) ou 1.0 = 1.0 é a mesma coisa, mas a razão dessas expressões é pra você poder calcular usando triggers ^^
E nem precisa créditos manolo, nem é code pronto e talz, foi só um resumo das expressões q tem nos docs do MUGEN xD

Quote (Bruno_SS)
Muito BOM, mas num entendi algumas coisas, fora isso, isso é funfa em qualquer mugen?!!!!!!

Vlw manolo!
O q vc naum entendeu, pergunta ae q eu explico ^^




Vlw MD ²
Vlw Baka-Sennin
Vlw FM ²
 
Dark_KingData: Sexta, 18/03/2011, 7:55 PM | Mensagem # 7
Criador
Grupo: Usuários
Mensagens: 622
Awards: 1
Reputação: 11
Status: Offline
esse negocio ae de entervalos



W.I.P's
(DRAGON BALL) Baby Vegeta Pocket - 60% / Uub SB - 10%
(YUYU HAKUSHO) Yusuke - 95%
 
ThunderbertData: Sexta, 18/03/2011, 9:08 PM | Mensagem # 8
Criador Iniciante
Grupo: Usuários
Mensagens: 343
Awards: 0
Reputação: 19
Status: Offline
Os intervalos são o seguinte...

Suponhamos q eu quero um golpe q queira dar vários hits em momentos diferentes, ao invés de colocar vários triggers, eu poderia usar
Trigger1 = Time = [25,50] || Time = [75,100]
Nesse caso, ele ativaria o golpe entre os tempos 25 e 50 e também entre 75 e 100
Ou eu posso usar ainda
Trigger1 = (Random%5 = 0) && (Time = (74,101))
Nesse caso, ele teria uma probabilidade de 20% de chance de acontecer enquanto estiver entre os tempo 75 e 100, pq 74 e 101 não estão incluído no intervalo.
Com números inteiros, usar o intervalo com parênteses pode ser algo meio inútil, mas com números reais, veja que 74.1 estaria incluido, mas 74 naum, assim como 100,9999999 estaria incluido, mas 101 não...
Espero que tenha entendido

Edit:
Um outro exemplo seria fazer uma chance q aumenta de acordo com o tempo, por exemplo:
Trigger1 = (Random/10) <= (Time = [35,100])

No caso, Random varia de 0 a 999, dividindo ele por 10, ele varia entre 0 e 99
Então, no caso, a chance de acontecer o golpe é de 35% no Time = 35 e chega a 100% de chance no Time = 100

Enfim, conhecendo as expressões, as opções de programação aumentam muito ^^




Vlw MD ²
Vlw Baka-Sennin
Vlw FM ²
 
carlos8080Data: Sexta, 18/03/2011, 10:37 PM | Mensagem # 9
Criador
Grupo: Usuários
Mensagens: 480
Awards: 0
Reputação: 11
Status: Offline
bem explicado man
tem algumas coisas que eu n sabia ai ^^
algumas coisas sao meio complexas, mais eh so pega o jeito
vlw por posta \o



------------------------------------Projetos---------------------------------------

C_Itachi - 30%

Hidan Sheet - 5%
 
Phonix2000Data: Sábado, 19/03/2011, 9:12 AM | Mensagem # 10
Criador Iniciante
Grupo: Usuários
Mensagens: 323
Awards: 2
Reputação: 12
Status: Offline
\o/
legal mesmo já sabendo é bom da uma lida, eu aprendi coisas novas \o

| é a mesma coisa que || né?



 
ThunderbertData: Sábado, 19/03/2011, 10:46 AM | Mensagem # 11
Criador Iniciante
Grupo: Usuários
Mensagens: 343
Awards: 0
Reputação: 19
Status: Offline
Quote (Phonix2000)
\o/
legal mesmo já sabendo é bom da uma lida, eu aprendi coisas novas \o

| é a mesma coisa que || né?


Vlw *_*

Tipo, | não é a mesma coisa que ||
Pois o | analisa os valores binários ao invés de analisar a expressão em sí...

Assim como ~ seria o !, o & seria o && e ^ seria ^^
Eles possuem o mesmo significado, mas eles analisam os valores binários das expressões, cujo qual eu acredito que não é muito útil...
Sem contar que esses sinais de valores binários transformam todos os valores da expressão em decimais, o q as vezes pode ser ruim...
E também, essas expressões possuem ordem de cálculo diferente...
1º ! ~
2º **
3º * / %
4º + -
5º > >= < <=
6º = != intervalos
7º :=
8º &
9º ^
10º |
11º &&
12º ^^
13º ||

Enfim, espero q essas informações tb sejam úteis ^^

Edit:
Para mais informações sobre essa parte de operadores que analisam a parte binária, tem no Wikipédia
Bitwise (em inglês)




Vlw MD ²
Vlw Baka-Sennin
Vlw FM ²
 
Phonix2000Data: Sábado, 19/03/2011, 3:24 PM | Mensagem # 12
Criador Iniciante
Grupo: Usuários
Mensagens: 323
Awards: 2
Reputação: 12
Status: Offline
Thunderbert, bom, sempre usei o | ao invés de ||
nunca me deu dor de cabeça, pois para mim a função final em si da na mesma.

kra essa informações até parecem inúteis para alguns, mais uma expressão errada já da
aquele maldito erro de incompatibilidade no mugen.

vlw pelas informações \o



 
Naruto_MDData: Sábado, 19/03/2011, 8:21 PM | Mensagem # 13
Criador Iniciante
Grupo: Usuários
Mensagens: 391
Awards: 3
Reputação: 26
Status: Offline
Quote (Thunderbert)
Enfim, espero q essas informações tb sejam úteis ^^

concerteza, meu guile ta ficando locão agora =D to usando esse artificio ai pra complicar a codificação -q

valu de novo thunder e brigado por exlpicar minha duvida la flws cara e parabens ^^


Satanás está obtendo êxito por meio da televisão de uma forma impossível através de qualquer outro tipo de invasão demoníaca.
Por meio desse ídolo que fala, ele pode realizar nesta geração o que realizou no jardim do Éden. Mas os sodomitas estão aqui agora - em nossos lares. E somos agora os cegos.
Escritores, atores homossexuais apregoam seu direito maligno bem diante de nossos olhos, e quer você admita ou não, você e todos os outros em sua casa estão debaixo de um ataque sodomita demoníaco. (David Wilkerson)
 
OIlusionistaData: Domingo, 24/04/2011, 1:21 PM | Mensagem # 14
Editor
Grupo: Usuários
Mensagens: 180
Awards: 0
Reputação: 7
Status: Offline
Quote
sempre usei o | ao invés de ||
nunca me deu dor de cabeça, pois para mim a função final em si da na mesma.

Quando eu li isso, eu sabia que estava errado, mas como eu nao domino essa parte, fui perguntar pra quem sabe.

Palavras do VirtuallTek:

Operadores bitwise (casamento de bit com bit)

| = ou
ex.: 01000110 | 11001010 = 11001110
ou seja, quando um dos bits for 1, o retorno é 1, se os dois forem zero o retorno é 0

& = e
ex.: 01000110 & 11001010 = 01000010
ou seja, quando os dois bits forem 1, o retorno é 1, se um dos dois for zero o retorno é 0

^ = ou exclusivo
ex.: 01000110 | 11001010 = 10001100
ou seja, quando os bits forem diferentes, o retorno é 1, se forem iguais o retorno é 0

~ = negação
ex.: ~ 01000110 = 10111001
ou seja, se o bit for 0 returna 1, se for 1 retorna 0

Operadores lógicos (famoso verdadeiro e falso)

valor > 0 = verdadeiro
valor é 0 = falso

|| = ou
ex.: 20 || 0 = 1 (verdadeiro)

&& = e
ex.: 20 && 0 = 0 (falso)

Diferença

0 & 55 = 0
0 && 55 = 0

12 & 55 = 4
12 && 55 = 1

55 | 0 = 55
55 || 0 = 1

Se for usado em uma operação lógica, o resultado é o mesmo porque valor > 0 = verdadeiro
Se for usado em um cálculo aritmético o resultado é diferente

Agora, a dica: nas situações que sabe-se que será retornado o mesmo valor, é preferível usar bitwise, por ser executado mais rápido
EDIT: Dependendo do número de expressões. ex.: (var1 == 0) || (var2 == 55) || (var3 < 30)
Se a var1 é 0, o restante não precisa ser executado.
Ai outra otimização é sempre colocar a situação mais provável primeiro.


Beeing here since 1999
 
  • Página 1 de 1
  • 1
Buscar:

Copyright Anime Mugen © 2024 Hospedado por uCoz
Refresh Smileys Manager
Mini-chat