Redução de código - sintaxe

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Redução de código - sintaxe

Mensagem por DanMK em Sex 06 Set 2013, 22:37

Olá, procurei pela internet inteira alguma coisa que me ajudasse, mas parece que ninguém usa isso D=
Assim, eu tinha um código parecido com isso:

Código:
if(x == 1 or x == 2 or x == 3 or x == 4)
Mas isso fica muito extenso, sei que tem um jeito mais fácil, em C é assim (ou pelo menos eu acho que é assim):

Código:
if(x == {1 or 2 or 3 or 4})
Mas em GML, não faço a mínima ideia de como é, ou se existe isso, porque eu simplesmente NÃO SEI COMO PROCURAR por isso, é uma sensação muito ruim, me ajudem por favor D=

DanMK

Ranking : Nota B
Número de Mensagens : 8
Data de inscrição : 05/09/2013
Notas recebidas : B
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Redução de código - sintaxe

Mensagem por PedroX em Sex 06 Set 2013, 22:52

Não tem como diminuir isso.

A única coisa que me veio à mente é usar uma string, mas isso diminuiria a performance e é limitado a 1 algarismo...

Código:
valores = "12345"

if (string_pos(string(x), valores) > 0)
{

}

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Redução de código - sintaxe

Mensagem por Gonçalves em Sex 06 Set 2013, 23:15

Se os números forem consecutivos, você pode usar median:

Código:
if x = median(0,x,5)
Que vai retornar verdadeiro se o valor de x estiver entre 0 e 5 (de 1 a 4). Ou até mesmo:

Código:
if x>0 and x<5
Fora isso acredito que não tenha...

Você também pode criar um script, por exemplo chamado equal, e nele ter:

Código:
if argument1!=0 if argument0=argument1 return 1
if argument2!=0 if argument0=argument2 return 1
if argument3!=0 if argument0=argument3 return 1
if argument4!=0 if argument0=argument4 return 1
if argument5!=0 if argument0=argument5 return 1
if argument6!=0 if argument0=argument6 return 1
if argument7!=0 if argument0=argument7 return 1
if argument8!=0 if argument0=argument8 return 1
if argument9!=0 if argument0=argument9 return 1
return 0
E usar, por exemplo:

Código:
if equal(x,1,2,3,4)
    game_end()
Pra checar se x é igual a 1, 2, 3, ou 4. Nesse caso você poderia usar até 9 números:

Código:
if equal(x,1,2,3,4,5,6,7,8,9)
    game_end()

Gonçalves

Ranking : Nota B
Número de Mensagens : 1013
Data de inscrição : 29/10/2010
Notas recebidas : B + A + C
Reputação : 79
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Redução de código - sintaxe

Mensagem por DanMK em Sab 07 Set 2013, 13:21

Obrigado aos 2 que me responderam. Eu inicialmente só queria saber se existia mesmo essa redução de código, do mesmo jeito que "x = x + 1" é o mesmo que "x += 1" ou até "x++". Mesmo não tendo, gostei das sugestões de vocês, são coisas simples mas que eu ainda não tinha pensado sobre. Valeu Happy

@OFF
EDIT: Gonçalves, você joga LoL? (Meio óbvio que sim né mas...) eu tenho um canal no YT de LoL =D

DanMK

Ranking : Nota B
Número de Mensagens : 8
Data de inscrição : 05/09/2013
Notas recebidas : B
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Redução de código - sintaxe

Mensagem por GameMakerTutoriais em Sex 13 Set 2013, 22:15



Se todas as variáveis comparadas forem booleanas (verdadeiro ou falso), você pode somar tudo e ver se é maior ou igual a 1.

Código:
// Equivale ao mesmo que... if (var1 = true) or (var2 = true) or (var3 = true) or (var4 = true) ...
if var1 + var2 + var3 + var4 > 0
{
// Verdadeiro!
}
Se você tiver muita preguiça (tipo eu), você pode gravar esses valores numa ds_list e depois checar se o valor está lá. Por exemplo... "VAR" pode ser 10, 29, 39, 48, 57, 68, 79 ou 21... Então, vou usar um "ds_list_add(lista, valor)" com cada um desses valores.

Pra conferir se "VAR" é algum deles, faríamos assim:

Código:
if ds_list_find_index(lista, VAR) >= 0
{
// Verdadeiro!
}
Se você tiver MUITAS possibilidades pra checar, você pode tentar uma máquina de estados (procure na assinatura do saim). Basicamente, você simplifica o número de condições usando uma separação por cada TIPO de condição.

Se você tem uma variável que pode assumir 8 valores diferentes (usando o exemplo acima), você pode dividir isso em dois ou mais "grupos" de valores. Por exemplo...

Em vez de conferir se X é 10, 29, 39 ou 48, vou estipular para que, quando esse valor for "setado" na variável, uma outra condição seja criada, e vou usar "Z = true", caso contrário, "Z = false".

Se Z é true, X é 10, 29, 39 ou 48, caso contrário, ele é 57, 68, 79 ou 21...

E assim você vai subdividindo as condições para facilitar a programação.

GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Redução de código - sintaxe

Mensagem por Conteúdo patrocinado Hoje à(s) 15:59


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum