Quiz - Pontuação - Visual Basic .NET - Portugal-a-Programar
Quiz - Pontuação
Por .EXO, 15 de Abril de 2009 em Visual Basic .NET
.EXO 0
Bem... eu ainda sou bastante verde nestas andanças e para aprender a fazer algumas coisas estou a tentar fazer uma pequena quiz.
A quiz funciona assim:
Aparece uma pergunta numa form, selecciono a resposta em quatro possibilidades e carrego em "próxima", depois de carregar a form desaparece e aparece uma nova com uma nova pergunta.
A parte de por a aparecer e a desaparecer e isso já está mas agora estou com dois problemas.
1º - Como é que eu faço para se escolher a resposta certa ter X pontos e se errar 0 pontos e depois no final aparecer a pontuação final numa TextBox?
2º - Como é que faço para aparecer uma janela a dizer "Erro" se não se escolher nenhuma resposta?
Desde já obrigado^^
1º - Fazes, na primeira form:
Public Property pontuacao() As Integer
Depois verificas se a resposta é a correcta, então adicionas-lhe a pontuação, senão não adicionas.
MessageBox.Show("A resposta está errada!");
-Crias uma variável para a pontuação:
dim pontuacao as integer
-Depois vais somando pontos se a resposta estiver certa:
dim resposta_certa as boolean=false
if resposta_certa=true then
pontuacao += 1 (ou outro valor, depende dos pontos que queiras dar)
Não sei bem com o que estás a trabalhar, pode ser com checkbox, radiobutton, ...
Por isso vou dizero código do programa todo em geral:
-Se não estiverem seleccionadas respostas então:
dim resposta_seleccionada as boolean=false
if resposta_seleccionada=true then
'verifica se a resposta está certa:
if resposta=true then
'dá pontuação:
-mostrar próxima pergunta
msgbox("Resposta errada", "Aviso!")
Metes isto dentro de um botão. Fiz com variáveis booleans.
Não percebi bem como utilizar o código no 1º problema. Podes explicar melhor?
Obrigado também ao ricafilipe pela ajuda
Dim propriedade As Integer = 0
Public Property valor_pontuacao() As Integer
Return propriedade
propriedade = value
'Para aceder ao valor da propriedade
'nome_do_form_em_que_foi_daclarada_a_propriedade.nome_da_propriedade.Text
frm_main.valor_pontuacao.Text
Assim, tratas isto como uma variável.
Por uma questão de melhor interpretação do código deves usar como variável temporária da propriedade um nome semelhante ao da propriedade. Neste caso se a propriedade é valor_pontuacao, o nome da variável interna deveria ser m_valor_pontuacao ou _valor_pontuacao.
Bem... para entenderem melhor o que estou a fazer vou por uns prints aqui.
Primeiro aparece isto:
Carrego em começar para iniciar o questionário.
Depois começam as questões:
Eu quero que ao carregar no botão "Próximo" mude de questão e se tiver escolhido a opção certa contabilize 10 pontos, se estiver errada 0 e se não responder apareça uma janela a dizer "Escolha uma opção" e não mude de questão.
No fim aparece isto:
E quero que dentro da textbox apareça o somatório dos pontos.
Agora vamos lá ver se entendi o que disseram...
Eu tenho que meter o código que o scorch me deu no código do botão "próximo" em todas as questões (não sei se é isto).
Mas tenho que alterar algumas coisas no código adaptando-o à situação. Pelo que percebi tenho que alterar o "propriedade" e o "valor_pontuação" (digam-me se faltar algo).
Isto tudo para o somatório da pontuação.
Para a janela de erro não percebi muito bem.
Desculpem lá o incómodo e o estar a ser um bocado chato mas eu quero mesmo aprender e quando quero muito uma coisa sou um chato do pior lol.
Desculpem lá também a minha lentidão a compreender isto xD
Desde já um grande obrigado a todos^^
1º as perguntas são sempre as mesmas, não mudam de ordem?
2º a posição das múltiplas respostas são sempre as mesmas, não mudam de ordem?
Se não mudam é muito simples, é uma questão de criar uma variável para saber em que pergunta estás (incrementas essa variável no evento do botão "Próximo")
e usas o código se pergunta=X e resposta=Y então somas (pontuação = pontuação +10), caso contrário msgbox com a dizer que falhou.
Agora se a ordem das perguntas varia, se não são sempre as mesmas (por exemplo 10 de 100), se a posição das respostas também não é sempre a mesma, então dá um bocado de trabalho.
Não, não variam...
As ordens são sempre as mesmas.
Obrigado pela ajuda^^
Então é muito fácil:
Arrancas pergunta=0
No evento do botão "Proximo"
Se pergunta 0
Muda as labels das perguntas e das resposta para a próxima pergunta, limpa os botões radio e incrementa pergunta
Se pergunta 1 e resposta 3 (por exemplo) soma, senão mensagem de erro
Se pergunta 2 e resposta 2 (por exemplo) soma, senão mensagem de erro
Para mudar a ordem também é simples, crias um random.
Ate podes fazer de uma maneira mais fácil pk não fazes assim...
não mostras a msgbox("Erro na pregunta!?")...
assim se a pergunta for certa fazes um variável_cont=integer(no inicio do prog!?
depois dizes que a variável_cont+=10(cada vez que acerta?)
depois quando e para mostrar: fazes o seguinte...
crias labels
label1"Acertou em X preguntas e os pontos sao Y"
label2"Errou X perguntas,devia estudar mais sobre energias renovaveis... " para saber as erradas cada vez que errou...(fazes outra variavel_errou=integer depois vais somando...(acho que assim fica mais amigável o programa do que os pontos numa BOX!?..)
Força ai com esse projecto...
Bem... gostei do método do Tim mas não entendi bem como criar a variável e onde coloca-la... faço isso no evento do botão "Próximo"?
Aquela parte das labels agradou-me mas como faço para aparecer o nº de respostas certas e a pontuação na label1? A mesma coisa para a label2.
entao fazes assim:
no inicio do prog declaras as variasveis!? certo?
depois na load? vais dizer?
acertou=0
errou=0
depois para aparecer fazes assim
Label1.text="Acertou em "+variavel_acertou+" preguntas ganho"+variavel_pontos+" Pontos"
fazes o mesmo para a lebel 2 soq ue mudas a s variaveis...
(para cada pregunta podes por uma imagem acerca da pregunta)...
Eu estou a usar este código para criar as variáveis... mas eu já tentei usar de 1001 formas e nada...
Eu coloquei este código em todos os eventos do botão "Próximo" e alterei onde diz "propriedade" para "pontuacao". Mas é assim... 1º - não sei se estou a fazer certo e 2º - se está certo não sei o que fazer depois...
Podem me ajudar... o que me custa é a primeira vez... depois de entrar no cérebro não sai mais lol xD
Não tou a ver para que estas a fazer dessa maneira-.- quando podes fazer de maneira mais facil -.-"
Então explica-me ao pormenor a maneira mais fácil... xDDDDD
É que eu tentei e não consegui também... devo estar a fazer algo mal lol
entao posta aqui o codigo como é que tentas fazer!?
Tu disseste para criar as variáveis...
Eu pus isto no evento da form, fora do evento do botão "Próximo":
Dim pontuacao As Integer = 0
E pus em todas as forms das perguntas...
E depois usei no botão "Próximo" de cada form com pergunta este para aparecer a pontuação na textbox da ultima form:
If RadioButton1,2,... (depende da resposta).Checked = True Then
TextBox1.Text = +10
E depois não fiz mais nada pois dá um erro neste código no TextBox1.Text
Eu sei que estou a fazer mal pois nao estou a dar uso à variável... mas também não sei como usa-la...
no inicio do progrma defina:
dim acertou,errado as Integer
na form1_load metes
depois se a o Radiobutton1..=true(se for o certo)?
acertou+=10
assim sucesivamente cada ves que a resposta for certa?
depois metes um
else(se nao for esse radiobutton entao)
errou+=1
Isto também é na form_load? ou é no evento do botão?
E como faço para aparecer a pontuação noutra form?
isso e no button...
para fazeres aparecer na outra form faz assim
form2.label1.text=acertou se nao aparecer metes isso =cstr(acertou)isso converte a variavel para string...