Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Gioco dell'impiccato [vb.net]

    Salve a tutti!
    Per l'ennesima volta mi affido alle vostre conoscenze!
    Sto tentando di realizzare il classico gioco dell'impiccato con visual basic.net... il mio problema è che non capisco come faccio a fare in modo che il programma,dopo che l'utente ha selezionato la lettera che vuole, dica se la lettera è corretta o meno e a posizionarla nella posizione corretta.

    Potreste spiegarmi più o meno il procedimento corretto da fare?

    Grazie a tutti!


  2. #2
    Devi studiarti i metodi che gestiscono le stringhe....

    Fai inserire all'utente la lettera che vuole in una textbox e poi confonti questa lettera con il contenuto della parola misteriosa usando le istruzioni che gestiscono le stringhe come .Substring.

    Per esempio:

    codice:
    Dim testo As String = "pippo"
    MessageBox.Show(testo.Substring(0, 2))
    stamperà la stringa "pi" poiché rappresenta i primi 2 caratteri a partire dal carattere 0.

  3. #3
    Ciao Anduril! Grazie per avermi risposto!
    Allora io sto facendo il gioco cosi: in una textbox compare la parola segreta, poi c'è una serie di bottoni con le varie lettere che se presenti nella parola segreta vanno a finire in una seconda textbox.
    In uno di quei bottoni che dicevo ho scritto questo:

    Dim ParolaSegreta As String = TextBox1.Text
    Dim Stringa As String = "_ _ _ _ _ _ _"
    Dim Lettera As Char = CChar("a")
    For I As Int16 = 0 To CShort(ParolaSegreta.Length - 1)
    If Char.ToLower(ParolaSegreta(I)) = Lettera Then
    Stringa = Stringa.Insert(I, Lettera).Remove(I + 1, 1)
    TextBox2.Text = Stringa
    End If
    Next

    Se la lettera a è presenta me la trova e me la sostituisce correttamente ma, x dire, se poi l'utente preme su un altra lettera ed è presente pure quella mi elimina la lettera a e me la sostituisce con la nuova lettera premuta.

  4. #4
    non ho provato il codice che hai postato ma prova a sostituire

    TextBox2.Text = Stringa

    con

    TextBox2.Text += Stringa oppure TextBox2.Text &= Stringa

  5. #5
    Ciao!

    Avevo gia provato a fare cosi: TextBox2.Text += Stringa oppure TextBox2.Text &= Stringa
    come mi hai detto ma mi fa questo effetto:

    Es. Premo bottone a: _ _ a_ _ _
    Premo bottone f: _ _ a_ _ _ _ fa_ _ _

    Praticamente fa questo: _ _ a_ _ _+_ fa_ _ _

    Invece vorrei che facesse cosi: _ fa_ _ _

    Non so se sono stato chiaro...

  6. #6
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da marco14
    In uno di quei bottoni che dicevo ho scritto questo:

    codice:
        Dim ParolaSegreta As String = TextBox1.Text
        Dim Stringa As String = "_ _ _ _ _ _ _"
        Dim Lettera As Char = CChar("a")
        For I As Int16 = 0 To CShort(ParolaSegreta.Length - 1)
            If Char.ToLower(ParolaSegreta(I)) = Lettera Then
                Stringa = Stringa.Insert(I, Lettera).Remove(I + 1, 1)
                TextBox2.Text = Stringa
            End If
        Next
    Se la lettera a è presenta me la trova e me la sostituisce correttamente ma, x dire, se poi l'utente preme su un altra lettera ed è presente pure quella mi elimina la lettera a e me la sostituisce con la nuova lettera premuta.
    Non vedo come potrebbe non essere così, dato che tu hai dichiarato
    Dim Lettera As Char = CChar("a")
    Lettera sarà sempre "a"

    Invece Lettera dovrebbe essere il carattere (pulsante) selezionato di volta in volta dall'utente, o sbaglio?

    Ciao

  7. #7
    Ciao Marco14,

    scusa, hai ragione ho scritto una stupidata.

    io ho fatto così:
    codice:
    Public Class Form1
        Dim ParolaSegreta As String = "Topolino"
    
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    
            For i As Int16 = 0 To CShort(ParolaSegreta.Length - 1)
                TextBox1.Text += "-"
            Next
    
        End Sub
    
        Private Sub checkLettera(ByVal lettera As Char)
    
            Dim stringa As String = TextBox1.Text
            For i As Int16 = 0 To CShort(ParolaSegreta.Length - 1)
                If Char.ToLower(ParolaSegreta(i)) = lettera Then
                    stringa = stringa.Insert(i, lettera).Remove(i + 1, 1)
                    TextBox1.Text = stringa
                End If
            Next
    
        End Sub
    
    End Class
    e nell'evento legato all'inserimento della lettera scelta richiami la funzione:

    codice:
        Private Sub Button_T_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_T.Click
            checkLettera("T")
        End Sub
    Ho provato e funziona.

    Scusa di nuovo.

  8. #8
    Ciao!

    Per Gibra: si è giusto come dici tu ma io nel bottone F dichiaro Dim Lettera As Char = CChar("f")

    Per Gandalfrank: non devi scusarti di niente anzi sono io che mi devo scusare con te per quello che ti chiederò ora...se non ti rompo troppo...allora io ho provato il tuo codice ma purtroppo mi da questo errore:

    Errore durante la creazione del form. Per informazioni dettagliate vedere Exception.InnerException. Errore: Riferimento a un oggetto non impostato su un'istanza di oggetto.

    Comunque io avevo pensato, prima che mi davi il tuo codice di fare una function mentre ho visto che tu hai usato una subroutine:

    Private Sub checkLettera(ByVal lettera As Char)
    Dim stringa As String = TextBox1.Text
    For i As Int16 = 0 To CShort(ParolaSegreta.Length - 1)
    If Char.ToLower(ParolaSegreta(i)) = lettera Then
    stringa = stringa.Insert(i, lettera).Remove(i + 1, 1)
    TextBox1.Text = stringa
    End If
    Next
    End Sub

    Giusto? sono alle prime armi quindi vorrei avere tutto chiaro... Grazie ancora per l'aiuto e per la pazienza!




  9. #9
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da marco14
    Ciao!

    Per Gibra: si è giusto come dici tu ma io nel bottone F dichiaro Dim Lettera As Char = CChar("f")
    OK, ma in questo caso il codice che hai postato nel tuo 2° messaggio era sbagliato, perchè non corrisponde a quanto hai scritto ora.

    Scusa, ma non sei chiaro sufficientemente.

    Quindi, dove la fai questa dichiarazione?
    Da come lo scrivi tu, sembra che sia fatta all'interno del Click del pulsante.
    Quindi la domanda è: se è così coma fa la routine che modifica la stringa ad acquisire il valore corretto del pulsante?

    Ciao

  10. #10
    Non capisco come mai ti si è presentato l'errore che hai riportato...

    Io ho creato una form, vi ho inserito qualche pulsante ( 4 per l'esattezza) e una textbox, quindi ho aggiunto il codice che ti ho scritto e mi funziona tutto molto bene.

    questo è il codice completo:

    codice:
    Public Class Form1
        Dim ParolaSegreta As String = "Topolino"
    
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    
            For i As Int16 = 0 To CShort(ParolaSegreta.Length - 1)
                TextBox1.Text += "-"
            Next
    
        End Sub
    
        Private Sub checkLettera(ByVal lettera As Char)
    
            Dim stringa As String = TextBox1.Text
            For i As Int16 = 0 To CShort(ParolaSegreta.Length - 1)
                If Char.ToLower(ParolaSegreta(i)) = lettera Then
                    stringa = stringa.Insert(i, lettera).Remove(i + 1, 1)
                    TextBox1.Text = stringa
                End If
            Next
    
        End Sub
    
        Private Sub Button_A_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_A.Click
            checkLettera("a")
        End Sub
    
        Private Sub Button_L_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_L.Click
            checkLettera("l")
        End Sub
    
        Private Sub Button_O_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_O.Click
            checkLettera("o")
        End Sub
    
        Private Sub Button_T_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_T.Click
            checkLettera("t")
        End Sub
    
    End Class
    Ovviamente è solo un esmpio per mostrarti come avrei risolto il problema che hai postato; devi adattartlo alle tue esigenze.

    Spero ti possa tornare utile.

    Ciao

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.