Anouk Posted November 3, 2019 at 11:36 AM Report Share #616500 Posted November 3, 2019 at 11:36 AM (edited) Bom dia! Antes de mais devo desde já dizer que já sei que o meu código é uma m****, mas eu comecei há pouco tempo a aprender, num curso profissional, estou a dar os primeiros passos e estou a tentar manter tudo o mais simples possível, a um nível que eu possa compreender. Objetivo do desafio proposto: Criar um jogo da memória Objetivo específico para esta questão que estou a colocar no fórum: Descobrir como é que posso gerar números aleatórios que não se repitam. Contexto: - Criei no formulário 16 PictureBox que vão receber imagem aleatórias. - As imagens a serem escolhidas aleatoriamente guardei-as numa ImageList (rescurso do próprio programa), que as numerou de 0 a 15. (Nota: Como preciso de 8 pares de imagens, coloquei 8+8, sendo as segundas repetidas mas com outro número.) - Através do código (muito simples) já criado, consegui de facto inserir imagens aleatórias da ImageList nas PictureBox, mas o número que identifica a imagem repete-se mais que 1 vez, o que leva a que haja várias imagens iguais e outras que nem aparecem. Código criado até agora: Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Randomize() Dim randInt As Integer randInt = CInt(Int((15 * Rnd())) + 0) PictureBox1.Image = ImageList1.Images(randInt) randInt = CInt(Int((15 * Rnd())) + 0) PictureBox2.Image = ImageList1.Images(randInt) randInt = CInt(Int((15 * Rnd())) + 0) PictureBox3.Image = ImageList1.Images(randInt) randInt = CInt(Int((15 * Rnd())) + 0) PictureBox4.Image = ImageList1.Images(randInt) randInt = CInt(Int((15 * Rnd())) + 0) PictureBox5.Image = ImageList1.Images(randInt) randInt = CInt(Int((15 * Rnd())) + 0) PictureBox6.Image = ImageList1.Images(randInt) randInt = CInt(Int((15 * Rnd())) + 0) PictureBox7.Image = ImageList1.Images(randInt) randInt = CInt(Int((15 * Rnd())) + 0) PictureBox8.Image = ImageList1.Images(randInt) randInt = CInt(Int((15 * Rnd())) + 0) PictureBox9.Image = ImageList1.Images(randInt) randInt = CInt(Int((15 * Rnd())) + 0) PictureBox10.Image = ImageList1.Images(randInt) randInt = CInt(Int((15 * Rnd())) + 0) PictureBox11.Image = ImageList1.Images(randInt) randInt = CInt(Int((15 * Rnd())) + 0) PictureBox12.Image = ImageList1.Images(randInt) randInt = CInt(Int((15 * Rnd())) + 0) PictureBox13.Image = ImageList1.Images(randInt) randInt = CInt(Int((15 * Rnd())) + 0) PictureBox14.Image = ImageList1.Images(randInt) randInt = CInt(Int((15 * Rnd())) + 0) PictureBox15.Image = ImageList1.Images(randInt) randInt = CInt(Int((15 * Rnd())) + 0) PictureBox16.Image = ImageList1.Images(randInt) End Sub End Class Gente, eu não estou a pedir que me façam o trabalho todo. Apenas que me tentem ajudar nesta questão específica e com uma solução o mais simples possível. Pode até haver uma instrução qualquer que evita que os números se repetiam, mas eu desconheço. Agradeço a quem puder ajudar. Edited November 4, 2019 at 02:46 PM by M6 Formatação de código. Link to comment Share on other sites More sharing options...
M6 Posted November 4, 2019 at 03:03 PM Report Share #616508 Posted November 4, 2019 at 03:03 PM Já lá vão muitos anos desde o VB, mas espero poder ajudar. Antes de mais o Randomize só deve ser feito uma única vez, no inicio do programa. Se tens no Load, pode acontecer que executes isso mais de uma vez. Depois, se bem me recordo, o Rnd devolve um número entre 0 e 1 (0 <= Rnd < 1), pelo que a fórmula deverá ser randInt = Int(16 * Rnd) Para garantires que o valor não se repete, basta teres uma lista/array em que vais guardando os valores que já foram saindo e, caso exista uma repetição, pedes um novo número. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
programadorvb6 Posted November 7, 2019 at 04:18 PM Report Share #616542 Posted November 7, 2019 at 04:18 PM Com que finalidade serve esse teu código? ______________________________________________________________________________ Que minha coragem seja maior que meu medo e que minha força seja tão grande quanto minha fé. Link to comment Share on other sites More sharing options...
Anouk Posted December 20, 2019 at 02:24 PM Author Report Share #616904 Posted December 20, 2019 at 02:24 PM Já terminei este jogo. Foi doloroso mas consegui! Podem fechar o tópico. De qualquer forma por aqui não obtive ajuda. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now