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

.EXO

Quiz - Pontuação

35 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

1º - Fazes, na primeira form:

Public Property pontuacao() As Integer
Get
End Get
'etc

Depois verificas se a resposta é a correcta, então adicionas-lhe a pontuação, senão não adicionas.

2º -

MessageBox.Show("A resposta está errada!");

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

1º-

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

end if

2º-

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:

pontuacao += 1

end if

-mostrar próxima pergunta

else

msgbox("Resposta errada", "Aviso!")

end if

Metes isto dentro de um botão. Fiz com variáveis booleans. :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

1º - Fazes, na primeira form:

Public Property pontuacao() As Integer
Get
End Get
'etc

Depois verificas se a resposta é a correcta, então adicionas-lhe a pontuação, senão não adicionas.

2º -

MessageBox.Show("A resposta está errada!");

Não percebi bem como utilizar o código no 1º problema. Podes explicar melhor?

Obrigado também ao ricafilipe pela ajuda ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dim propriedade As Integer = 0
Public Property valor_pontuacao() As Integer
        Get
            Return propriedade
        End Get
        Set(ByVal value As Integer)
            propriedade = value
        End Set
    End Property

'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. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@scorch,

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem... para entenderem melhor o que estou a fazer vou por uns prints aqui.

Primeiro aparece isto:

61376691.png

Carrego em começar para iniciar o questionário.

Depois começam as questões:

62089076.png

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:

41256886.png

E quero que dentro da textbox apareça o somatório dos pontos.

Basicamente é isto.

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não, não variam...

As ordens são sempre as mesmas.

Obrigado pela ajuda^^

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

Muda as labels das perguntas e das resposta para a próxima pergunta, limpa os botões radio e incrementa pergunta

Se pergunta 2 e resposta 2 (por exemplo) soma, senão mensagem de erro

Muda as labels das perguntas e das resposta para a próxima pergunta, limpa os botões radio e incrementa pergunta

etc...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para mudar a ordem também é simples, crias um random.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não, não variam...

As ordens são sempre as mesmas.

Obrigado pela ajuda^^

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... :D" 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...

:cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

pontos=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)...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dim propriedade As Integer = 0
Public Property valor_pontuacao() As Integer
        Get
            Return propriedade
        End Get
        Set(ByVal value As Integer)
            propriedade = value
        End Set
    End Property

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dim propriedade As Integer = 0
Public Property valor_pontuacao() As Integer
        Get
            Return propriedade
        End Get
        Set(ByVal value As Integer)
            propriedade = value
        End Set
    End Property

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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!?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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
End If

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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
End If

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

faz assim:

no inicio do progrma defina:

dim acertou,errado as Integer

na form1_load metes

acertou=0

errou=0

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

:thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

:thumbsup:

Isto também é na form_load? ou é no evento do botão?

E como faço para aparecer a pontuação noutra form?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

o mesmo para o errou se nao aparecer...

form2.label2.text=errou

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito obrigado^^

Já consegui^^

Obrigado por me aturares xD

Na Boa :thumbsup:

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