Avatar billede hobbittend Novice
02. januar 2010 - 17:38 Der er 9 kommentarer og
1 løsning

variable object navne

Hej... Jeg skal have lavet et mastermindspil. Jeg tænker mig at strukturere spillepladen ved at have nogle pictureboxe, som så skifter farve til den farve man vælger.

Jeg vil gerne have at man skal kunne vælge hvor mange farve man skal gætte og hvor mangel forsøg man vil have (rækker og kolonner af pictureboxes) Det vil sige at skjal man f.eks. gætte 4 farver på tre forsøg:

PictureBox1.visible = true
PictureBox2.visible = true
PictureBox3.visible = true
PictureBox4.visible = true
PictureBox5.visible = False
...
PictureBox10.visible = False

Jeg har 10 i hver række og så fortsætter de med at 11-14 skal være visible og 15-20 skal ikke.

Det er temmelig meget kode der skal til, og jeg tænkte at det kunne gøres med et loop.... Det her var mit bud:

Dim AntalForsøg As Integer = 3
Dim i As Integer = 1
        For i = 1 To AntalForsøg
            PictureBoxi.Visible = True
        Next i

Denne kører også med værdierne 11 til antalforsøg + 10 osv....
Navnet på pictureboxen skifter altså, men koden her virker bare ikke..

Er det muligt at gøre det med denne metode, og i så fald hvad skal koden hedde?

Hvis ikke, hvordan skal man så strukturere det?
Avatar billede arne_v Ekspert
02. januar 2010 - 18:00 #1
Prøv og lav dine PictureBox som et array, så er de nemme at iterere over.
Avatar billede hobbittend Novice
02. januar 2010 - 18:22 #2
Jeg er ikke helt sikker på om jeg forstår dig korrekt.

Jeg skriver:

Dim Picturebox(5)

For i = 1 To AntalForsøg
            Picturebox(i).visble = True
        Next


fejlmeddelelse:
Objektvariablen eller With-blokvariablen er ikke angivet.
Avatar billede arne_v Ekspert
02. januar 2010 - 18:34 #3
Nok snarere noget a la:

Dim pb() As Picturebox = New PictureBox(AntalForsøg)
For i = 1 To AntalForsøg
    pb(i) = New PictureBox()
    Controls.Add(pb(i))
Next
For i = 1 To AntalForsøg
    pb(i).visble = True
Next
Avatar billede hobbittend Novice
02. januar 2010 - 18:43 #4
Linjen " Dim pb() As PictureBox = New PictureBox(AntalForsøg)"

giver "too many arguments to 'public Sub new()'"

og  "pb(i).visble = True"

giver "'visible' is not a member of 'System.Windows.Forms.PictureBox'" (hvilket undrer mig en del ...
Avatar billede arne_v Ekspert
02. januar 2010 - 18:58 #5
Dim pb() As PictureBox = New PictureBox(AntalForsøg) { }
Avatar billede hobbittend Novice
02. januar 2010 - 19:48 #6
Fantastisk... Nu har jeg siddet og fiflet lidt frem og tilbage med det, og nu spiller det bare... Tusind tak for hjælpen..

Da jeg (formodentlig) skal bruge det til eksamensopgave vil jeg meget gerne lige forstå de enkelte ting til bunds..

kan du forklare følgende for mig:

Hvilken funktion har "{ } "-tegnene?

I linjen "Dim pb() As Picturebox = New PictureBox(AntalForsøg)"
Hvad indikerer den parameter der her er "AntalForsøg" ? Er det hvor mange vi laver?

Hvad nøjagtigt gør "Controls.Add(PBLodret(i))"


Mange tak for hjælpen.. Skriv evt. et svar så du kan få pointene...
Avatar billede arne_v Ekspert
02. januar 2010 - 19:55 #7
svar
Avatar billede arne_v Ekspert
02. januar 2010 - 19:55 #8
{ } gør at VB.NET ved at det er et array og ikke en enkelt instans
Avatar billede arne_v Ekspert
02. januar 2010 - 19:56 #9
AntalForsøg er antal pladser i arrayet
Avatar billede arne_v Ekspert
02. januar 2010 - 19:56 #10
Controls.Add(PBLodret(i)) tilgøjer den i'te PictureBox til formen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester