Pagina 1 van 2 12 Laatste
  1. #1
    Duffman-'s schermafbeelding
    Lid sinds
    20/03/05
    Locatie
    Lille
    Berichten
    2.818
    iTrader
    11 (100%)

    [PROG][VB.NET] Mijnenveger (opdracht toekennen aan knop)

    Beste

    ik ben van plan een mijnenveger te maken, gelijkaardig aan diegene die we allemaal kennen vanuit Windows. Ongeveer zelfde interface enzo maar ik was aan het denken hoe ik dit moest gaan doen en ik moet om te beginnen al vrij veel knoppen genereren als ik het spel opstart. Nu is mijn vraag hoe kan ik dit doen? Want ik kan geen arrays gebruiken onder het type "new button".
    Hetgeen ik nu heb is
    Code:
    Dim G As New Button
            G.Location = New Point(50, 50)
            G.Text = "kank er nog 1 maken?"
            G.Size = New Size(50, 50)
     Me.Controls.Add(G)
    Nuja, 1 knop maken kan ik dus maar hoe kan ik er meerdere maken. En nu denk ik meer in de toekomst hoe kan ik aan deze knoppen een gebeurtenis toekennen. Ik vermoed iets met een eventhandler maar weet niet juist hoe de vork in de steel zit. Ik weet dat ik veel vraag maar ik zou er wel veel mee kunnen leren.

    In ieder geval bedankt,
    Duffman-

  2. #2
    BuiZe's schermafbeelding
    Lid sinds
    8/08/02
    Berichten
    158
    iTrader
    4 (100%)
    Hier kan je normaal wel enige informatie uithalen: http://gbit.be/Mijnenveger.rar

    Het komt ruwweg op het volgende neer:
    Code:
    Dim knoppen(,) As Button
    
    ...
    
            knoppen = New Button(intVeldGrootte, intVeldGrootte) {}
    
            For i = 1 To intVeldGrootte
                For j = 1 To intVeldGrootte
                    knoppen(i, j) = New Button
                    Controls.Add(knoppen(i, j))
                    AddHandler knoppen(i, j).MouseUp, AddressOf Knoppen_ClickHandler
                Next
            Next
    
    ...
    
    Public Sub Knoppen_ClickHandler(ByVal sender As System.Object, ByVal e As System.windows.Forms.MouseEventArgs)
        ...
    End Sub

  3. #3
    Duffman-'s schermafbeelding
    Lid sinds
    20/03/05
    Locatie
    Lille
    Berichten
    2.818
    iTrader
    11 (100%)
    Citaat Oorspronkelijk geplaatst door BuiZe
    Hier kan je normaal wel enige informatie uithalen: http://gbit.be/Mijnenveger.rar

    Het komt ruwweg op het volgende neer:
    Code:
    Dim knoppen(,) As Button
    
    ...
    
            knoppen = New Button(intVeldGrootte, intVeldGrootte) {}
    
            For i = 1 To intVeldGrootte
                For j = 1 To intVeldGrootte
                    knoppen(i, j) = New Button
                    Controls.Add(knoppen(i, j))
                    AddHandler knoppen(i, j).MouseUp, AddressOf Knoppen_ClickHandler
                Next
            Next
    
    ...
    
    Public Sub Knoppen_ClickHandler(ByVal sender As System.Object, ByVal e As System.windows.Forms.MouseEventArgs)
        ...
    End Sub
    Bedankt dit helpt me al hard, toch heb ik nog 2 vraagjes
    die (,) in de declaratie waar staat die voor?
    En waar staan de accolades voor?

  4. #4
    BuiZe's schermafbeelding
    Lid sinds
    8/08/02
    Berichten
    158
    iTrader
    4 (100%)
    http://www.startvbdotnet.com/language/arrays.aspx

    - Dim knoppen(,) As Button definieert knoppen als zijnde een (rechthoekige) 2D-array van nog onbepaalde grootte.
    - knoppen = New Button(a, b) {} kent een feitelijke grootte toe aan de dimensies, de { ... } bevat de initiele waarden. Deze laten we hier leeg omdat we elk object apart moeten aanmaken.

  5. #5
    Duffman-'s schermafbeelding
    Lid sinds
    20/03/05
    Locatie
    Lille
    Berichten
    2.818
    iTrader
    11 (100%)
    Hey buize, bedankt voor je hulp, ik zit ondertussen al heel wat verder. Men bommen en getallen enzovoort worden al gegenereerd. Nu ga ik moeten uitzoeken hoe ik weet op welke knop er geklikt wordt.

    screenshot:http://users.pandora.be/duffman/woot.JPG

    edit:
    Code:
    ' Visual Basic
    Public Sub ClickHandler(ByVal sender As Object, ByVal e As _
       System.EventArgs)
       MessageBox.Show("you have clicked button " & CType(CType(sender, _
          System.Windows.Forms.Button).Tag, String))
    End Sub
    werkt niet. Weet iemand misschien hoe ik dit kan weten, welke knop er aangeklikt is?
    Grtz,
    Duffman-

    //edit: tis nu helemaal in orde me die knop, nen tag meegeve
    Laatst gewijzigd door Duffman-; 4 augustus 2006 om 00:16

  6. #6
    Duffman-'s schermafbeelding
    Lid sinds
    20/03/05
    Locatie
    Lille
    Berichten
    2.818
    iTrader
    11 (100%)
    Als het iemand interesseert.
    Kben nu in de fase waarin het zou moete gebeuren dat als je in een ruimte klikt waar nergens in de buurt zich een bom bevind, dat er knoppen rond ook zichtbaar worden maar dit is nogal moeilijk but working on it...
    nu slapen en morgen verderdoen.

  7. #7
    BuiZe's schermafbeelding
    Lid sinds
    8/08/02
    Berichten
    158
    iTrader
    4 (100%)
    Kijk eens in mijn code, ik heb dat recursief opgelost, door op elke knop errond te "klikken" (ClickHandler aanroepen) waar geen mijn ligt en nog niet op geklikt werd. (Het stuk tussen de '__TEST__ comments)

  8. #8
    Duffman-'s schermafbeelding
    Lid sinds
    20/03/05
    Locatie
    Lille
    Berichten
    2.818
    iTrader
    11 (100%)
    Io, men mijnenveger is bijna af (ben enkele weken weggeweest) maar hij is echt enorm traag eigenlijk. Als ik op een leeg vakje klik dan moet ik echt lijk een paar seconde wachten totdat hem laat zien wat hij moet laten zien. Als er iemand geïnteresseerd is in de code PM Mij dan met uw emailadres en kstuur da wel door dan. Kben nu met recursieve functies aant werken om die lege vakjes zichtbaar te maken. Mijn oplossing is een pak omslachtiger dan die van BuiZe ... das wel een feit.

  9. #9

    Lid sinds
    7/06/06
    Locatie
    Antwerpen
    Berichten
    157
    iTrader
    0
    Heb ooit ook iets dergelijks gemaakt toen nog in .NET en voor zover ik me nog kan herinneren had ik net hetzelfde "traag probleem". Ik had toen een kalender geschreven die in een form dynamisch labels ging createn per dag afhankelijk van de geselecteerde maand. (was de bedoeling om dat fixed op mijn desktop te krijgen zoals er veel van die tools te vinden zijn. Daar heb'k jammer genoeg nooit een oplossing voor gevonden:/) Maar doordat die dynamisch in dien array gestoken werden, vertraagde dat dus gans de boel. Ze gewoon als kadertjes painten ging een pak sneller
    Voor u knoppen zal dat moeilijker zijn om dan ook nog effectief een push_effect te verkrijgen

  10. #10
    Duffman-'s schermafbeelding
    Lid sinds
    20/03/05
    Locatie
    Lille
    Berichten
    2.818
    iTrader
    11 (100%)
    Mja kan bijna gans opnieuw beginnen me images dan eigenlijk. Dno yet hoe ik het ga doen. Tis vanaf die recursieve functies (functies die zichzelf oproepen) dat het traag is beginne ngaan.

  11. #11
    Duffman-'s schermafbeelding
    Lid sinds
    20/03/05
    Locatie
    Lille
    Berichten
    2.818
    iTrader
    11 (100%)
    Hey, ja kben nog steeds bezig met mijnenveger maar kheb net vakantiewerk moeten doen dus toen ben ik er heel wat minder mee bezig geweest om niet te zeggen niets. Ik zat nu ondertussen met de vraag: hoe komt het dat dit niet werkt:

    Code:
            For intTeller = 1 To intVeldgrootte
                Controls.Remove(btnKnop(intTeller, intVeldgrootte))
            Next
    er wordt nog geen enkele knop verwijderd ...

  12. #12
    Duffman-'s schermafbeelding
    Lid sinds
    20/03/05
    Locatie
    Lille
    Berichten
    2.818
    iTrader
    11 (100%)
    Up up..

    kheb nu dus dit

    Code:
        Private Function bla()
            For intTeller1 = 1 To intVeldgrootte
                For intTeller = 1 To intVeldgrootte
                    Controls.Remove(btnKnop(intTeller, intVeldgrootte))
                Next
            Next
        End Function
    waarom worden die knoppen ni verwijderd?

  13. #13
    Cakeman's schermafbeelding
    Lid sinds
    4/10/02
    Locatie
    Mol / Bree
    Berichten
    2.418
    iTrader
    2 (100%)
    Citaat Oorspronkelijk geplaatst door Duffman-
    Up up..

    kheb nu dus dit

    Code:
        Private Function bla()
            For intTeller1 = 1 To intVeldgrootte
                For intTeller = 1 To intVeldgrootte
                    Controls.Remove(btnKnop(intTeller, intVeldgrootte))
                Next
            Next
        End Function
    waarom worden die knoppen ni verwijderd?
    Wordt er helemaal niets verwijderd?

    Probeer eens "Controls.Remove(btnKnop(intTeller, intVeldgrootte))" te vervangen door "Controls.Remove(btnKnop(intTeller, intTeller1))"

    Op die manier ga je alle knoppen overlopen en niet enkel de onderste rij.

  14. #14
    sabaoth's schermafbeelding
    Lid sinds
    26/11/04
    Locatie
    Mechelen
    Berichten
    360
    iTrader
    0
    ik kan u een volledige mijneveger geve me highscores en al vorig jaar moette make

  15. #15
    Duffman-'s schermafbeelding
    Lid sinds
    20/03/05
    Locatie
    Lille
    Berichten
    2.818
    iTrader
    11 (100%)
    Menne mijnenveger werkt nu volledig
    maar sabaoth ... kvroeg mij nu af, uw mijnenveger was met highscores enal ... ik vroeg me af hoe kan je ervoor zorgen dat je werkelijk highscores bijhoudt ook al zet je de PC/toepassing af? Hoe sla je dat op?

Pagina 1 van 2 12 Laatste

Regels voor berichten

  • Je mag geen nieuwe discussies starten
  • Je mag niet reageren op berichten
  • Je mag geen bijlagen versturen
  • Je mag niet je berichten bewerken
  •  

Inloggen

Inloggen