Ir ao conteúdo

Posts recomendados

Postado

Boa tarde, alguém poderia me ajudar? Sou iniciante e estou tentando criar um jogo da velha com leds.. Meu problema esta em fazer as combinações de vitória led 123 /456 /789 /147/ 258.. e assim vai ..Eu escrevi a linha de comando de diversas, maneiras mas não consigo fazer o compilador entender minha lógica. a ultima que escrevi foi:

if ((verde[1])&&(verde[4])&&(verde[7]) == HIGH) {

vitoria(); // chama a função de vitória

}

Alguém pode me ajudar?

preciso ao menos entender como posso fazer as combinações..

Estou utilizando 2 vetores para o jogo, um armazena os leds vermelhos e outro os leds verdes.
Obs: pensei em fazer utilizando matrizes, mas na minha cabeça pareceu mais fácil com vetores.

 

 

  • Amei 1
Postado

@anderson augusto ferrari       Ali no if você precisa colocar dois sinais de igualdade para cada opção , que pode ser assim :

if(verde[1] == HIGH && verde[4] == HIGH && verde[7] == HIGH){

}

matriz e vetor são as mesmas coisas , apenas que com vetores você vai precisar de duas variáveis , pois a matriz é a união de dois ou mais vetores , e com isso usaria apenas uma variável .  e a questão dos comandos por voz é que me parece difícil  .

Postado

 

Está um pouco longe de funcionar ainda. O compilador não entende contexto. Você precisa repetir a condição completa em cada teste com @devair1010 mostrou acima. Recomendo sempre usar parenteses e não confiar na memória da precedência de operadores. Mais seguro e mais claro.

 

Para testar as combinações de vitória com um jogo assim simples, talvez você mais fácil você simplesmente salvar as combinações vencedoras. O grupo todo. E testar de uma vez.

 

Nem sei como fazer isso. Qualquer estrutura serve. Imagine uma string com letras e 'R' para vermelho, 'G' para verde e '.' para livre e um vetor de strings com as combinações vendedoras, por exemplo. Como tanto faz qual a cor para alguém vencer, coisas como

    combinações de vitória led 123 /456 /789 /147/ 258

podem ser expressas por 

	const char endGame[5][10] =
	{	// combinacoes de fim de jogo
		" XXX......",
		" ...XXX...",
		" ......XXX",
		" X..X..X..",
		" .X..X..X.",
	};

Dois vetores para o jogo é talvez exagero. Talvez algo associado à representação acima fosse mais fácil de entender e por consequência programar...

  • Curtir 2
Postado

@devair1010 Em relação aos comandos de voz, meu módulo contém apenas 5 comandos e estão separados em um switch case.
O usuário pode dizer o comando MAIOR para avançar do 1 ao 9.. ou MENOR para retroceder. Ao selecionar o bloco desejado o usuário utiliza o comando PRONTO para fixar a cor do bloco. Por conta dos comandos de voz eu decidi não trabalhar com matriz, na minha cabeça não consegui imaginar tanto sucesso para desenvolver.
Ainda assim, como estou aprendendo a codificar em C++, enfrento muitas dificuldades 😕 
Eu vi que algumas pessoas utilizam True e False para fazer as combinações, mas não sei exatamente como aplicar isso.

 

  • Curtir 1
Postado
11 minutos atrás, anderson augusto ferrari disse:

O usuário pode dizer o comando MAIOR para avançar do 1 ao 9.. ou MENOR para retroceder. Ao selecionar o bloco desejado o usuário utiliza o comando PRONTO para fixar a cor do bloco

 

Em geral os números são as primeiras palavras a serem programadas nas bibliotecas de speech rec. E "sim", "não", "OK" e CANCELA ... Então talvez fosse mais simples usar os números mesmo...

 

14 minutos atrás, anderson augusto ferrari disse:

Por conta dos comandos de voz eu decidi não trabalhar com matriz, na minha cabeça não consegui imaginar tanto sucesso para desenvolver

 

Não entendo que ligação possa ter entre o modo como um comando é reconhecido e a implementação. No final tudo vai acabar em [posicao]. Se estiver livre ocupa. Se venceu acabou. E a cor é a cor da vez. Ou não?

 

 

  • Curtir 1
Postado
50 minutos atrás, anderson augusto ferrari disse:

@arfneto Eu me refiro mais a conhecimento, embora ambos sejam possíveis, e matriz seja até o mais indicado.. eu não tenho tanta facilidade em utilizar matrizes, por isso pensei em seguir com vetores apenas.. é possível fazer só com vetores , não ?
Fico um pouco perdido.

 

Não faz diferença. Pode usar mesmo uma string, que é um vetor, e colocar as letras lá dentro como te mostrei. Pode usar uma matriz 3x3 claro, mas não vejo vantagem. Pode usar qualquer coisa com 3 estados --- livre, 1 e 2 --- e 9 células e estará bem.

  • Curtir 1
Postado
3 horas atrás, anderson augusto ferrari disse:

 


if ((verde[1])&&(verde[4])&&(verde[7]) == HIGH) {

vitoria(); // chama a função de vitória

}

 

 

O operador de comparação == tem precedência sobre o operador lógico &&, então este if não vai funcionar corretamente, imagino que você queria fazer:

 

if ((verde[1] && verde[4] && verde[7]) == HIGH) {

    vitoria(); // chama a função de vitória

}

Mas não sei que valor HIGH tem, seria 1? Ou 0? Ou 10?...

 

Então eu preferiria simplesmente fazer:

if (verde[1] && verde[4] && verde[7]) {

    vitoria(); // chama a função de vitória

}

 

 

E você pode fazer ciclos para comparar colunas, linhas, e um if para cada diagonal assim:

// Verifica linhas;
for(i=0; i<3; i++){
    if(verde[i*3] && verde[i*3+1] && verde[i*3+2]){
        vitoria();
    }
}

// Verifica Colunas:
for(i=0; i<3; i++){
    if(verde[i] && verde[i+3] && verde[i+6]){
        vitoria();
    }
}

// Verifica Diagonal Principal:
if(verde[0] && verde[4] && verde[8]){
    vitoria();
}

// Verifica Diagonal Secundária
if(verde[2] && verde[4] && verde[6]){
    vitoria();
}

 

adicionado 12 minutos depois

Isso tudo assumindo que os valores guardados no vetor verde são 0 (=falso) quando verde não jogou na posição, e algo diferente de 0 (=verdadeiro) quando verde já jogou nada na posição.

  • Curtir 1

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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!