Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    252

    spiegazione errore che nn trovo e nn viene comunicato

    ciao, ragazzi mi sto esercitando con i primi esempi che mi da vb10
    sto facendo il memory
    sembra funzionare tutto bene però c'è una cosa strana che succede
    una delle label che nascondono le lettere da visualizzare rimane vuota(apparentemente)
    In realtà l'immagine c'è come nelle altre però nn posso associarla all'altra immagine che trovo se nn come ultima scelta.

    Tutte le altre caselle funzionano e quella vuota solo per ultimo

    mi fate capire cosa succede e perchè?
    (io ho pensato al random.next che parte dalla prima posizione e salta la pos 0) o forse no.

    codice:
    Public Class memory
            Dim random As New Random
    
            Dim temporaryArray() As String = {"!", "!", "N", "N", ",", ",", "k", "k", "a", "a", "b", "b", "c", "c", "d", "d", _
                                          "e", "e", "f", "f", "g", "g", "h", "h", "i", "i", "l", "l", "m", "m", "n", "n", _
                                          "o", "o", "p", "p", "q", "q", "r", "r", "s", "s", "t", "t", "u", "u", "v", "v", _
                                          "z", "z", "A", "A", "B", "B", "C", "C", "D", "D", "E", "E", "F", "F", "G", "G", _
                                          "H", "H", "I", "I", "L", "L", "M", "M", "O", "O", "P", "P", "Q", "Q", "R", "R", _
                                          "S", "S", "T", "T", "U", "U", "V", "V", "Z", "Z", "x", "x", "Y", "Y", "j", "j", _
                                          "K", "K", " J", "J", "3", "3"}
        Dim icons As List(Of String) = temporaryArray.ToList()
           Dim firstClicked As Label = Nothing
    
            Dim secondClicked As Label = Nothing
    
        Private Sub AssignIconsToSquares()
    
                   For Each control In TableLayoutPanel1.Controls
                Dim iconLabel As Label = TryCast(control, Label)
                If iconLabel IsNot Nothing Then
                    Dim randomNumber As Integer = random.Next(icons.Count)
                    iconLabel.Text = icons.ElementAt(randomNumber)
                    iconLabel.ForeColor = iconLabel.BackColor
                    icons.RemoveAt(randomNumber)
                End If
            Next
    
        End Sub
       Public Sub New()
                   InitializeComponent()
                    AssignIconsToSquares()
        End Sub
    
    
    
        Private Sub label_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label99.Click, Label98.Click,
            Label97.Click, Label96.Click, Label95.Click, Label94.Click, Label93.Click, Label92.Click, Label91.Click, Label90.Click,
            Label9.Click, Label89.Click, Label88.Click, Label87.Click, Label86.Click, Label85.Click, Label84.Click, Label83.Click,
            Label82.Click, Label81.Click, Label80.Click, Label8.Click, Label79.Click, Label78.Click, Label77.Click, Label76.Click,
            Label75.Click, Label74.Click, Label73.Click, Label72.Click, Label71.Click, Label70.Click, Label7.Click, Label69.Click,
            Label68.Click, Label67.Click, Label66.Click, Label65.Click, Label64.Click, Label63.Click, Label62.Click, Label61.Click,
            Label60.Click, Label6.Click, Label59.Click, Label58.Click, Label57.Click, Label56.Click, Label55.Click, Label54.Click,
            Label53.Click, Label52.Click, Label51.Click, Label50.Click, Label5.Click, Label49.Click, Label48.Click, Label47.Click,
            Label46.Click, Label45.Click, Label44.Click, Label43.Click, Label42.Click, Label41.Click, Label40.Click, Label4.Click,
            Label39.Click, Label38.Click, Label37.Click, Label36.Click, Label35.Click, Label34.Click, Label33.Click, Label32.Click,
            Label31.Click, Label30.Click, Label3.Click, Label29.Click, Label28.Click, Label27.Click, Label26.Click, Label25.Click,
            Label24.Click, Label23.Click, Label22.Click, Label21.Click, Label20.Click, Label2.Click, Label19.Click, Label18.Click,
            Label17.Click, Label16.Click, Label15.Click, Label14.Click, Label13.Click, Label12.Click, Label11.Click, Label100.Click,
            Label10.Click, Label1.Click
    
            If (Timer1.Enabled = True) Then
                Return
            End If
    
            Dim clickedLabel As Label = TryCast(sender, Label)
    
            If clickedLabel IsNot Nothing Then
                           If (clickedLabel.ForeColor = Color.White) Then
                    Return
                End If
    
               
                If (firstClicked Is Nothing) Then
                    firstClicked = clickedLabel
                    firstClicked.ForeColor = Color.White
                    Return
                End If
    
                           secondClicked = clickedLabel
                secondClicked.ForeColor = Color.White
    
                CheckForWinner()
    
                If (firstClicked.Text = secondClicked.Text) Then
                    firstClicked = Nothing
                    secondClicked = Nothing
                    Return
                End If
                Timer1.Start()
            End If
    
    
    
        End Sub
    
       
        Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
                  Timer1.Stop()
    
                   firstClicked.ForeColor = firstClicked.BackColor
            secondClicked.ForeColor = secondClicked.BackColor
    
    
                    firstClicked = Nothing
            secondClicked = Nothing
    
        End Sub
        Private Sub CheckForWinner()
            For Each control In TableLayoutPanel1.Controls
                Dim iconLabel As Label = TryCast(control, Label)
                If iconLabel IsNot Nothing Then
                    If (iconLabel.ForeColor = iconLabel.BackColor) Then
                        Return
                    End If
                End If
            Next
    
                   MessageBox.Show("Gioco Completato!", "Congratulazioni")
            Close()
    
        End Sub
    
    End Class

  2. #2
    random.next(10) restituisce numeri da 0 a 9.. prova a controllare questa cosa mentre la label le fai partire da 1.
    Allega il progetto che il codice qui viene tagliato....

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    252
    come faccio ad allegare il progetto?

  4. #4
    lo fai in zip e lo metti su allega, o lo hosti su un altro sito e lo linki

  5. #5
    Prima cosa che ho notato: temporaryArray contiene 102 elementi, mentre tu hai 100 Label, è voluto?
    Seconda cosa: il ciclo For-Each-In itera su tutti i controlli nel form, non è che per caso hai anche altre Label oltre alle 100 previste dal gioco? Se così fosse verrebbero assegnati dei simboli anche a label che non centrano nulla col gioco...
    Al posto del TryCast io avrei scritto:
    codice:
    For Each control In TableLayoutPanel1.Controls
        If TypeOf(control) Is Label Then
            Dim iconLabel As Label CType(control, Label)
            Dim randomNumber As Integer = random.Next(icons.Count)
            iconLabel.Text = icons.ElementAt(randomNumber)
            iconLabel.ForeColor = iconLabel.BackColor
            icons.RemoveAt(randomNumber)
        End If
    Next
    Chi non cerca trova.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.