Conectar-se
Quem está conectado
28 usuários online :: 2 usuários cadastrados, Nenhum Invisível e 26 Visitantes

gart30, Willy

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 11/01/2014
Número de Mensagens : 284
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

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

[AJUDA] While e repetições

em Dom 27 Abr 2014, 19:43
Pessoal, estou com outro problema  scratch 

Estou querendo criar uma barra de especial, onde atinge-se 100 na barra, a nave comece a atirar feito louca por 10 segundos sem gastar munição  afro 
Tentei fazer isso, mas, meu PC travou, tenho certeza que fiz algo errado  Mad 

Código:

//Controle: Create
global.superespecial = false;

Código:

//Player: Create
controle2 = true;

Código:

//Player: Step
if global.especial = 100 and controle2 = true {
    global.superespecial = true;
    controle2 = false;
}

if global.superespecial = true and controle2 = false {
    alarm[2] = 300;
    global.especial = 0;
    controle2 = true;
}

while (global.superespecial = true) {
    with (instance_create(x+21,y-40,obj_Tiro)) {
        motion_set(90,20);
    }

    with (instance_create(x-21,y-40,obj_Tiro)) {
        motion_set(90,20);
    }
}

Código:

Alarm 2
global.superespecial = false;

O que fiz de errado? Eu preciso colocar intervalo entre tiros? e se o jogador morrer no meio do especial?  bom 
avatar
Ranking : Nota A
Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Número de Mensagens : 1833
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 2
   : 1
   : 1
Ver perfil do usuáriohttp://willy-gmbr.blogspot.com/

Re: [AJUDA] While e repetições

em Dom 27 Abr 2014, 19:50
Neste caso, um loop não é o ideal. Usando-os, você criaria todos os tiros em um único frame.

É melhor você criar uma variável "AtiraFeitoLouco" que, quando ativa, começa a atirar freneticamente.
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 11/01/2014
Número de Mensagens : 284
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

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

Re: [AJUDA] While e repetições

em Dom 27 Abr 2014, 19:56
@Willy escreveu:Neste caso, um loop não é o ideal. Usando-os, você criaria todos os tiros em um único frame.

É melhor você criar uma variável "AtiraFeitoLouco" que, quando ativa, começa a atirar freneticamente.

Foi o que eu tentei '-'
Eu criei a variavel superespecial, enquanto ela fosse verdadeira ela ficaria atirando, qual a melhor maneira de se resolver isso? Razz
avatar
Ranking : Nota A
Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Número de Mensagens : 1833
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 2
   : 1
   : 1
Ver perfil do usuáriohttp://willy-gmbr.blogspot.com/

Re: [AJUDA] While e repetições

em Dom 27 Abr 2014, 20:12
Bom, eu fiz uma pequeno teste aqui e funcionou. Apenas para teste, crie um projeto e crie mais dois objetos: obj_tiro e obj_controle.

No obj_tiro, coloque um sprite e um valor de speed qualquer no create.

No objeto controle, faça assim
Create:
Código:
AtiraFeitoLouco = false;

Alarm[0]:
Código:
AtiraFeitoLouco = false;

Step:
Código:
if keyboard_check_pressed(vk_space){ //Substitua pela condição que desejar
    if (alarm[0])<=0{
        AtiraFeitoLouco = true;
        alarm[0] = room_speed * 10; //10 segundos...
    }
}


if (AtiraFeitoLouco==true){//Atirar!
    t = instance_create(x,y,obj_tiro);
    t.direction = irandom(360);
}

Veja se isso resolve seu problema. Se tiver alguma dúvida, é só falar.
Flws... blz
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 11/01/2014
Número de Mensagens : 284
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

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

Re: [AJUDA] While e repetições

em Dom 27 Abr 2014, 20:15
@Willy escreveu:Bom, eu fiz uma pequeno teste aqui e funcionou. Apenas para teste, crie um projeto e crie mais dois objetos: obj_tiro e obj_controle.

No obj_tiro, coloque um sprite e um valor de speed qualquer no create.

No objeto controle, faça assim
Create:
Código:
AtiraFeitoLouco = false;

Alarm[0]:
Código:
AtiraFeitoLouco = false;

Step:
Código:
if keyboard_check_pressed(vk_space){ //Substitua pela condição que desejar
    if (alarm[0])<=0{
        AtiraFeitoLouco = true;
        alarm[0] = room_speed * 10; //10 segundos...
    }
}


if (AtiraFeitoLouco==true){//Atirar!
    t = instance_create(x,y,obj_tiro);
    t.direction = irandom(360);
}

Veja se isso resolve seu problema. Se tiver alguma dúvida, é só falar.
Flws... blz

Vou testar amanhã senão eu taco meu computador pela janela
Posso te enviar uma MP amanhã avisando se deu certo? Happy
Se puder testar meu jogo? http://gmbr.forumeiros.com/t29828-cq-17-scapin#218356 Queria saber se está pelo menos aceitavel  bravo 
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

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

Re: [AJUDA] While e repetições

em Dom 27 Abr 2014, 20:33
@vitorfernandes13 escreveu:
@Willy escreveu:Neste caso, um loop não é o ideal. Usando-os, você criaria todos os tiros em um único frame.

É melhor você criar uma variável "AtiraFeitoLouco" que, quando ativa, começa a atirar freneticamente.

Foi o que eu tentei '-'
Eu criei a variavel superespecial, enquanto ela fosse verdadeira ela ficaria atirando, qual a melhor maneira de se resolver isso? Razz
Estou falando a partir de uma olhada superficial pelo tópico.
Quando a gente fala de ações que se repetem a cada step, rola uma confusão entre "se" e "enquanto".

Vamos lá: "enquanto" é "while" se tudo acontece no mesmo step. Senão, se for for "em todos os steps em que..." é "if". Fica muito fácil de entender quando você parte do sentido contrário: a variável é "true" e vai ser "false" em 15 steps, você precisa criar instâncias de tiros "enquanto" ela for true. Você cria uma instância "IF" ela for true, não "while" ela for true.

Falei por falar. Se o Willy deu uma solução, ela VAI funcionar. Mas você podia não ter entendido o que ele fez, agora entendeu.
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