[Resolvido] Problema com montes de "Ifs"

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

Resolvido [Resolvido] Problema com montes de "Ifs"

Mensagem por Mr.Rafael em Seg 13 Dez 2010, 15:42

Estou criando pequenos projetos para, aos poucos, começar em GML. Começando pela movimentação, existem 2 pequenas ações que ando criando (esquerda e direita). Meu código:

Código:
// Objeto
effect_create_above(ef_star,self.x,self.y,1,255)
//----------------------------------------------
//
// Movimentação
if keyboard_check (vk_left) {
x -=4
}
else {
x -=0
}
////////////////////////////////////////////////
if keyboard_check (vk_right) {
x +=4
}
else {
x +=0
}

Vejam que utilizei 2 Ifs... mas eu acho que isso foi meio que uma "gambiarra". Pois bem, eu quero usar essas 2 ações em um IF só. Além de economizar espaço, seria melhor e mais organizado. (pelo menos eu acharia)

"Não entendi a sua pergunta..."

Bem, vou colocar 2 códigos aqui. Consiste em, quando você apertar Enter, aparecer um efeito:

A "gambiarra" que estou falando:
Código:
if keyboard_check (vk_enter) {
effect_create_above(ef_star,self.x,self.y,1,255)
}
////////////////////////////////////////////////
if keyboard_check_released (vk_enter) {
//Não faz nada
}

A ação com apenas 1 IF:
Código:
if keyboard_check (vk_enter) {
effect_create_above(ef_star,self.x,self.y,1,255)
}
else {
//Não faz nada
}

Uma observação é que eu tentei, mas o depurador julgava o código como errado.

Bem... é possível criar essas ações usando apenas 1 IF? Se possível, mostrem com 3 ou mais ações. Isso me ajudaria muito a criar um bom código. Não precisaria mais de ficar criando IFs contínuos \o/

o/
* Se esta pergunta já foi feita por alguém, peço o Link do tópico por MP e que deletem/fechem este .-. E desculpem qualquer coisa :B


Última edição por Mr.Rafael em Seg 13 Dez 2010, 16:33, editado 1 vez(es) (Razão : Tópico resolvido)

Mr.Rafael

Ranking : Nota A
Número de Mensagens : 383
Data de inscrição : 05/10/2010
Notas recebidas : A-C-B-A
Reputação : 57
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 2

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido] Problema com montes de "Ifs"

Mensagem por JOZ. em Seg 13 Dez 2010, 15:48

Não precisa colocar else em tudo.

Ao invés de:
Código:
//----------------------------------------------
//
// Movimentação
if keyboard_check (vk_left) {
x -=4
}
else {
x -=0
}
////////////////////////////////////////////////
if keyboard_check (vk_right) {
x +=4
}
else {
x +=0
}

Coloque:
Código:
if keyboard_check (vk_left) {x+=-4}
if keyboard_check (vk_right) {x+=4}

JOZ.

Ranking : Nota B
Número de Mensagens : 333
Idade : 22
Data de inscrição : 15/11/2010
Notas recebidas : B - C - C - A - A - B - B - A - C - C - A
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://jozgm.webnode.com.br/

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido] Problema com montes de "Ifs"

Mensagem por donte em Seg 13 Dez 2010, 15:53

que tal usar uma variavel pra detectar se pode criar o afeito tipo:
no create:
Código:
global.cria=false
no step:
Código:
//caso true...
if global.cria=true{effect_create_above(efeito,x,y,1,0)}
//pode cria(ou não)...
if keyboard_check (vk_enter) {
global.cria=true
}else{global.cria=false}

edit:
joz. se ele fizer isso o player vai andar pra sempre...

donte

Número de Mensagens : 1164
Idade : 18
Data de inscrição : 22/12/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://nintendocenterbr.forumeiros.com

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido] Problema com montes de "Ifs"

Mensagem por Mr.Rafael em Seg 13 Dez 2010, 16:01

Obrigado, JOZ.. Eu uso esses "elses" porque, quando eu tentei criar a movimentação pela primeira vez, ele ficava andando de forma contínua, então passei a usá-los. Mas já não precisa... Valeu, então. Very Happy

Isso resolveu o problema que tive... mas a minha curiosidade quanto a isso continua @_@. Mas obrigado, você me deu uma ótima dica para economizar espaço. (além de resolver meu problema)

E... donte, eu testei o código, é funcional. Essa de criar uma variável com true e false é interessante, mas acho que se limitaria a apenas 2 ações (quando ele é true e quando ele é false). No caso, acho que teria que colocar um valor para ele (por exemplo, 0, 1 e 2) e dizer quais ações ele teria se tivesse tais valores. Isso seria funcional? Porque se for, minha dúvida acaba aqui mesmo. Especifico tudo num código enorme para fazê-los sem muito esforço depois.

o/

Mr.Rafael

Ranking : Nota A
Número de Mensagens : 383
Data de inscrição : 05/10/2010
Notas recebidas : A-C-B-A
Reputação : 57
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 2

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido] Problema com montes de "Ifs"

Mensagem por Mannoroth em Seg 13 Dez 2010, 16:04

donte escreveu:joz. se ele fizer isso o player vai andar pra sempre...
Errado, segundo o código o player so anda pra direita se estiver pressionando(segurando) right e só anda pra esquerda se estiver pressionando left. Se nao estiver pressionando nenhum dos dois, ele fica parado.

Mannoroth

Ranking : Nota D
Número de Mensagens : 836
Idade : 26
Data de inscrição : 05/10/2010
Notas recebidas : D+D
Reputação : 12
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido] Problema com montes de "Ifs"

Mensagem por donte em Seg 13 Dez 2010, 16:14

ahh é verdade só li a "GAMBIARRA"(não to chamando a duvida dele de gambiarra apenas o titulo que ele pois)...

e funcionaria sim mais ia ter que usar no step if global.cria>0 no key e usaria mais de 1 tipo ia ficar assim:
Create:
Código:
global.cria=100//pode criar até 100
no Step:
Código:
//caso menor que 100...
if global.cria<100{effect_create_above(efeito,x,y,1,0)}
//pode cria(ou não)...
if keyboard_check (vk_enter) {if global.cria>=0{global.cria-=1}
}else{global.cria=100}
o que usaria +1 if Shocked

donte

Número de Mensagens : 1164
Idade : 18
Data de inscrição : 22/12/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://nintendocenterbr.forumeiros.com

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido] Problema com montes de "Ifs"

Mensagem por Mr.Rafael em Seg 13 Dez 2010, 16:32

Então parece que é praticamente impossível criar várias funções usando um if só.

Mas ao menos isso reduz e muito os códigos que eu estava usando. O que eu estava pensando era +/- assim:

Código:
// Opções de função
global.option = 0;
///////////////////////
// Ações pre-definidas
if global.option = 0 {effect_create_above(ef_flare,self.x,self.y,1,300)}
if global.option = 1 {x+=1}
if global.option = 2{x-=1}
///////////////////////
// Movimentação:
if keyboard_check (vk_left) {global.option = 2}
if keyboard_check (vk_right) {global.option = 1}
if keyboard_check (vk_nokey) {global.option = 0}

Eu teria comandos pré-definidos. Caso eu quisesse usá-los mais de uma vez, eu não teria que repetir o comando, apenas setar o valor da variável que ela se encarregaria do resto. Mesmo assim, eu ia gastar mais código com isso... e deu um total de 6 ifs.

Bem... acho que realmente vou ter que usar esses montes de ifs para criar algo. Obrigado a quem conseguiu reduzir o tamanho dos codes, era isso que eu queria fazer quando perguntei Very Happy

•- Tópico resolvido -•

o/

Mr.Rafael

Ranking : Nota A
Número de Mensagens : 383
Data de inscrição : 05/10/2010
Notas recebidas : A-C-B-A
Reputação : 57
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 2

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido] Problema com montes de "Ifs"

Mensagem por Conteúdo patrocinado Hoje à(s) 16:02


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