Conectar-se
Quem está conectado
20 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 20 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Ranking : Nota A
Notas recebidas : A-C-B-A
Data de inscrição : 05/10/2010
Número de Mensagens : 383
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 57

Prêmios
   : 0
   : 1
   : 2
Ver perfil do usuário

[Resolvido] Problema com montes de "Ifs"

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)
avatar
Ranking : Nota B
Notas recebidas : B - C - C - A - A - B - B - A - C - C - A
Data de inscrição : 15/11/2010
Número de Mensagens : 333
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 6

Prêmios
   : 0
   : 1
   : 0
Ver perfil do usuáriohttp://jozgm.webnode.com.br/

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

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}
avatar
Data de inscrição : 22/12/2009
Número de Mensagens : 1164
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   :
   :
   :
Ver perfil do usuáriohttp://nintendocenterbr.forumeiros.com

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

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...
avatar
Ranking : Nota A
Notas recebidas : A-C-B-A
Data de inscrição : 05/10/2010
Número de Mensagens : 383
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 57

Prêmios
   : 0
   : 1
   : 2
Ver perfil do usuário

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

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/
avatar
Ranking : Nota D
Notas recebidas : D+D
Data de inscrição : 05/10/2010
Número de Mensagens : 836
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 12

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

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

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.
avatar
Data de inscrição : 22/12/2009
Número de Mensagens : 1164
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   :
   :
   :
Ver perfil do usuáriohttp://nintendocenterbr.forumeiros.com

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

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
avatar
Ranking : Nota A
Notas recebidas : A-C-B-A
Data de inscrição : 05/10/2010
Número de Mensagens : 383
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 57

Prêmios
   : 0
   : 1
   : 2
Ver perfil do usuário

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

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/
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum