Sistema Random.Ragen.
2 participantes
Página 1 de 1
Sistema Random.Ragen.
Marcos criei um quis e queria usar o sistema Random Range. Para fazer perguntas, mais ele repete a pergunta que já foi feita. Como fazer o sistema sortear e não repetir entre as 10 perguntas. joaonatalinosouza@gmail.com
Muito obrigado pela sua atenção. !!
Muito obrigado pela sua atenção. !!
carlos antonio s- Iniciante
- PONTOS : 3378
REPUTAÇÃO : 1
Re: Sistema Random.Ragen.
Cara, para isto acontecer você vai ter que adicionar o número da pergunta a uma lista... que é diferente de Array.
Cada pergunta já sorteada, você da o comando "nomeDalista.Add(numeroDaPergunta);"
supondo que seja uma lista de "int"
Depois, na hora do sorteio das perguntas, você deve checar se a pergunta recem sorteada já está na lista ou não... se já está, chama o sorteio denovo
Se tiver o script fica mais facil de ajudar :D
Cada pergunta já sorteada, você da o comando "nomeDalista.Add(numeroDaPergunta);"
supondo que seja uma lista de "int"
Depois, na hora do sorteio das perguntas, você deve checar se a pergunta recem sorteada já está na lista ou não... se já está, chama o sorteio denovo
Se tiver o script fica mais facil de ajudar :D
Sistema Random.Ragen.
Marcos estou lê enviando o script.
Se você puder me ajudar agradeço muito.
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
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; // armazenas todas as perguntas
public string[] alternativaA; // armazenas todas as alternativas A
public string[] alternativaB; // armazenas todas as alternativas B
public string[] alternativaC; // armazenas todas as alternativas C
public string[] alternativaD; // armazenas todas as alternativas D
public string[] corretas; // armazenas todas as corretas
private int idPergunta;
private float acertos;
private float questoes;
private float media;
private int notaFinal;
// Use this for initialization
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 + 0).ToString()+ " de "+questoes.ToString()+" Perguntas.";
}
public void resposta(string alternativa)
{
if (alternativa == "A")
{
if(alternativaA[idPergunta] == corretas[idPergunta]) // EXECUTA O COMANDO PARA RESPOSTA A
{
acertos += 1;
}
}
else if (alternativa == "B")
{
if(alternativaB[idPergunta] == corretas[idPergunta]) // EXECUTA O COMANDO PARA RESPOSTA B
{
acertos += 1;
}
}
else if (alternativa == "C")
{
if(alternativaC[idPergunta] == corretas[idPergunta]) // EXECUTA O COMANDO PARA RESPOSTA C
{
acertos += 1;
}
}
else if (alternativa == "D")
{
if(alternativaD[idPergunta] == corretas[idPergunta]) // EXECUTA O COMANDO PARA RESPOSTA D
{
acertos += 1;
}
}
procimaPergunta ();
}
void procimaPergunta()
{
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 () + " Perguntas.";
}
else
{
media = 10 *(acertos / questoes);
notaFinal = Mathf.RoundToInt(media);
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");
}
}
}
Se você puder me ajudar agradeço muito.
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
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; // armazenas todas as perguntas
public string[] alternativaA; // armazenas todas as alternativas A
public string[] alternativaB; // armazenas todas as alternativas B
public string[] alternativaC; // armazenas todas as alternativas C
public string[] alternativaD; // armazenas todas as alternativas D
public string[] corretas; // armazenas todas as corretas
private int idPergunta;
private float acertos;
private float questoes;
private float media;
private int notaFinal;
// Use this for initialization
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 + 0).ToString()+ " de "+questoes.ToString()+" Perguntas.";
}
public void resposta(string alternativa)
{
if (alternativa == "A")
{
if(alternativaA[idPergunta] == corretas[idPergunta]) // EXECUTA O COMANDO PARA RESPOSTA A
{
acertos += 1;
}
}
else if (alternativa == "B")
{
if(alternativaB[idPergunta] == corretas[idPergunta]) // EXECUTA O COMANDO PARA RESPOSTA B
{
acertos += 1;
}
}
else if (alternativa == "C")
{
if(alternativaC[idPergunta] == corretas[idPergunta]) // EXECUTA O COMANDO PARA RESPOSTA C
{
acertos += 1;
}
}
else if (alternativa == "D")
{
if(alternativaD[idPergunta] == corretas[idPergunta]) // EXECUTA O COMANDO PARA RESPOSTA D
{
acertos += 1;
}
}
procimaPergunta ();
}
void procimaPergunta()
{
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 () + " Perguntas.";
}
else
{
media = 10 *(acertos / questoes);
notaFinal = Mathf.RoundToInt(media);
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");
}
}
}
carlos antonio s- Iniciante
- PONTOS : 3378
REPUTAÇÃO : 1
Re: Sistema Random.Ragen.
Peço que teste isto:
Não sei se vai funcionar pois não testei colocando canvas e textos, etc...
O script está bem estrutorado, más onde você chama a proxima pergunta depois de responder a atual?
- Código:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;
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; // armazenas todas as perguntas
public string[] alternativaA; // armazenas todas as alternativas A
public string[] alternativaB; // armazenas todas as alternativas B
public string[] alternativaC; // armazenas todas as alternativas C
public string[] alternativaD; // armazenas todas as alternativas D
public string[] corretas; // armazenas todas as corretas
private int idPergunta;
private int acertos;
private int questoes;
private float media;
private int notaFinal;
private List<int> PerguntasJaSorteadas = new List<int>();
void Start () {
idTema = PlayerPrefs.GetInt("idTema");
questoes = Perguntas.Length;
idPergunta = Random.Range (0, questoes);
PerguntasJaSorteadas.Add (idPergunta);
Pergunta.text = Perguntas [idPergunta];
RespostaA.text = alternativaA [idPergunta];
RespostaB.text = alternativaB [idPergunta];
RespostaC.text = alternativaC [idPergunta];
RespostaD.text = alternativaD [idPergunta];
infoRespostas.text = " Respondendo "+(idPergunta + 0).ToString()+ " de "+questoes.ToString()+" Perguntas.";
}
public void resposta(string alternativa){
if (alternativa == "A") {
if(alternativaA[idPergunta] == corretas[idPergunta]){ // EXECUTA O COMANDO PARA RESPOSTA A
acertos += 1;
}
}
else if (alternativa == "B") {
if(alternativaB[idPergunta] == corretas[idPergunta]){ // EXECUTA O COMANDO PARA RESPOSTA B
acertos += 1;
}
}
else if (alternativa == "C") {
if(alternativaC[idPergunta] == corretas[idPergunta]){ // EXECUTA O COMANDO PARA RESPOSTA C
acertos += 1;
}
}
else if (alternativa == "D") {
if(alternativaD[idPergunta] == corretas[idPergunta]){ // EXECUTA O COMANDO PARA RESPOSTA D
acertos += 1;
}
}
sortearNumero ();
}
void sortearNumero (){
idPergunta = Random.Range (0, questoes);
for (int x = 0; x < questoes; x++) {
if(idPergunta != PerguntasJaSorteadas[x]){
PerguntasJaSorteadas.Add(idPergunta);
procimaPergunta();
return;
}
}
}
void procimaPergunta() {
if (PerguntasJaSorteadas.Count <= (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 () + " Perguntas.";
}
else{
media = 10 *(acertos / questoes);
notaFinal = Mathf.RoundToInt(media);
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");
}
}
}
Não sei se vai funcionar pois não testei colocando canvas e textos, etc...
O script está bem estrutorado, más onde você chama a proxima pergunta depois de responder a atual?
Re: Sistema Random.Ragen.
Boa noite marcos eu lhe agradeço muito pela a atenção que me deu e veio
Lhe informar que testei mais o código repetiu as mesmas perguntas entre as 10.muito obrigado.
Lhe informar que testei mais o código repetiu as mesmas perguntas entre as 10.muito obrigado.
carlos antonio s- Iniciante
- PONTOS : 3378
REPUTAÇÃO : 1
Tópicos semelhantes
» Qual o melhor sistema sistema de anuncios para android?
» Como criar sistema de Habilidades (Skills) para o personagem 2D / e sistema de batalha 2D
» Random Maze
» Posso usar o sistema de marcas de derrapagem como base para outro sistema?
» Como fazer Sistema Dia e Noite Segui o sistema de Hora
» Como criar sistema de Habilidades (Skills) para o personagem 2D / e sistema de batalha 2D
» Random Maze
» Posso usar o sistema de marcas de derrapagem como base para outro sistema?
» Como fazer Sistema Dia e Noite Segui o sistema de Hora
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos