galgje foutmelding picturebox

Status
Niet open voor verdere reacties.

bontje07

Gebruiker
Lid geworden
13 jan 2012
Berichten
12
Ik wilde voor mijn leerlingen op school een galgje maken zodat we onze eigen woorden op een leuke manier kunnen oefenen, ik heb een tutorial op internet gevolgd http://visualstudiotutorials.blogspot.com/p/how-to-make-simple-hangman-game-in.html
Dit is een erg goede uitleg.

Alleen het gaat fout op het moment dat ik niet de hangman plaatjes gebruik maar mijn eigen plaatjes bloem1.jpg, bloem2.jpg, bloem3.jpg enz.
Wat is nu het probleem als ik de code overneem en inplaatst van hangman1 gewoon bloem1 type krijg ik de foutmelding "end of statement expected" naar iedere code:

ElseIf pic = "bloem2" Then PictureBox1.Image = My.Resources.bloem3
de plaatjes bloem1.jpg enz staan gewoon in Resource....

en bij de laatste "End if " krijg ik de foutmelding: 'End If' must be preceded by a matching 'If'.

ook zou ik erg graag een score erbij plaatsen.

ik hoop dat iemand mij kan helpen met dit probleem
 
De melding lijkt me duidelijk. Je hebt ergens een End If staan die niet vooraf wordt gegaan door een If.
 
Laatst bewerkt:
Wel ik heb de laatste End if weggehaald en de foutmelding is verdwenen, alleen blijft nu mijn andere foutmelding staan:
End of statement expected en dit 7 x
ik wilde graag een voorbeeld venster uploaden, alleen krijg is deze niet zichtbaar in bijlage manager.
 
Plaats de code hier eens. In codetags graag.
 
dit is de code

Code:
Next


        If c = 0 Then
            ElseIf pic = "bloem1" Then PictureBox1.Image = My.Resources.bloem2
            pic = "bloem2"
        ElseIf pic = "bloem2" Then PictureBox1.Image = My.Resources.bloem3
            pic = "bloem3"
        ElseIf pic = "bloem3" Then PictureBox1.Image = My.Resources.bloem4
            pic = "bloem4"
        ElseIf pic = "bloem4" Then PictureBox1.Image = My.Resources.bloem5
            pic = "bloem5"
        ElseIf pic = "bloem5" Then PictureBox1.Image = My.Resources.bloem6
            pic = "bloem6"
        ElseIf pic ="bloem6"  Then PictureBox1.Image = My.Resources.bloem7
            pic = "bloem7"
        ElseIf pic = "bloem7" Then PictureBox1.Image = My.Resources.bloem8
            pic = "bloem8"
            MessageBox.Show("Helaas je hebt verloren")
            btnNewGame.PerformClick()

        End If
 
Laatst bewerkt door een moderator:
Je doet een IF c=0 en dan een ELSEIF van PIC.
Ik denk dat het daar niet goed gaat omdat er nu geen IF is voor PIC en geen ENDIF voor de IF c=0

Ik gok dat het dit moet zijn:

Code:
If c = 0 Then
    Select Case pic
        case "bloem1"
            PictureBox1.Image = My.Resources.bloem2
        case "bloem2"
            PictureBox1.Image = My.Resources.bloem3
        case "bloem3"
            PictureBox1.Image = My.Resources.bloem4
        case "bloem4"
            PictureBox1.Image = My.Resources.bloem5
        case "bloem5"
            PictureBox1.Image = My.Resources.bloem6
        case "bloem6"
            PictureBox1.Image = My.Resources.bloem7
        case "bloem7"
            PictureBox1.Image = My.Resources.bloem8
    End Select

    MessageBox.Show("Helaas je hebt verloren")
    btnNewGame.PerformClick()
End If
 
De foutmeldingen zijn nu weg, maar als ik de verkeerde letter aanklik dan laad hij niet de bloem2 met een blaadje minder maar geeft hij het venster helaas je hebt verloren.
ik plaats hieronder iets meer van de code omdat ik denk dat je die misschien nodig hebt.
Code:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        PictureBox1.Image = My.Resources.bloem1
    End Sub
    Private Sub labelcheck()
        
        For Each labelitm As Label In GroupBox2.Controls

            If a = labelitm.Text Then
                labelitm.Visible = True
                c = c + 1
            Else

            End If

        If Label1.Visible AndAlso Label2.Visible AndAlso Label3.Visible AndAlso Label4.Visible AndAlso Label5.Visible AndAlso Label6.Visible AndAlso Label7.Visible AndAlso Label8.Visible = True Then
            MessageBox.Show("Prima je hebt het woord geraden")

            btnNewGame.PerformClick()

        End If

        Next

        If c = 0 Then
            Select Case pic
                Case "bloem1"
                    PictureBox1.Image = My.Resources.bloem2
                Case Is = "bloem2"
                    PictureBox1.Image = My.Resources.bloem3
                Case "bloem3"
                    PictureBox1.Image = My.Resources.bloem4
                Case "bloem4"
                    PictureBox1.Image = My.Resources.bloem5
                Case "bloem5"
                    PictureBox1.Image = My.Resources.bloem6
                Case "bloem6"
                    PictureBox1.Image = My.Resources.bloem7
                Case "bloem7"
                    PictureBox1.Image = My.Resources.bloem8
            End Select
            MessageBox.Show("Helaas je hebt verloren")
            btnNewGame.PerformClick()

        End If


    End Sub

    Private Sub ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click, Button4.Click, Button5.Click, Button6.Click, Button7.Click, Button8.Click, Button9.Click,
        Button10.Click, Button11.Click, Button12.Click, Button13.Click, Button14.Click, Button15.Click, Button16.Click, Button17.Click, Button18.Click, Button19.Click, Button20.Click, Button21.Click, Button22.Click, Button23.Click, Button24.Click,
        Button25.Click, Button26.Click 'verander Button1_ Click in "ButtonClick" en zorg dat alle buttons die hetzelfde moeten doen achter Handles Button1.Click, komen te staan dan hebben alle toetsen hetzelfde programma.

        Select Case DirectCast(sender, Button).Name

            Case "Button1"
                Button1.Enabled = False
                a = "A"
                c = 0
                labelcheck()

            Case "Button2"
                Button2.Enabled = False
                a = "B"
                c = 0
                labelcheck()

            Case "Button3"
                Button3.Enabled = False
                a = "C"
                c = 0
                labelcheck()

            Case "Button4"
                Button4.Enabled = False
                a = "D"
                c = 0
                labelcheck()

            Case "Button5"
                Button5.Enabled = False
                a = "E"
                c = 0
                labelcheck()

            Case "Button6"
                Button6.Enabled = False
                a = "F"
                c = 0
                labelcheck()

            Case "Button7"
                Button7.Enabled = False
                a = "G"
                c = 0
                labelcheck()

            Case "Button8"
                Button8.Enabled = False
                a = "H"
                c = 0
                labelcheck()

            Case "Button9"
                Button9.Enabled = False
                a = "I"
                c = 0
                labelcheck()

            Case "Button10"
                Button10.Enabled = False
                a = "J"
                c = 0
                labelcheck()
 
Laatst bewerkt door een moderator:
Dat komt door deze code:

[cpp]
Select Case pic
Case "bloem1"
PictureBox1.Image = My.Resources.bloem2
Case Is = "bloem2"
PictureBox1.Image = My.Resources.bloem3
Case "bloem3"
PictureBox1.Image = My.Resources.bloem4
Case "bloem4"
PictureBox1.Image = My.Resources.bloem5
Case "bloem5"
PictureBox1.Image = My.Resources.bloem6
Case "bloem6"
PictureBox1.Image = My.Resources.bloem7
Case "bloem7"
PictureBox1.Image = My.Resources.bloem8
End Select

MessageBox.Show("Helaas je hebt verloren") ''// <<-- deze code
btnNewGame.PerformClick()[/cpp]

De laatste code wordt altijd uitgevoerd omdat deze niet in de Select Case-constructie staat.
 
Laatst bewerkt:
Ik heb de code bij bloem2 aangepast en de messagebox binnen de code geplaatst.
Alleen bloem2 wordt nog steeds niet geladen. Als ik nu een verkeerde letter indruk dan begint het spel gewoon weer opnieuw. door het laden van een nieuw woord.
 
Kan het niet hieraan liggen (in het rood):

Code:
Select Case pic
 Case "bloem1"
     PictureBox1.Image = My.Resources.bloem2
 Case [COLOR="red"][B]Is =[/B][/COLOR] "bloem2"
     PictureBox1.Image = My.Resources.bloem3
 Case "bloem3"
     PictureBox1.Image = My.Resources.bloem4
 Case "bloem4"
     PictureBox1.Image = My.Resources.bloem5
 Case "bloem5"
     PictureBox1.Image = My.Resources.bloem6
 Case "bloem6"
     PictureBox1.Image = My.Resources.bloem7
 Case "bloem7"
     PictureBox1.Image = My.Resources.bloem8
End Select

Bij die andere "bloemen" heb je dat niet, dus ik heb geen idee waarom je alleen bij bloem2 Is = zet.
 
Laatst bewerkt:
Die " Is = " hoort daar inderdaad helemaal niet.
 
Ja dat had ik al opgemerkt, dus zelfs toen ik die had gecorrigeerd laad hij niet de tweede bloem als ik een foute letter aanklik
 
Dan is er dus iets aan de hand met de variabele PIC of c is niet nul.
Loop er eens doorheen in debugmode, dan kun je precies zien wat er gebeurd.
 
sorry admoor maar zoals je al gemerkt hebt ben ik een beginner maar wel een doorzetter. Ik heb gedaan wat je zei. Alleen debugmode stopt naar deze code:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
PictureBox1.Image = My.Resources.bloem1
End Sub
en springt dan weer terug naar boven naar de code "Public c As Integer = 0" ik heb geprobeert de 0 in een 1 te veranderen en ook onderin
bij de picturebox dus c= o
ik heb de naam van de public pic As String aangepast naar "image" boven en onder natuurlijk ook dat werkt niet.
 
Zodra hij op de regel PictureBox1.Image = My.Resources.bloem1 staat kun je met de F8 toets regel voor regel doorwandelen.
 
wel dan gaat hij niet regel voor regel maar direct naar de laatste regel
 
Dan moet je een breakpoint op de juiste positie zetten en dan gewoon je programma starten.
Zo kun je het hele proces volgen en per stap de waarde van de variabelen controleren.
Je ziet dan dus helemaal wat er op welk moment wordt gedaan. Zo moet je kunnen uitvinden wat er niet goed gaat, waarom dat gebeurd en het dan aanpassen.
 
als ik via watch kijk dan geeft hij aan bij "Public c As Integer = 0 " de volgende meldingen:
'System' is a namespace and cannot be used as an expression.
Integer '.' expected.
button 'button' is a type and cannot be used as an expression.
 
Dit schiet zo niet op. Je gebruikt gereserveerde woorden als namen voor variabelen en dat mag niet.
Plaats de hele code eens hier.
 
sorry :o hierbij mijn code
Code:
Imports System.IO
Public Class Form1
    Public n As Integer 
    Public c As Integer = 0 
    Public a As String
    Public image As String




    Private Sub btnNewGame_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNewGame.Click
       

        If File.Exists("C:\woorden.txt") Then 

            
            For Each button As Button In GroupBox1.Controls
                button.Enabled = True
            Next
           

            Dim words() As String = File.ReadAllLines("c:\woorden.txt") 
            Dim r As New Random(System.DateTime.Now.Millisecond)


            n = r.Next(0, 14) 
            Dim amount As Integer = words(n).Count()

            'Label9.Text = "Letters:" & " " & amount

            Dim letters() As Char = words(n)
            Dim idxnum As Integer = 0 

            MessageBox.Show(words(n))
           


            For Each labelitm As Label In Me.GroupBox2.Controls 
                If idxnum <= amount - 1 Then 
                    labelitm.Text = letters(idxnum) 
                Else
                    labelitm.Text = ""
                End If
                idxnum = idxnum + 1  
            Next

            For Each labelitm As Label In GroupBox2.Controls 
                If labelitm.Text = "" Then
                Else
                    labelitm.Visible = False
                End If
            Next
            'For Each i In words(n)
            'MessageBox.Show(i)
            'Next
        Else
            MessageBox.Show("Kan het bestand woorden.txt niet vinden")
        End If
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        PictureBox1.Image = My.Resources.bloem1
    End Sub
Code:
 Private Sub labelcheck()
        
        For Each labelitm As Label In GroupBox2.Controls

            If a = labelitm.Text Then
                labelitm.Visible = True
                c = c + 1
            Else

            End If

        If Label1.Visible AndAlso Label2.Visible AndAlso Label3.Visible AndAlso Label4.Visible AndAlso Label5.Visible AndAlso Label6.Visible AndAlso Label7.Visible AndAlso Label8.Visible = True Then
            MessageBox.Show("Prima je hebt het woord geraden")

            btnNewGame.PerformClick()

        End If

        Next

        If c = 0 Then
            Select Case image
                Case "bloem1"
                    PictureBox1.Image = My.Resources.bloem2
                Case "bloem2"
                    PictureBox1.Image = My.Resources.bloem3
                Case "bloem3"
                    PictureBox1.Image = My.Resources.bloem4
                Case "bloem4"
                    PictureBox1.Image = My.Resources.bloem5
                Case "bloem5"
                    PictureBox1.Image = My.Resources.bloem6
                Case "bloem6"
                    PictureBox1.Image = My.Resources.bloem7
                Case "bloem7"
                    PictureBox1.Image = My.Resources.bloem8

                    MessageBox.Show("Helaas je hebt verloren")
            End Select



            btnNewGame.PerformClick()

        End If



    End Sub
Code:
Private Sub ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click, Button4.Click, Button5.Click, Button6.Click, Button7.Click, Button8.Click, Button9.Click,
        Button10.Click, Button11.Click, Button12.Click, Button13.Click, Button14.Click, Button15.Click, Button16.Click, Button17.Click, Button18.Click, Button19.Click, Button20.Click, Button21.Click, Button22.Click, Button23.Click, Button24.Click,
        Button25.Click, Button26.Click 

        Select Case DirectCast(sender, Button).Name

            Case "Button1"
                Button1.Enabled = False
                a = "A"
                c = 0
                labelcheck()

            Case "Button2"
                Button2.Enabled = False
                a = "B"
                c = 0
                labelcheck()

            Case "Button3"
                Button3.Enabled = False
                a = "C"
                c = 0
                labelcheck()

            Case "Button4"
                Button4.Enabled = False
                a = "D"
                c = 0
                labelcheck()

            Case "Button5"
                Button5.Enabled = False
                a = "E"
                c = 0
                labelcheck()

            Case "Button6"
                Button6.Enabled = False
                a = "F"
                c = 0
                labelcheck()

            Case "Button7"
                Button7.Enabled = False
                a = "G"
                c = 0
                labelcheck()

            Case "Button8"
                Button8.Enabled = False
                a = "H"
                c = 0
                labelcheck()

            Case "Button9"
                Button9.Enabled = False
                a = "I"
                c = 0
                labelcheck()

            Case "Button10"
                Button10.Enabled = False
                a = "J"
                c = 0
                labelcheck()

            Case "Button11"
                Button11.Enabled = False
                a = "K"
                c = 0
                labelcheck()

            Case "Button12"
                Button12.Enabled = False
                a = "L"
                c = 0
                labelcheck()

            Case "Button13"
                Button13.Enabled = False
                a = "M"
                c = 0
                labelcheck()

            Case "Button14"
                Button14.Enabled = False
                a = "N"
                c = 0
                labelcheck()

            Case "Button15"
                Button15.Enabled = False
                a = "O"
                c = 0
                labelcheck()

            Case "Button16"
                Button16.Enabled = False
                a = "P"
                c = 0
                labelcheck()

            Case "Button17"
                Button17.Enabled = False
                a = "Q"
                c = 0
                labelcheck()

            Case "Button18"
                Button18.Enabled = False
                a = "R"
                c = 0
                labelcheck()

            Case "Button19"
                Button19.Enabled = False
                a = "S"
                c = 0
                labelcheck()

            Case "Button20"
                Button20.Enabled = False
                a = "T"
                c = 0
                labelcheck()

            Case "Button21"
                Button21.Enabled = False
                a = "U"
                c = 0
                labelcheck()

            Case "Button22"
                Button22.Enabled = False
                a = "V"
                c = 0
                labelcheck()

            Case "Button23"
                Button23.Enabled = False
                a = "W"
                c = 0
                labelcheck()

            Case "Button24"
                Button24.Enabled = False
                a = "X"
                c = 0
                labelcheck()

            Case "Button25"
                Button25.Enabled = False
                a = "Y"
                c = 0
                labelcheck()

            Case "Button26"
                Button26.Enabled = False
                a = "Z"
                c = 0
                labelcheck()
            Case "Button27"
                Button27.Enabled = False
                a = " "
                c = 0
                labelcheck()
        End Select

    End Sub
Code:
Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click
        Me.Close()
    End Sub
End Class
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan