[Vb] Kann man das efektiver machen?

04/06/2011 20:12 Algaten™#1
Hallo,

Ich habe ein Problem mit meinem jetzigen Projekt habe auch für das was ich vor hatte eine gute Lösung erstellt doch laggt diese in meinem Programm ganz schön und wenn ich mir dann vorstelle das ich noch wesentlich mehr überprüfe dann denk ich das wird nichts....

Nun zum Problem ich Überprüfe ob eine Picturebox die andere Berührt dies bewerkstellige ich mit 4 Schleifen.............

2 Jeweils um halt jede Koordinate von der Picturebox rauszufinden aber das ist halt sehr laggi...

Hier der Code vll wisst irh wie ich das gestalten kann das er nicht laggt..

Code:
 Private Sub kollision()


        '---------------------------Kollision Prüfen-----------------------------
        Dim ccheckx As Integer 'CCheck = ControlCheck X/Y
        Dim cchecky As Integer

        For ccheckx = Controlx To Val(Controlx) + Val(controlw) 
            For cchecky = Controly To Val(Controly) + Val(controlh)

                Dim pcheckx As Integer 'PCheck = PlayerCheck X/Y
                Dim pchecky As Integer

                For pcheckx = playerx To Val(playerx) + Val(playerw)  
                    For pchecky = playery To Val(playery) + Val(playerh) 

                        If pcheckx = ccheckx Then

                            If pchecky = cchecky Then

                                kollidiert = 1
                                MsgBox("Verloren!" + vbNewLine + "Sie haben das schwarze Viereck berührt")
                                GoTo exitloop
                            End If

                        ElseIf pchecky = cchecky Then

                            If pcheckx = ccheckx Then

                                kollidiert = 1
                                MsgBox("Verloren!" + vbNewLine + "Sie haben das schwarze Viereck berührt")
                                GoTo exitloop
                            End If

                        End If

                    Next
                Next
            Next
        Next
        '---------------------------Kollision Prüfen Ende---------------------
exitloop:  
       



    End Sub
'Code © by Algaten
Lg Algaten™
04/06/2011 20:25 WhiteCollar#2
Ehm da giebt es einen extra code denn haben ich mal gesehen als ich mir ein Tut reingezogen ahbe in dem es um E-mail spammer ging^^ ich aknn ancher mal gucken aba muss ejtzt erstmal weg^^ guck einfach mal bei youtube^^
04/06/2011 20:28 Algaten™#3
Quote:
Originally Posted by TerrorTom View Post
Ehm da giebt es einen extra code denn haben ich mal gesehen als ich mir ein Tut reingezogen ahbe in dem es um E-mail spammer ging^^ ich aknn ancher mal gucken aba muss ejtzt erstmal weg^^ guck einfach mal bei youtube^^
Ich hab zeit :D

Ich habe auch schonwas gesehn mit Gdi+ jedoch komm ich damit nicht wirklich zurecht deswegen habe ich halt diesen code genommen...
Hab auch schon selbst rübergeschaut aber noch nichts zum verbessern gefunden
04/06/2011 20:43 WhiteCollar#4
Okay hab garde nochmal 10 min gesucht konnte nix finden^^ ehm ich kann morgen nochmal gucken wenn du bis dahin nix gefunden hast^^
04/06/2011 21:19 MoepMeep#5
Startposition+größe auslesen. Dann kannste dir die ganzen schleifen sparen.
04/07/2011 13:40 NoObKiLLyOu#6
Hmm Ich wüsste auch nicht was man da nehmen kann.... Wie laggi is es den überhaupt ein kleines Beispiel vielleicht...
04/07/2011 14:13 Algaten™#7
Quote:
Originally Posted by MoepMeep View Post
Startposition+größe auslesen. Dann kannste dir die ganzen schleifen sparen.
hmm immoment mache ich das:

Controlx = PictureBox2.Location.X
Controly = PictureBox2.Location.Y
controlw = PictureBox2.Width
controlh = PictureBox2.Height

Startposition und größe ist des ja und verarbeiten tu ich das dann mit den schleifen..

Quote:
Originally Posted by NoObKiLLyOu View Post
Hmm Ich wüsste auch nicht was man da nehmen kann.... Wie laggi is es den überhaupt ein kleines Beispiel vielleicht...
Wenn ich nun die erste Picturebox bewege indem ich PfeilTaste Oben drücke dann dauert es länger und halt desto größer die picturebox ist desto mehr laggt es da ja dementsprechend mehr zum überprüfen gibt
04/08/2011 13:42 MoepMeep#8
Dann schaust du, welche Picturebox weiter links anfängt und schaust, ob deren endpunkte in der anderen liegen bzw sogar über diese hinausgehen.

Und btw, ich hoffe, dass du nicht denkst ich hätte deinen 'code' auch nur ansatzweise gelesen.
04/09/2011 09:38 Algaten™#9
Quote:
Originally Posted by MoepMeep View Post
Dann schaust du, welche Picturebox weiter links anfängt und schaust, ob deren endpunkte in der anderen liegen bzw sogar über diese hinausgehen.

Und btw, ich hoffe, dass du nicht denkst ich hätte deinen 'code' auch nur ansatzweise gelesen.
Hmmm dann muss ich wieder koordinaten bestimmem mit schleifen oda?

doch denk ich
04/10/2011 12:49 MoepMeep#10
Quote:
Originally Posted by Algaten™ View Post
Hmmm dann muss ich wieder koordinaten bestimmem mit schleifen oda?

doch denk ich
startpunkt+größe = endpunkt

Wozu schleifen?