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

elementsky

[VB.NET] Euromilhões!

36 mensagens neste tópico

Necessito de ajuda!

É assim estou a tentar construir um programa electrónico para jogar no euromilhões.

Tenho feito isto:

Public Class Form1
    Dim chave(0 To 5) As Integer
    Dim estrela(0 To 2) As Integer
    Dim aposta, aposta1, aposta2 As Integer
    Dim i, j, a, soma, soma1 As Integer

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        i = 0
        j = 0
        a = 0

        'Randomize
        For i = 1 To 5
            chave(i) = Int(Rnd() * 50) + 1
        Next
        'Randomize
        For i = 1 To 2
            estrela(i) = Int(Rnd() * 9) + 1
        Next
        For j = 1 To 5
            aposta1 = InputBox(" Insira os Números que quer apostar!")
            If aposta1 > 50 Then
                MsgBox("Valor Inválido!")
            End If
        Next
        For a = 1 To 2
            aposta2 = InputBox("Insira as estrelas que deseja apostar!")
            If aposta2 > 9 Then
                MsgBox("Valor Inválido!")
            End If
        Next


    End Sub

End Class

Falta-me saber como é que eu gero os cinco números e as duas estrelas, que vão dar a chave correctar para ser comparada com a introduzida pelo utilizador!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que primeiro de tudo devias reformular o código.

For j = 1 To 5

            aposta1 = InputBox(" Insira os Números que quer apostar!")

            If aposta1 > 50 Then

                MsgBox("Valor Inválido!")

            End If

        Next

        For a = 1 To 2

            aposta2 = InputBox("Insira as estrelas que deseja apostar!")

            If aposta2 > 9 Then

                MsgBox("Valor Inválido!")

            End If

        Next

Aqui devias alterar a variavel aposta1 e aposta2 para 2 arrays, um com tamnho 5 (para os numeros) e outro com tamanho 2 (para as estrelas). Qd o utilizador inserir os números vais guardando nas posições dos arrays.

Para gerares a chave, fazes usas o rnd e metes noutros 2 arrays, novamente 1 para os numeros e outro para as estrelas. Após isso, para poderes comparar, depende do que tu queres fazer, mas penso que terá lógica se para além de indicares se a chave está totalmente correcta, devias mostrar a total de números acertados e estrelas. Para então comparares, terás que ler cada uma das posições do arrays que guarda a aposta do utilizador e comparar com todas as posições do array q guarda a chave. à medida que haja igualdade, incrementas uma variavel para te indicar o total de numeros correctos.

Não sei se estarei a confundir-te...mas foi uma resposta um bocado à pressa. Logo quando chegar a casa tentarei reformular esta resposta.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Option Explicit
Option Base 1
Dim estrelas(2) As Integer
Dim numeros(5) As Integer

Function estrela() As Integer
    Randomize
    estrela = Int((9 - 1 + 1) * Rnd + 1)
End Function

Function numero() As Integer
    Randomize
    numero = Int((50 - 1 + 1) * Rnd + 1)
End Function


Private Sub Command1_Click()
   Dim i As Integer
         
    estrelas(1) = estrela
    estrelas(2) = estrela
    While estrelas(2) = estrelas(1)
       estrelas(2) = estrela
    Wend
    For i = 1 To 5
        numeros(i) = 0
    Next
    '
    numeros(1) = numero
    numeros(2) = numero
    While numerorepetido(numeros(2), 2)
        numeros(2) = numero
    Wend
    numeros(3) = numero
    While numerorepetido(numeros(3), 3)
        numeros(3) = numero
    Wend
    numeros(4) = numero
    While numerorepetido(numeros(4), 4)
        numeros(4) = numero
    Wend
    numeros(5) = numero
    While numerorepetido(numeros(5), 5)
        numeros(5) = numero
    Wend
    '
    Me.Text1 = numeros(1)
    Me.Text2 = numeros(2)
    Me.Text3 = numeros(3)
    Me.Text4 = numeros(4)
    Me.Text5 = numeros(5)
    
    Me.Text6 = estrelas(1)
    Me.Text7 = estrelas(2)
End Sub


Function numerorepetido(n As Integer, inx As Integer) As Boolean
    Dim rep As Boolean
    Dim i As Integer
    rep = False
    
    For i = 1 To inx - 1
        If n = numeros(i) Then
           rep = True
           Exit For
        End If
    Next
    numerorepetido = rep
End Function

Private Sub Command2_Click()
   Me.Hide
   Unload Me
End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dúvidas:

O que é a Option Explicit e Option Base ?

O que é a Function ?

Me.Hide e Unload Me nao é a mesma coisa ?

Obrigado :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

precisas destes controles

form1

Textboxes :

Text1....Text2....Text3....Text4....Text5    (para os números)

Text6....Text7  (para as estrelas)

commandButtons :

Command1  ... para gerar

Command2  ....para sair

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Option Explicit obriga à declaração de variáveis no VB

Option Base 1.....quer dizer que todos os arrays começam por indice 1

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que primeiro de tudo devias reformular o código.

For j = 1 To 5

            aposta1 = InputBox(" Insira os Números que quer apostar!")

            If aposta1 > 50 Then

                MsgBox("Valor Inválido!")

            End If

        Next

        For a = 1 To 2

            aposta2 = InputBox("Insira as estrelas que deseja apostar!")

            If aposta2 > 9 Then

                MsgBox("Valor Inválido!")

            End If

        Next

Aqui devias alterar a variavel aposta1 e aposta2 para 2 arrays, um com tamnho 5 (para os numeros) e outro com tamanho 2 (para as estrelas). Qd o utilizador inserir os números vais guardando nas posições dos arrays.

Para gerares a chave, fazes usas o rnd e metes noutros 2 arrays, novamente 1 para os numeros e outro para as estrelas. Após isso, para poderes comparar, depende do que tu queres fazer, mas penso que terá lógica se para além de indicares se a chave está totalmente correcta, devias mostrar a total de números acertados e estrelas. Para então comparares, terás que ler cada uma das posições do arrays que guarda a aposta do utilizador e comparar com todas as posições do array q guarda a chave. à medida que haja igualdade, incrementas uma variavel para te indicar o total de numeros correctos.

Não sei se estarei a confundir-te...mas foi uma resposta um bocado à pressa. Logo quando chegar a casa tentarei reformular esta resposta.

mas para isso ja tenho os arrays chave e estrela

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

viva pessoal,

Eu na escola tb tinha de fazer o euro milhões e acabei se quiserem tirar ideias tão á vontade ele vai anexo não tá nada de especial que eu nem 1 ano tenho de vb mas é só para terem uma ideia.

Um abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Option Explicit obriga à declaração de variáveis no VB

Option Base 1.....quer dizer que todos os arrays começam por indice 1

Nao respondeste ás perguntas:

"O que é a Function ?"

"Me.Hide e Unload Me nao é a mesma coisa ?"

Stay Cool

PS: Fiz um programa parecido mas com um grande erro, saiem nºs repetidos :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hide ... é como dz ... esconde....mas não remove da memória

e unload remove da memória

function é uma função que retorna um valor...é como uma função matemática

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Delta , porque é que tens isto assim  estrela = Int((9 - 1 + 1) * Rnd + 1) ?? nao sei pra que serve o -1+1 depois do 9 :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hide ... é como dz ... esconde....mas não remove da memória

e unload remove da memória

function é uma função que retorna um valor...é como uma função matemática

E por que é que ali usaste as duas ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a formula dos números aleatórios é esta :

Int((limitemaximo - limiteminimo + 1) * Rnd + limiteminimo)

como as estrelas vão de 1...9

Apenas substitui, mas claro que 9 - 1 + 1 dá 9 :cheesygrin:

substitui apenas na formula e assim ficou

====

O hide e o unload uso sempre as duas porque é assim que retiro um form da memória, mesmo em programas minusculos...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O hide e o unload uso sempre as duas porque é assim que retiro um form da memória, mesmo em programas minusculos...

Entao mas se é para retirares da memória é só perciso o Unload ... :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas!

basea-m no code do Delta e fiz um programa.

fika aki anexado o meu .exe do euromilhoes esper k gostem :)

cumps  ;)

[actualizado]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tá fixe! ;) mas muda só uma coisa,.. o botão GERIR chave (GERAR)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

....ups!!! se a minha stora de PT vi-se...  :wallbash:

tava distraido  :biggrin:

cumps  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tá porreiro!! e nao poes a chave ordenada? se calhar tinhas mais um pontinho na nota :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Está muito porreiro, uma vez andei a tentar fazer um em action script mas dava problemas, de vez em quando repetia números na mesma chave .  :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tá porreiro!! e nao poes a chave ordenada? se calhar tinhas mais um pontinho na nota :cheesygrin:

YÀYÀ!!!! nem reparei nisso! forca ai , ordena a cena! :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Está muito porreiro, uma vez andei a tentar fazer um em action script mas dava problemas, de vez em quando repetia números na mesma chave .  :cheesygrin:

Com If's isso passa, fiz o meu Com If's e até agr bombou sem repetiçoes :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja vi k kerem k eu ordene...

... na verdade eu tb keria  :cheesygrin: , mas as maneiras k pensei levavam kilos de IF's, tb pensei em fazer verifikaçao com o ciclo FOR, mas n xeguei a  conxclusao  :hmm:

alguem tem sugestoes?

cumps  :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Usa um algoritmo de ordenação, por exemplo o BubbleSort ...

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