Ajuda
2 participantes
Página 1 de 1
Ajuda
Boa noite pessoal.
estou desenvolvendo um jogo de quiz, e estou com um probleminha na programação, quando o usuário responde a pergunta ele passa para a próxima pergunta sem dizer ao usuário se ele acertou ou errou.
eu gostaria que quando ele pressionasse o botão, um V de verdadeiro ou um X erro aparecesse na tela e depois fosse para a próxima pergunta, ou que o botão mudasse de cor dependendo da resposta do usuário, verde ou vermelha.
A unica forma de retribuir a quele(s) que me ajudarem é colocando o seu nome como desenvolvedor do jogo, lá na aba de créditos, o jogo será gratuito e pra Android.
linguagem de programação C#.
desde de já agradeço pela atenção de todos.
estou desenvolvendo um jogo de quiz, e estou com um probleminha na programação, quando o usuário responde a pergunta ele passa para a próxima pergunta sem dizer ao usuário se ele acertou ou errou.
eu gostaria que quando ele pressionasse o botão, um V de verdadeiro ou um X erro aparecesse na tela e depois fosse para a próxima pergunta, ou que o botão mudasse de cor dependendo da resposta do usuário, verde ou vermelha.
A unica forma de retribuir a quele(s) que me ajudarem é colocando o seu nome como desenvolvedor do jogo, lá na aba de créditos, o jogo será gratuito e pra Android.
linguagem de programação C#.
desde de já agradeço pela atenção de todos.
joandersonPe- Iniciante
- PONTOS : 3184
REPUTAÇÃO : 0
Respeito as regras :
Re: Ajuda
como voce esta gerando as perguntas?
Voce pode criar um array com as respostas certas e comparar com as respostas do usuario, por exemplo se a resposta da 1 pergunta for "A" entao no array de respostas certas voce pode colocar um 0 que significa "A" e comparar com a resposta do usuario, caso for "B" use 1, "C" 2 ...
Isso pode depender um pouco se seu quiz tem perguntas aleatorias ou se é sempre as mesmas perguntas na mesma ordem ...
Voce pode criar um array com as respostas certas e comparar com as respostas do usuario, por exemplo se a resposta da 1 pergunta for "A" entao no array de respostas certas voce pode colocar um 0 que significa "A" e comparar com a resposta do usuario, caso for "B" use 1, "C" 2 ...
Isso pode depender um pouco se seu quiz tem perguntas aleatorias ou se é sempre as mesmas perguntas na mesma ordem ...
Re: Ajuda
o problema é que eu não manjo muito bem de programação, e eu usei no código as condições simplificadas, o jogo funciona bem, porem o usuário ao responder a pergunta ele não sabe se acertou ou errou, ele só fica sabendo acertou no final depois de responder umas 20 perguntas.
joandersonPe- Iniciante
- PONTOS : 3184
REPUTAÇÃO : 0
Respeito as regras :
Re: Ajuda
as perguntas sao aleatorias ou sempre as mesmas?
se for sempre as mesmas voce apenas cria um array de int com as respostas certas e outro com as respostas do usuario, cada vez que o usuario responde uma voce altera o valor do array do usuario, e então ocmpare com o array de respostas certas e se ambos tiverem o mesmo numero entao ele acertou...
se possivel poste o script aki pra tentarmos entender como voce esta fazendo o script
se for sempre as mesmas voce apenas cria um array de int com as respostas certas e outro com as respostas do usuario, cada vez que o usuario responde uma voce altera o valor do array do usuario, e então ocmpare com o array de respostas certas e se ambos tiverem o mesmo numero entao ele acertou...
se possivel poste o script aki pra tentarmos entender como voce esta fazendo o script
Re: Ajuda
Bem amigo, todas as perguntas e respostas estão dentro de um vetor [] uma variavel a, b, c, e d.
meu problema esta aqui neste trecho de código que vai do a ao d.
public void resposta(string alternativa){
if (alternativa == "A") { // EXECUTA O COMANDO PARA A RESPOSTA A caso ela seja verdadeira
if(alternativaA[idPergunta] == corretas[idPergunta]){
acertos += 1;
}
// EXECUTA O COMANDO PARA A RESPOSTA A caso ela seja verdadeira
//else if(alternativaA[idPergunta] != corretas[idPergunta]){
// }
ele lé a pergunta do usuário, mais não diz se ela esta certa ou errada, e passa para a próxima pergunta, já tentei varias coisas e nada, vai fazer uns 3 meses que estou tentando e nada.
a parte do final do código que esta comentada foi minha tentativa final para ver se dava certo e nada.
meu problema esta aqui neste trecho de código que vai do a ao d.
public void resposta(string alternativa){
if (alternativa == "A") { // EXECUTA O COMANDO PARA A RESPOSTA A caso ela seja verdadeira
if(alternativaA[idPergunta] == corretas[idPergunta]){
acertos += 1;
}
// EXECUTA O COMANDO PARA A RESPOSTA A caso ela seja verdadeira
//else if(alternativaA[idPergunta] != corretas[idPergunta]){
// }
ele lé a pergunta do usuário, mais não diz se ela esta certa ou errada, e passa para a próxima pergunta, já tentei varias coisas e nada, vai fazer uns 3 meses que estou tentando e nada.
a parte do final do código que esta comentada foi minha tentativa final para ver se dava certo e nada.
joandersonPe- Iniciante
- PONTOS : 3184
REPUTAÇÃO : 0
Respeito as regras :
Re: Ajuda
Só com essa parte do codigo fica meio dificil ajudar, e uma dica quando for postar script click no botao 'SCRIPT' e nele vai aparecer um quadrado entao só colar o script nele que fica mais facil de ler.
De qualquer forma eu tentaria fazer um pouco diferente do que voce esta fazendo(mais ou menos assim):
Ou seja criei um array de string com as alternativas corretas, e outro com as alternativas do usuario, e no metodo Responder eu altero o array do usuario com base no que ele respondeu, entao verifico se o que ele respondeu bate com a resposta correta...
Então com esse exemplo voce teria que chamar o metodo Responder por botoes ou outro elemento UI.
Tente entender o exemplo e aplique no seu codigo.
De qualquer forma eu tentaria fazer um pouco diferente do que voce esta fazendo(mais ou menos assim):
- Código:
public class Exemplo: MonoBehaviour{
public string[]respostasCertas = {"A","D","B","A","C"};
public string[]respostasUsuario = {"","","","",""};
int indiceAtual = 0;
int acertos = 0;
public void Responder(string alternativa){
respostasUsuario[indiceAtual] = alternativa;
if(respostasCertas[indiceAtual] == respostasUsuario[indiceAtual]){
acertos++;
print("Voce acertou");
}
else
{
print("Voce errou");
}
indiceAtual++;
}
}
Ou seja criei um array de string com as alternativas corretas, e outro com as alternativas do usuario, e no metodo Responder eu altero o array do usuario com base no que ele respondeu, entao verifico se o que ele respondeu bate com a resposta correta...
Então com esse exemplo voce teria que chamar o metodo Responder por botoes ou outro elemento UI.
Tente entender o exemplo e aplique no seu codigo.
Re: Ajuda
Obrigado pelas dicas amigo.
O seu código, é bem interessante.
vou tentar compreender ele melhor e ver se vai funcionar no quiz.
Bem.
Este é o código que fis, como avia dito, ele funciona bem, mais não diz ao usuário se ele acertou ou errou a pergunta, só mostra no final o quanto de resposta ele acertou.
exemplo: 20 de 30, 12 de 30 e etc...
Manda teu nome completo lá para o meu email.
public class responder : MonoBehaviour {
private int idTema;
public Text pergunta;
public Text respostaA;
public Text respostaB;
public Text respostaC;
public Text respostaD;
public Text infoRespostas;
public string[] perguntas; // armazena todas as perguntas
public string[] alternativaA; // armazena todas as alternativa A
public string[] alternativaB; // armazena todas as alternativa B
public string[] alternativaC; // armazena todas as alternativa C
public string[] alternativaD; // armazena todas as alternativa D
public string[] corretas; // armazena as alternativa corretas
private int idPergunta;
private float acertos;
private float questoes;
private float media;
private int notaFinal;
void Start () {
idTema = PlayerPrefs.GetInt("idTema");
idPergunta = 0;
questoes = perguntas.Length;
pergunta.text = perguntas [idPergunta];
respostaA.text = alternativaA [idPergunta];
respostaB.text = alternativaB [idPergunta];
respostaC.text = alternativaC [idPergunta];
respostaD.text = alternativaD [idPergunta];
infoRespostas.text = " Respondendo "+(idPergunta + 1).ToString()+" de "+questoes.ToString()+" Salmos.";
}
public void resposta(string alternativa){
if (alternativa == "A") { // EXECUTA O COMANDO PARA A RESPOSTA A caso ela seja verdadeira (certa)
if(alternativaA[idPergunta] == corretas[idPergunta]){
acertos += 1;
}
// EXECUTA O COMANDO PARA A RESPOSTA A caso ela seja falsa (errada)
//else if(alternativaA[idPergunta] != corretas[idPergunta]){
// }
}
else if (alternativa == "B") { // EXECUTA O COMANDO PARA A RESPOSTA B
if(alternativaB[idPergunta] == corretas[idPergunta]){
acertos += 1;
}
//else if(alternativaA[idPergunta] != corretas[idPergunta]){
//}
}
else if (alternativa == "C") { // EXECUTA O COMANDO PARA A RESPOSTA C
if (alternativaC [idPergunta] == corretas [idPergunta]) {
acertos += 1;
}
//else if(alternativaA[idPergunta] != corretas[idPergunta]){
//}
}
else if (alternativa == "D") { // EXECUTA O COMANDO PARA A RESPOSTA D
if(alternativaD[idPergunta] == corretas[idPergunta]){
acertos += 1;
}
//else if(alternativaA[idPergunta] != corretas[idPergunta]){
//}
}
proxima_pergunta ();
}
void proxima_pergunta(){
idPergunta += 1;
if (idPergunta <= (questoes - 1)) {
pergunta.text = perguntas [idPergunta];
respostaA.text = alternativaA [idPergunta];
respostaB.text = alternativaB [idPergunta];
respostaC.text = alternativaC [idPergunta];
respostaD.text = alternativaD [idPergunta];
infoRespostas.text = " Respondendo " + (idPergunta + 1).ToString () + " de " + questoes.ToString () + " Salmos.";
}
else {
media = 10 * (acertos / questoes); //calcula a media com base no percentual de acerto
notaFinal = Mathf.RoundToInt (media); //arredonda a nota para o próximo inteiro, segundo as regras da matemática
if(notaFinal > PlayerPrefs.GetInt("notaFinal"+idTema.ToString())){
PlayerPrefs.SetInt ("notaFinal" + idTema.ToString (), notaFinal);
PlayerPrefs.SetInt ("acertos" + idTema.ToString (), (int) acertos);
}
PlayerPrefs.SetInt ("notaFinalTemp" + idTema.ToString (), notaFinal);
PlayerPrefs.SetInt ("acertosTemp" + idTema.ToString (), (int) acertos);
Application.LoadLevel ("notaFinal");
}
}
}
O seu código, é bem interessante.
vou tentar compreender ele melhor e ver se vai funcionar no quiz.
Bem.
Este é o código que fis, como avia dito, ele funciona bem, mais não diz ao usuário se ele acertou ou errou a pergunta, só mostra no final o quanto de resposta ele acertou.
exemplo: 20 de 30, 12 de 30 e etc...
Manda teu nome completo lá para o meu email.
public class responder : MonoBehaviour {
private int idTema;
public Text pergunta;
public Text respostaA;
public Text respostaB;
public Text respostaC;
public Text respostaD;
public Text infoRespostas;
public string[] perguntas; // armazena todas as perguntas
public string[] alternativaA; // armazena todas as alternativa A
public string[] alternativaB; // armazena todas as alternativa B
public string[] alternativaC; // armazena todas as alternativa C
public string[] alternativaD; // armazena todas as alternativa D
public string[] corretas; // armazena as alternativa corretas
private int idPergunta;
private float acertos;
private float questoes;
private float media;
private int notaFinal;
void Start () {
idTema = PlayerPrefs.GetInt("idTema");
idPergunta = 0;
questoes = perguntas.Length;
pergunta.text = perguntas [idPergunta];
respostaA.text = alternativaA [idPergunta];
respostaB.text = alternativaB [idPergunta];
respostaC.text = alternativaC [idPergunta];
respostaD.text = alternativaD [idPergunta];
infoRespostas.text = " Respondendo "+(idPergunta + 1).ToString()+" de "+questoes.ToString()+" Salmos.";
}
public void resposta(string alternativa){
if (alternativa == "A") { // EXECUTA O COMANDO PARA A RESPOSTA A caso ela seja verdadeira (certa)
if(alternativaA[idPergunta] == corretas[idPergunta]){
acertos += 1;
}
// EXECUTA O COMANDO PARA A RESPOSTA A caso ela seja falsa (errada)
//else if(alternativaA[idPergunta] != corretas[idPergunta]){
// }
}
else if (alternativa == "B") { // EXECUTA O COMANDO PARA A RESPOSTA B
if(alternativaB[idPergunta] == corretas[idPergunta]){
acertos += 1;
}
//else if(alternativaA[idPergunta] != corretas[idPergunta]){
//}
}
else if (alternativa == "C") { // EXECUTA O COMANDO PARA A RESPOSTA C
if (alternativaC [idPergunta] == corretas [idPergunta]) {
acertos += 1;
}
//else if(alternativaA[idPergunta] != corretas[idPergunta]){
//}
}
else if (alternativa == "D") { // EXECUTA O COMANDO PARA A RESPOSTA D
if(alternativaD[idPergunta] == corretas[idPergunta]){
acertos += 1;
}
//else if(alternativaA[idPergunta] != corretas[idPergunta]){
//}
}
proxima_pergunta ();
}
void proxima_pergunta(){
idPergunta += 1;
if (idPergunta <= (questoes - 1)) {
pergunta.text = perguntas [idPergunta];
respostaA.text = alternativaA [idPergunta];
respostaB.text = alternativaB [idPergunta];
respostaC.text = alternativaC [idPergunta];
respostaD.text = alternativaD [idPergunta];
infoRespostas.text = " Respondendo " + (idPergunta + 1).ToString () + " de " + questoes.ToString () + " Salmos.";
}
else {
media = 10 * (acertos / questoes); //calcula a media com base no percentual de acerto
notaFinal = Mathf.RoundToInt (media); //arredonda a nota para o próximo inteiro, segundo as regras da matemática
if(notaFinal > PlayerPrefs.GetInt("notaFinal"+idTema.ToString())){
PlayerPrefs.SetInt ("notaFinal" + idTema.ToString (), notaFinal);
PlayerPrefs.SetInt ("acertos" + idTema.ToString (), (int) acertos);
}
PlayerPrefs.SetInt ("notaFinalTemp" + idTema.ToString (), notaFinal);
PlayerPrefs.SetInt ("acertosTemp" + idTema.ToString (), (int) acertos);
Application.LoadLevel ("notaFinal");
}
}
}
joandersonPe- Iniciante
- PONTOS : 3184
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» Ajuda Urgente como chamo a animação no script alguém poderia dar uma ajuda???
» [AJUDA]Preciso de ajuda em um script relacionado ao vídeo Sistema de escolha de personagen
» [Ajuda] Preciso de ajuda para controlar e alterar o valor de Lerp de varios objetos
» [AJUDA]Quero Ajuda poque esse script so da erro!
» Ajuda com uma IA
» [AJUDA]Preciso de ajuda em um script relacionado ao vídeo Sistema de escolha de personagen
» [Ajuda] Preciso de ajuda para controlar e alterar o valor de Lerp de varios objetos
» [AJUDA]Quero Ajuda poque esse script so da erro!
» Ajuda com uma IA
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos