[Resolvido] codigo não funciona sem motivo aparente

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

[Resolvido] codigo não funciona sem motivo aparente

Mensagem por AlexBosquin em Dom 23 Nov 2014, 14:52

Olá galera é o seguinte:

CREATE:
Código:

st_normal = 0;
st_fly = 1;

state = st_normal;

STEP:
Código:

if bt_shift_press && state = st_normal
{
     state = st_fly
}

if bt_shift_press && state = st_fly
{
     state = st_normal
}

QUando aperto shift primeiramente funciona o state muda pra st_fly mas quando aperto de novo ele não volta pra st_normal, alguém pode me ajudar?


Última edição por AlexBosquin em Qua 26 Nov 2014, 23:10, editado 1 vez(es)

AlexBosquin

Ranking : Nota C
Número de Mensagens : 621
Idade : 20
Data de inscrição : 10/07/2012
Notas recebidas : C
Reputação : 35
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.craftstudios.com.br

Voltar ao Topo Ir em baixo

Re: [Resolvido] codigo não funciona sem motivo aparente

Mensagem por Isaque Onix em Dom 23 Nov 2014, 16:52

STEP:
Código:
if(keyboard_check_released(vk_shift)){ if(state = st_fly){state = st_normal keyboard_clear(vk_shift)}else if(state = st_normal){state = st_fly keyboard_clear(vk_shift)}else {state = st_normal keyboard_clear(vk_shift)}
}

Acho que da certo...


Última edição por Isaque Onix em Seg 24 Nov 2014, 23:39, editado 1 vez(es)

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: [Resolvido] codigo não funciona sem motivo aparente

Mensagem por icarodantas123 em Dom 23 Nov 2014, 23:02

Eu faria assim:
Código:

st_normal = 0;
st_fly = 1;

state = st_normal;

e

Código:

if bt_shift_press and state = st_normal
{
    state = st_fly
}

if bt_shift_press and state = st_fly
{
    state = st_normal
}


icarodantas123

Número de Mensagens : 128
Data de inscrição : 24/05/2013
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Resolvido] codigo não funciona sem motivo aparente

Mensagem por Sewer Crawler em Seg 24 Nov 2014, 02:19

Tente assim:
Código:
if bt_shift_press && state == st_normal
{
    state = st_fly
}

if bt_shift_press && state == st_fly
{
    state = st_normal
}

Sewer Crawler

Número de Mensagens : 236
Idade : 23
Data de inscrição : 08/10/2014
Reputação : 27
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Resolvido] codigo não funciona sem motivo aparente

Mensagem por matheusco em Seg 24 Nov 2014, 03:15

É só colocar um "exit" depois da troca de estado, pois quando acontece a troca de estado em cima a de baixo fica verdadeira e troca de novo.

matheusco

Número de Mensagens : 395
Idade : 23
Data de inscrição : 10/08/2014
Reputação : 51
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.tutoriaisgamemaker.com.br

Voltar ao Topo Ir em baixo

Re: [Resolvido] codigo não funciona sem motivo aparente

Mensagem por Isaque Onix em Seg 24 Nov 2014, 11:11

matheusco escreveu:É só colocar um "exit" depois da troca de estado, pois quando acontece a troca de estado em cima a de baixo fica verdadeira e troca de novo.

isso iria "parar" o step, qualquer codigo que tivesse depois destes não seriam executados...

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: [Resolvido] codigo não funciona sem motivo aparente

Mensagem por AlexBosquin em Seg 24 Nov 2014, 12:18

@icarodantas123 e @Sewer Crawler o codigo que vcs dois me passaram não vão mudar em nada pois o "&&" é a mesma coisa que "and" e colocar os operadores == e = no game maker é mesma coisa não muda nada, tanto faz ser == ou =. Mesmo assim vlw pela intenção de ajuda ;D

AlexBosquin

Ranking : Nota C
Número de Mensagens : 621
Idade : 20
Data de inscrição : 10/07/2012
Notas recebidas : C
Reputação : 35
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.craftstudios.com.br

Voltar ao Topo Ir em baixo

Re: [Resolvido] codigo não funciona sem motivo aparente

Mensagem por Isaque Onix em Seg 24 Nov 2014, 12:45

conseguiu arrumar seu código?

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: [Resolvido] codigo não funciona sem motivo aparente

Mensagem por matheusco em Seg 24 Nov 2014, 16:01

Isaque Onix escreveu:
matheusco escreveu:É só colocar um "exit" depois da troca de estado, pois quando acontece a troca de estado em cima a de baixo fica verdadeira e troca de novo.

isso iria "parar" o step, qualquer codigo que tivesse depois destes não seriam executados...

É a intenção. A menos que esse step vá atrapalhar o jogo dele de alguma forma, no próximo ele já vai ser executado normalmente.

Se não quiser dessa maneira, é só usar if e else ao invés de dois if diferentes. Dessa maneira só um deles vai ser executado por vez.

matheusco

Número de Mensagens : 395
Idade : 23
Data de inscrição : 10/08/2014
Reputação : 51
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.tutoriaisgamemaker.com.br

Voltar ao Topo Ir em baixo

Re: [Resolvido] codigo não funciona sem motivo aparente

Mensagem por Sewer Crawler em Seg 24 Nov 2014, 16:38

Já me aconteceu de um código não funcionar simplesmente por usar = em vez de == . Foi mal.
(Mas o icarodantas123 apenas usar 'and' no lugar de '&&' foi fod@)

Sewer Crawler

Número de Mensagens : 236
Idade : 23
Data de inscrição : 08/10/2014
Reputação : 27
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Resolvido] codigo não funciona sem motivo aparente

Mensagem por JoaoVanBlizzard em Seg 24 Nov 2014, 18:43


isso acontece por que você fez uma coisa errada você deixou st_fly e o st_normal como se fosse uma variavel booleana, o correto era chama-la como strings, dessa maneira:


Create:

Código:

state = "st_normal";

Step
Código:

if bt_shift_press && state = "st_normal"
{
    state = "st_fly"
}
else
if bt_shift_press && state =" st_fly"
{
    state = "st_normal";
}
Assim certamente irá funcionar, ok

JoaoVanBlizzard

Ranking : Nota B
Número de Mensagens : 1925
Idade : 38
Data de inscrição : 04/03/2012
Notas recebidas : B+B
Reputação : 144
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 2
   : 0

Voltar ao Topo Ir em baixo

Re: [Resolvido] codigo não funciona sem motivo aparente

Mensagem por matheusco em Seg 24 Nov 2014, 19:02

JoaoVanBlizzard escreveu:
isso acontece por que você fez uma coisa errada você deixou st_fly e o st_normal como se fosse uma variavel booleana, o correto era chama-la como strings, dessa maneira:


Create:

Código:

state = "st_normal";

Step
Código:

if bt_shift_press && state = "st_normal"
{
    state = "st_fly"
}
else
if bt_shift_press && state =" st_fly"
{
    state = "st_normal";
}
Assim certamente irá funcionar, ok

Vai dar errado também porquê assim que o de cima for executado, o de baixo se torna verdadeiro e é executado também. Enfim, use "exit", mas se isso prejudicar seu código use "if - else".

"case" também não vai dar certo nessa situação.

EDIT: Tem uma solução melhor, agora que vi que você não usa keyboard_check, mas uma variável. É só fazer:


if bt_shift_press && state = st_normal
{
state = st_fly
bt_shift_press = false
}

if bt_shift_press && state = st_fly
{
state = st_normal
bt_shift_press = false
}

matheusco

Número de Mensagens : 395
Idade : 23
Data de inscrição : 10/08/2014
Reputação : 51
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.tutoriaisgamemaker.com.br

Voltar ao Topo Ir em baixo

Re: [Resolvido] codigo não funciona sem motivo aparente

Mensagem por Willy em Seg 24 Nov 2014, 20:11

As duas condições são executadas! SEMPRE que quiser que seja obrigatoriamente "um ou outro" código, utilize o else. Faça disso um hábito!

Seu código step deve ficar assim:
Código:
if (bt_shift_press){
   if (state == st_normal){
      state = st_fly
   }else{
      state = st_normal
   }
}
Repare que o código ficou mais enxuto e simplificado. Note também que chequei se o botão é pressionado apenas uma vez. Conforme o tempo passa, você aprende a encurtar códigos, deixando-o mais fácil de entender (nem sempre yes) e mais fácil de fazer manutenção.

Ou ainda, pode simplificar a isso:
Código:
if (bt_shift_press){
   state *=-1;
}
Mas neste caso, state deve iniciar no create valendo "1", sendo que 1 = st_normal e -1 = st_fly, isto se existirem apenas 2 states, caso contrário, isso não seria aplicável.

Flws... blz

___________


Engines, tutoriais e projetos? Clique no banner!



Atenção:
Comporte-se, senão você vai levar a cintada do Willy no meio da bunda! bravo


Willy

Ranking : Nota A
Número de Mensagens : 1812
Idade : 23
Data de inscrição : 08/06/2009
Notas recebidas : C + B + A + A
Reputação : 245
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [Resolvido] codigo não funciona sem motivo aparente

Mensagem por JoaoVanBlizzard em Seg 24 Nov 2014, 20:53

Vai dar errado também porquê assim que o de cima for executado, o de baixo se torna verdadeiro e é executado também. Enfim, use "exit", mas se isso prejudicar seu código use "if - else".

Não vai não, eu uso codigos assim, o else é justamente para evitar que o de baixo se torne verdadeiro, agora , se o else for tirado, ai sim esse problema iria surgir.

todavia a sugestão do willy é a mais em conta para esse caso , o unico porém é que ela só vai funcionar se você precisar apenas dessas duas funções, se precisar adicionar novos comandos, ai vai precisar redefinir o código, mas se for só para esses dois, o jeito que ele ensinou já da e sobra para isso. Smile

JoaoVanBlizzard

Ranking : Nota B
Número de Mensagens : 1925
Idade : 38
Data de inscrição : 04/03/2012
Notas recebidas : B+B
Reputação : 144
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 2
   : 0

Voltar ao Topo Ir em baixo

Re: [Resolvido] codigo não funciona sem motivo aparente

Mensagem por matheusco em Seg 24 Nov 2014, 21:45

JoaoVanBlizzard escreveu:
Vai dar errado também porquê assim que o de cima for executado, o de baixo se torna verdadeiro e é executado também. Enfim, use "exit", mas se isso prejudicar seu código use "if - else".

Não vai não, eu uso codigos assim, o else é justamente para evitar que o de baixo se torne verdadeiro, agora , se o else for tirado, ai sim esse problema iria surgir.

todavia a sugestão do willy é a mais em conta para esse caso , o unico porém é que ela só vai funcionar se você precisar apenas dessas duas funções, se precisar adicionar novos comandos, ai vai precisar redefinir o código, mas se for só para esses dois, o jeito que ele ensinou já da e sobra para isso. Smile

Ah, não tinha visto o "else" ali. Perdão pelo erro.

matheusco

Número de Mensagens : 395
Idade : 23
Data de inscrição : 10/08/2014
Reputação : 51
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.tutoriaisgamemaker.com.br

Voltar ao Topo Ir em baixo

Re: [Resolvido] codigo não funciona sem motivo aparente

Mensagem por Isaque Onix em Seg 24 Nov 2014, 23:44

matheusco escreveu:
Isaque Onix escreveu:
matheusco escreveu:É só colocar um "exit" depois da troca de estado, pois quando acontece a troca de estado em cima a de baixo fica verdadeira e troca de novo.

isso iria "parar" o step, qualquer codigo que tivesse depois destes não seriam executados...

É a intenção. A menos que esse step vá atrapalhar o jogo dele de alguma forma, no próximo ele já vai ser executado normalmente.

Se não quiser dessa maneira, é só usar if e else ao invés de dois if diferentes. Dessa maneira só um deles vai ser executado por vez.

pois é, mais o problema dele é que quando ele pressiona a tecla "shift" no caso, a ação é repetida até a tecla ser solta, ou seja normal>fly>normal>fly... ele poderia apenas adicionar o keyboard_clear(vk_shift) que daria certo, mais fiz um codigo de maneira mais manipulável para ele trabalhar com isso, mas, o exit quase que a pior forma de fazer isso.

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: [Resolvido] codigo não funciona sem motivo aparente

Mensagem por johnnatan.oliveira.1 em Qua 26 Nov 2014, 17:56

Meu modo de troca é diferente...
Eu faria assim: 

Create:

st_normal = 0;
st_fly = 1;
trocar=0
state = 0;

Step:

if keyboard_check_pressed (vk_shift ) { trocar +=1}

if trocar>1{ trocar=0}

if trocar=0{ state=st_normal}

if trocar=1{ state=st_fly}


Tente esse  felicidadecoll2

johnnatan.oliveira.1

Número de Mensagens : 8
Idade : 16
Data de inscrição : 25/10/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Resolvido] codigo não funciona sem motivo aparente

Mensagem por AlexBosquin em Qua 26 Nov 2014, 23:08

Caraca nunca tive um topico que gerasse tanto discução (ufa ainda bem que foi saudável kkk).
Então galera olhando o codigo que todo mundo passou o que serviu aqui foi o do manolo @willy acho que o do @Isaque Onix e @JoaoVanBlizzard vão funcionar tbm, mas futricando aqui eu achei um problema muito bobo que era esse:

bt_shift_press , por algum motivo funciona mas não retorna a mesma coisa que keyboard_check_pressed(vk_shift) então testei com esse codigo mais longo e pronto, funcionou kkkk acredtiam, dai o que eu fiz pra poder continuar usando o meu bt_shift_press, eu simplismente iniciei o script que trabalha com ele que no caso é assim:

init_controls();

Então é isso ai vlw todo mundo, e digo que estou impressionado que mesmo com todo esse tempo o forum ainda ser bem ativo e estar bem saudável ainda ;D s2

RESOLVIDO

AlexBosquin

Ranking : Nota C
Número de Mensagens : 621
Idade : 20
Data de inscrição : 10/07/2012
Notas recebidas : C
Reputação : 35
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.craftstudios.com.br

Voltar ao Topo Ir em baixo

Re: [Resolvido] codigo não funciona sem motivo aparente

Mensagem por Isaque Onix em Qui 27 Nov 2014, 02:50

cara, não sei exatamente quem te ajudou, mais, se não for pedir de mais, dê um JOINHA pra este que te ajudou. (seja quem for)

@Offtopic
acho que este negocio de joinha num ta dando muito certo não... quase ninguem tem o costume de clicar neles ao ser ajudado ou ver algo interessante...

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: [Resolvido] codigo não funciona sem motivo aparente

Mensagem por Conteúdo patrocinado Hoje à(s) 10:32


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