Ir ao conteúdo

Posts recomendados

Postado

olá boa noite a todos!

Estou "tentando" desenvolver um jogo de luta em SDL2 c++,  estou com o seguinte problema:

tenho um loop 10 posição sendo que cada posição repete 4 EXEMPLO:  na posição 0 repete 0 0 0 0 na posição 1 repete 1 1 1 1 e a sim por diante ate o numero 9,

o que eu quero é que quando chegar em uma posição que eu escolher Exemplo: seu eu escolher a posição 1 execute uma ação mas somente o primeira vez que

repetiu o numero 1 as outras vez que o numero 1 for repetido não execute nada.

Não estou conseguindo resolver este problema não sei porque, sendo que já fiz coisa muito mais difícil e complexa que isso, acho que não to pensando direito kkkk.

veja um exemplo de loop...  não este que estou usando não mais é parecido mesma logica.

  

if (currentFrame == 9){

currentFrame = 0;

}else{

if (slow == 4){

currentFrame++; slow = 0;

} slow++

}

  • Curtir 1
Postado
9 horas atrás, vangodp disse:

Não entendo

 

acho que não expliquei o que queria direito kkkk, desculpas.. Vou tentar explicar mas simplesmente.
 

if (currentFrame == 9){
currentFrame = 0;
// Qaundo o 'currentFrame == 1', execute uma ação somente uma vez
// Neste loop o 1 é repetido 4 vezes, preciso que execute a ação somente no primeiro 1
}else{
if (slow == 4){
   currentFrame++;
   slow = 0;
 }
slow++
}

 

Postado

Use uma "flag"

 

int flag = 0; //declarar no escopo adequado

if (currentFrame == 9){
currentFrame = 0;
flag = 0;
// Qaundo o 'currentFrame == 1', execute uma ação somente uma vez
// Neste loop o 1 é repetido 4 vezes, preciso que execute a ação somente no primeiro 1
}else{
if ((!flag) && (currentFrame ==1))
{ 
	//faça o que tem de fazer
	flag = 1; //vai impedir de executar novamente
}
if (slow == 4){
   currentFrame++;
   slow = 0;
 }
slow++
}

 

Postado
48 minutos atrás, Flávio Pedroza disse:

Use uma "flag"

 


int flag = 0; //declarar no escopo adequado

if (currentFrame == 9){
currentFrame = 0;
flag = 0;
// Qaundo o 'currentFrame == 1', execute uma ação somente uma vez
// Neste loop o 1 é repetido 4 vezes, preciso que execute a ação somente no primeiro 1
}else{
if ((!flag) && (currentFrame ==1))
{ 
	//faça o que tem de fazer
	flag = 1; //vai impedir de executar novamente
}
if (slow == 4){
   currentFrame++;
   slow = 0;
 }
slow++
}

 

 

Como Flávio disse, tente algo assim

 

Veja esse resultado

[0][0][0][0][1][1][1][1][2][2][2][2][3]
ACAO para a posicao 3
[3][3][3][4][4][4][4][5][5][5][5]

Para esse ambicioso programa

#include    <iostream>

using namespace std;

void DoAction(int p)
{
    cout << endl << "ACAO para a posicao " << p << endl;
}

int main()
{
    int posições[] = {
        0,0,0,0,
        1,1,1,1,
        2,2,2,2,
        3,3,3,3,
        4,4,4,4,
        5,5,5,5
    };
    int aquela = 3;
    bool rodei = false;
    for (auto posicao : posições)
    {
        cout << "[" << posicao << "]" << flush;
        if (rodei) continue;
        if (posicao == aquela)
        {
            DoAction(posicao);
            rodei = true;
        };
    };
    return 0;
};    // end main()

:D Espero que ajude

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...