Jonas Skrevet 18. november 2006 Del Skrevet 18. november 2006 Hei, Husker for lenge siden å ha lest om en API funksjon som returnerte alle punktene i en linje, som feks. tegnes med .Line-funksjonen, men nå finner jeg den ikke. Noen som vet navnet på denne? Feks., punktene mellom 0.0 og 2.2 vil bli: 0.0 1.1 2.2 - Jonas Lenke til kommentar
aadnk Skrevet 18. november 2006 Del Skrevet 18. november 2006 Hm, jeg er ikke kjent med noen slik API-funksjon, men hva med å simpelthen regne ut linjens koordinater selv? Her har du en simplifisert tegnefunksjon: Public Sub DrawLine(Source As Form, ByVal X1 As Single, ByVal Y1 As Single, _ ByVal X2 As Single, ByVal Y2 As Single, ByVal Color As Long) Dim dX As Single, dY As Single, Lenght As Single, Tell As Long ' Kalkuler lengden på linjen (ved å benytte Pytagoras' setning) Lenght = Sqr(((X2 - X1) ^ 2) + ((Y2 - Y1) ^ 2)) ' Regn ut endringen i X- og Y-aksen for hver piksel dX = (X2 - X1) / Lenght dY = (Y2 - Y1) / Lenght ' Tegn alle piksler For Tell = 0 To Lenght ' Tegn denne piksel Source.PSet (X1, Y1), Color ' Flytt til neste piksel X1 = X1 + dX Y1 = Y1 + dY Next End Sub Lenke til kommentar
Jonas Skrevet 18. november 2006 Forfatter Del Skrevet 18. november 2006 Triks, skal prøve det. Takk! Lenke til kommentar
Jonas Skrevet 24. november 2006 Forfatter Del Skrevet 24. november 2006 (endret) Har støtt på et nytt problem. Dette er en del av et spill hvor man styrer slanger rundt i et brett, og slangene skal selvsagt ikke kollidere med hverandre. (Google - Zatacka) Tingen er at jeg nå finner alle punktene til en linje, og jeg lagrer verdiene som True, som vil si at den delen av brettet er opptatt. Problemet oppstår da slangene er 5 pixel tykk, mens definisjonene i bakgrunnen kun er 1 px. Det resulterer i at slanger kan kjøre inni hverandre, men fortsatt ikke bli registrert som i kontakt med hverandre. I tillegg får jeg et annet problem, som jeg har prøvd å illustrere her, med to slanger som kjører igjennom hverandre. Alt dette koker ned til; hvordan kan jeg finne alle punktene til en linje som er tykkere enn 1px? En løsning ville jo selvsagt hver å bruke GetPixel og bare faktisk sjekke om fargen ikke er svart, men det er jo så utrolig tregt. Eller finnes det kansje en bedre måte å gjøre det på? Legger forresten med et vedlegg, for å vise hva jeg mener med "slanger". (Velg minimum to spillere og trykk space-knappen for å begynne) (Igjen, bare rename *.txt til *.rar - forumet tillater egentlig ikke slike filtyper) Edit: Nevermind, jeg fikk løst det ved å søke i et vist område rundt snaken's og sjekke siste posisjon om verdiene i arrayet var satt til true. Edit: Har forøvrig lagt det ut her, http://www.zatacka.moo.no/ ZATACKA.txt Endret 24. november 2006 av Jonas Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå