• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

carvalhoxd

Projecto final de ano - Quiz

21 mensagens neste tópico

Boas a todos

Estou agora no 12º no curso de informática e gestão, e como tal tenho de fazer um projecto de final de ano (ainda e um bocado cedo mas pronto lOl), estava a pensar em fazer um Quiz em c++.

O programa seria compostos com uma serie de perguntas guardadas em painéis e ao responder a pergunta certa esse painel ficaria invisível e o seguinte visível, por exemplo estava a pensar em ter umas 100 perguntas e o programa dar 50 perguntas aleatórias sem as repetir. Cada pergunta teria 4 respostas e estava a pensar em por umas 3 ajudas

A minha principal duvida e como que faço para o programa dar a perguntas aleatórias sem as repetir.

projectop.png

(a imagem para jogar e tal só aparece no inicio)

Gostaria de saber o que acham do projecto e dêem as vossas ideias.  ;)

Cumps e ate breve  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A ideia é fixe.

Há um projecto semelhante de outro membro do fórum, q é o Quem quer ser milionário (Se bem me lembro vb .net).

Podes inspirar-te nalgumas ideias dele.

Quanto à pergunta aleatória podes fazer de várias maneiras. Se estiveres a usar bases de dados, podes ir buscar o valor aleatorio logo à base de dados.

Para o caso, penso q um ficheiro de texto chega e sobra para fazer de base de dados, nesse caso se tiveres um id numérico associado a cada pergunta, podes gerar um numero aleatorio tb do lado do c++.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim por acaso vi esse projecto.

mas por exemplo gero um numero aleatorio depois como faso para ele nao se repetir ?

sera que da para fazer uma funçao que cada vez que responda a uma pergunta abra a funçao que gera o id da pergunta e testa se ja saiu ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podes guardar numa colecção (ex: Vector) os ids q já saíram.

Cada vez q geras um id novo verificas se já saíu e adicionas à colecção.

Assim garantes q n sai 2x a mesma pergunta.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que acontecia se quisesses ter 1000 perguntas? Fazias 1000 painéis?

E se quisesses 10000000 perguntas?

Basta arranjares uma condição comum para todas as perguntas e podes utilizar sempre os mesmos objectos.

Por exemplo, se todas as perguntas tivessem em comum uma descrição para a pergunta e 4 respostas possíveis, conseguias fazer 100000000000000000000000000+inf perguntas apenas com 5 labels.

É uma questão de teres a informação das perguntas organizada, digamos por exemplo num ficheiro de texto não formatado.

A questão do aleatório sem repetição é tão simples como, por exemplo, retirares a pergunta que se acabou de responder de uma lista de onde as estás a sortear:

Carregas a informação das perguntas numa lista e sorteias a pergunta a partir dos itens dessa lista.

Quando se dá uma resposta, e depois de fazeres o que pretendes com a resposta, retiras a pergunta da lista. No próximo sorteio já não há hipótese de ela aparecer.

Uma sugestão de formato dos dados no ficheiro seria:

Pergunta;Resposta1;Resposta2;Resposta3;Resposta4;Nº_resposta_correcta

exemplo:

Qual a fórmula química da água?;Likido+;AGµȺ;H2O;ɯʘɭɦɅ;3

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tb concordo q um painel é suficiente.

A ideia de retirar a pergunta da lista é boa.

Mas se for jogado por mais q um jogador, evita q os outros jogadores possam ter essa pergunta tb.

Se as perguntas tiverem id, é possivel evitar q essa pergunta saia apenas ao jogador q já a respondeu.

Isso agora depende de qual for o objectivo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

xD obrigado pelas ideias se calhar fico pelos paineis nao sao muitas perguntas e para nao se repetirem tou a pensar numa funçao,

cada vez que se responde a correta abre a funçao que gera o ID e testa, um ciclo while que testa se ja saiu , cada vez que a pergunta saia e atribuido um '1' ao painel, se ainda nao foi jogada tem '0'

 
x = numero aleatorio
while(idperg[x] == 1 ) 
{
gera outro id
}

painel[x]->visible = true ;              

                

sera que funciona ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Funcionar funciona. Mas estás a criar paineis desnecessariamente.

O objectivo é mudar o conteudo de um painel, e não criar vários para mostrar e esconder.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Da mesma maneira q estás a pensar povoar os paineis individualmente.

Só q agora, em vez de criares um novo, alteras o texto do painel para os valores da nova pergunta.

E assim reaproveitas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao tou mesmo apanhar, podes fazer ai um exemplo

label1->text = " pergunta 1 " e assim ? ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:P

Preciso fazer um quiz com janela Windows, não DOS.

É difícil encontrar algo a respeito na internet.

Alguém pode escrever o código-fonte ou enviar?

Ou quem sabe iniciar um projeto do início ao fim aqui pelo fórum mesmo.

Pode ser com uma tela inicial e 2 questões!

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mesmo.

Para além disso, este post trata de um quiz com GUI e não em linha de comandos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:cheesygrin:

Bruno1234.

Tu entendeste errado, meu querido.

Não estou pedindo que façam o meu trabalho, e sim que compartilhem conhecimento. É uma questão de visão.

Preciso de um código em que possa me basear e estudar.

Como poderei aprender essa parte se não há material na internet.

Assim como eu, há muitos querendo saber, pois encontrei todos em DOS (sinal de que não sabem em Windows).

A proposta foi construir do início ao fim um quiz básico através deste fórum, com a finalidade de ser público.

Nada melhor de que um lugar de encontro de programadores!

Não podemos usar um fórum apenas para criticarmos, escrever mensagens sem rumo, etc.

Vamos evoluir juntos!

Abração.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:cheesygrin:

Não deixem o C++ morrer!

Sabemos que há poucos programadores bons em relação a outras linguagens.

Por ser uma linguagem que demanda muito estudo e que não se encontra materiais completos (a não ser nos livros de destaque bem caros).

Ou por guardarmos nosso conhecimento para nós mesmos (e assim ficando sozinhos e perdendo espaço).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas pessoal

Já tenho isto cause tudo feito :biggrin: agora só me falta arranjar mais perguntas, alguém sabe onde arranjar perguntas e respostas de temas variados?

Obrigado  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não conheces ninguém que tenha um Trivial Pursuit ?

Há porradas de perguntas aí :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora