Qual é a causa do erro?

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

Qual é a causa do erro?

Mensagem por DUDU951 em Ter 01 Jul 2014, 03:37

Eu não estou conseguindo entender no que eu estou errando..

Objetivo:
Criar variável "variavel" com valor "false"
Em ambos objetos:
Caso o valor de variavel continue sendo false, image_index = 0
Caso o valor de variavel mude para true, image_index = 1
Info:
Códigos:
Create do obj_1
Código:
variavel = false
Step do obj_1
Código:
if variavel = false
{image_index = 0}
if variavel = true
{image_index = 1}
Create do obj_2
Código:
variavel = false
Código:
if variavel = false
{image_index = 0}
if variavel = true
{image_index = 1}

Adicional
Objetos no quarto: obj_1 / obj_2
spr_1 contém 2 imagens (0,1)
spr_2 contém 2 imagens (0,1)
Não há nenhum outro evento nos obj_1 e obj_2
Erro:
Em vez da sprite ficar ou só em image_index 0
ou então só em image_index 1,
ela fica "piscando" alternando entre a image_index 1/2
Causa do Erro:
falta de informação

DUDU951

Número de Mensagens : 90
Idade : 16
Data de inscrição : 24/06/2014
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Qual é a causa do erro?

Mensagem por 7hiagomp em Ter 01 Jul 2014, 06:12

Para a imagem não ficar piscando que nem louca, vc tem que por no create to objeto o codigo
image_speed = 0
Isso vai congelar sua imagem no primeiro frame.  Se não fizer isso ele vai entender que as imagens são uma animação e vai dar play
aí vc vai ter seu efeito "piscando loucamente"

no código falto o ELSE e você tá usando "=" que signfica "recebe"
o certo é usar "==" que é comparativo

variavel = false  < a variavel recebe false  (esse é uma afirmação)
if variavel == false < SE a variavel FOR IGUAL a false (esse é uma pergunta)

e na verdade você nem precisa declarar o segundo if, porque se no primeiro if ele já disse que ela não é "falsa" então só pode ser verdadeira, ja q ela so tem dois estados (no caso)

pode ser;

Código:
if variavel == false {image_index = 0}
else {image_index = 1}

Mas se quiser deixar como está o seu então pode ser

Código:
if variavel == false
{image_index = 0}
else if variavel == true
{image_index = 1}

ou melhor ainda, vc pode substituir TUDO isso por

Código:
image_index = variavel

se ela for true vai retonar 1, se for false vai retornar 0.
(é isso mesmo galera? sempre me enrolo no zero e um hehe)

7hiagomp

Número de Mensagens : 124
Idade : 31
Data de inscrição : 21/04/2014
Reputação : 24
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Qual é a causa do erro?

Mensagem por Rodrigo Santiago em Ter 01 Jul 2014, 07:42

Só querendo lembrar:

no código falto o ELSE e você tá usando "=" que signfica "recebe"
o certo é usar "==" que é comparativo
O gamemaker consegue entender mesmo sem o '=='.
Ou seja, mesmo que você use :
Código:

    if variavel == false
    {image_index = 0}
    else if variavel == true
    {image_index = 1}
ou
Código:

    if variavel = false
    {image_index = 0}
    else if variavel = true
    {image_index = 1}
No game maker isto não tem diferença, ou seja, pra que você não se engane use sempre apenas '=' .

Rodrigo Santiago

Ranking : Nota B
Número de Mensagens : 1281
Idade : 20
Data de inscrição : 28/07/2012
Notas recebidas : C + C + B
Reputação : 73
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 1
   : 3

Voltar ao Topo Ir em baixo

Re: Qual é a causa do erro?

Mensagem por DUDU951 em Ter 01 Jul 2014, 12:32

Obrigado 7hiagomp, Obrigado Rodrigo Santiago

Adicionei "speed = 0" e funcionou

Problema 1 resolvido

Problema 2:

Adicionados novos eventos:
Left Button do obj_1:

variavel = true

Left Button do obj_2:

variavel = false

Objetivo:
declarar a variavel com = true ou = false
e trocar de image_index

Resultado:
a image_index não está trocando, e provavelmente o valor da variavel também não






DUDU951

Número de Mensagens : 90
Idade : 16
Data de inscrição : 24/06/2014
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Qual é a causa do erro?

Mensagem por Rodrigo Santiago em Ter 01 Jul 2014, 12:59

Como esta o evento draw? Tem algum código diferente?

Obs quando vc falou speed vc quis dizer image_speed? Pq speed é outra coisa.

Rodrigo Santiago

Ranking : Nota B
Número de Mensagens : 1281
Idade : 20
Data de inscrição : 28/07/2012
Notas recebidas : C + C + B
Reputação : 73
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 1
   : 3

Voltar ao Topo Ir em baixo

Re: Qual é a causa do erro?

Mensagem por DUDU951 em Ter 01 Jul 2014, 13:27

O evento Draw não tem nada

Os únicos Eventos/códigos que tem nos objetos são os que estão no 1 post, + os que eu falei agora no Problema 2.

Sim, é image_speed, eu errei aqui mais no GM tá certo


DUDU951

Número de Mensagens : 90
Idade : 16
Data de inscrição : 24/06/2014
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Qual é a causa do erro?

Mensagem por 7hiagomp em Ter 01 Jul 2014, 19:06

Cara, é o mesmo quesito do outro tópico, você não precisa de 2 objetos pra trocar o estado de uma váriável, vc só checa o estado a da variavel no mesmo objeto e a troca.  Como é mouse, usa 2 comados

mouse_check_button_pressed(mb_left)  <- checagem de click com botão esquerdo do mouse
distance_to_point(mouse_x, mouse_y)    <- checagem que diz se o mouse está sobre o objeto
&& <- significa "e", pra a ação a contecer, ambas as afirmações tem q ser verdadeiras.
(se não me andando pode escrever "and")

Isso fica no STEP;

Isso checa se o mouse foi clicado encima do objeto.
Código:
if mouse_check_button_pressed(mb_left) && distance_to_point(mouse_x, mouse_y) == 0
{
if variavel == true { variavel = false}
else variavel = true
}

na lógica seria:

o mouse foi clicado E está sobre o objeto?
SIM > ok, o estado da variavel é true?
|
|        SIM > "mude a variavel pra false"
|        NAO> "mude a variavel pra true"
|
NAO> não faça nada


Última edição por 7hiagomp em Qua 02 Jul 2014, 00:56, editado 1 vez(es)

7hiagomp

Número de Mensagens : 124
Idade : 31
Data de inscrição : 21/04/2014
Reputação : 24
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Qual é a causa do erro?

Mensagem por DUDU951 em Ter 01 Jul 2014, 22:56

Eu preciso alterar algo no lugar que está "mouse_x","mouse_y"?
Por que quando eu coloquei esse código no step dos objetos, (no obj_1 coloquei que a variável viraria true, e no obj_2 que viraria false)

a variavel ficou alternando entre true e false num loop infinito, mesmo sem eu ter dado nenhum clique com o mouse

DUDU951

Número de Mensagens : 90
Idade : 16
Data de inscrição : 24/06/2014
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Qual é a causa do erro?

Mensagem por 7hiagomp em Qua 02 Jul 2014, 00:55

A variavel ficou alterando ou a sprite ficou alterando infinitamente?

7hiagomp

Número de Mensagens : 124
Idade : 31
Data de inscrição : 21/04/2014
Reputação : 24
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Qual é a causa do erro?

Mensagem por DUDU951 em Qua 02 Jul 2014, 08:47

7hiagomp escreveu:A variavel ficou alterando ou a sprite ficou alterando infinitamente?
a imagem da sprite, mas eu devia ter feito alguma coisa errada, porque eu re-coloquei os códigos e funcionou normalmente!

PROBLEMAS RESOLVIDOS!

DUDU951

Número de Mensagens : 90
Idade : 16
Data de inscrição : 24/06/2014
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Qual é a causa do erro?

Mensagem por Conteúdo patrocinado Hoje à(s) 17:43


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