MausFiguren erkennen
Übersicht

FWeinbehemals "ich"Betreff: MausFiguren erkennen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo ich wolte mal nein Mauszeiger erkennungsprogramm machen ich habe hier nen Code der auch so weit geht aber ich weiß nicht wie ich das am besten abfragen soll nur Links Rechts hoch und runter reicht mir nicht ich will auch obenRechts usw das ist bei mir auch so weit drin nur scheint es nicht richtieg zu funktionieren weiß einer Worann das Liegt ??
Code: [AUSKLAPPEN] Graphics 800,600,16,2 SetBuffer BackBuffer() Type Maus Field X,Y End Type Dim R$(1000) While Not KeyHit(1) Cls X=MouseX() Y=MouseY() If X<>Xa And Y<>Ya And MouseDown(1) Then p.Maus=New Maus p\X=X p\Y=Y EndIf For p.Maus=Each Maus p1.Maus=Before P If p1.Maus<>Null Then Line p\x,p\y,p1\x,p1\y EndIf Next f.Maus=Last Maus If f.Maus<>Null Then nf.Maus=Before f.Maus If nf.Maus<>Null Then If f\y-nf\y<0 Then ;Oben If Richtung=3 Then Richtung=2 Else Richtung=1 EndIf EndIf If f\x-nf\x>0 Then ;Rechts If Richtung=5 Then Richtung=4 Else Richtung=3 EndIf EndIf If f\y-nf\y>0 Then ;Unten If Richtung=7 Then Richtung=6 Else Richtung=5 EndIf EndIf If f\x-nf\x<0 Then ;Links If Richtung=1 Then Richtung=8 Else Richtung=7 EndIf EndIf EndIf EndIf Select Richtung Case 1 Text 10,10,"Oben" R$(i)="Oben" Case 2 R$(i)="ObenRechts" Case 3 Text 10,10,"Rechts" R$(i)="Rechts" Case 4 R$(i)="RectsUnten" Case 5 Text 10,10,"Unten" R$(i)="Unten" Case 6 R$(i)="UntenLinks" Case 7 Text 10,10,"Links" R$(i)="Links" Case 8 R$(i)="LinksOben" End Select x=xa y=ya i=i+1 Flip Wend |
||
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs |
Krümel |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mein Ansatz sieht so aus:
(Ich werte den Winkel zwischen der aktuellen und letzten Mausposition aus) Code: [AUSKLAPPEN] Graphics 800,600,16,2 SetBuffer BackBuffer() mxo=MouseX() myo=MouseY() While Not KeyHit(1) mx=MouseX() my=MouseY() dx=(mxo-mx) dy=(myo-my) d=Sqr(dx*dx+dy*dy) If d>10 Line mxo,myo,mx,my mxo=mx myo=my w=Abs(ATan2(dx,dy)+180)/45 Select w Case 0,8 AppTitle "Runter " Case 1 AppTitle "schräg Runter / Rechts " Case 2 AppTitle "Rechts " Case 3 AppTitle "schräg Hoch / Rechts " Case 4 AppTitle "Hoch " Case 5 AppTitle "schräg Hoch / Links " Case 6 AppTitle "Links " Case 7 AppTitle "schräg Runter / Links " Default AppTitle "" End Select EndIf Flip Wend |
||
FWeinbehemals "ich" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Super danke aber ich habe mal noch nen Bischen weiter gesucht und dan Habe ich im BMax Forum genau das gefunden was ich gesucht habe jetzt geht das super ^^
Ich werde den Code gleich mal hier Posten. [Edit] So das ist er ist zum Zahlen erkennen ganz gut aber noch nix Besonderes ^^ Code: [AUSKLAPPEN] Graphics 800,600,16,2 SetBuffer BackBuffer() Global tmp_x Global tmp_y Global Geste$ Global tolerance=30 Global Rz Type Maus Field X,Y End Type While Not KeyHit(1) Cls X=MouseX() Y=MouseY() If X<>Xa And Y<>Ya And MouseDown(1) Then p.Maus=New Maus p\X=X p\Y=Y EndIf For p.Maus=Each Maus p1.Maus=Before p.Maus If p1<>Null Then Line p\x,p\y,p1\x,p1\y EndIf If MouseDown(1) If Not mouse_press tmp_x = MouseX() tmp_y = MouseY() mouse_press = True EndIf AddPoint(tmp_x,tmp_y,MouseX(),MouseY()) ElseIf mouse_press Erkennung() Del() mouse_press = False EndIf Next Text 10,10,Rz Text 10,40,Geste$ Flip Wend Function AddPoint(x1,y1,x2,y2) xdif= x1-x2 ydif= y1-y2 If Abs(xdif)<tolerance/2 And Abs(ydif)<tolerance/2 Return EndIf If Abs(xdif)>Abs(ydif) If xdif<0 Gest$=Gest$+"R" Else Gest$=Gest$+"L" EndIf Else If ydif<0 Gest$=Gest$+"D" Else Gest$=Gest$+"U" EndIf EndIf tmp_x = MouseX() tmp_y = MouseY() If Right(Geste$,1)<>Gest$ Then Geste$=Geste$+Gest$ EndIf End Function Function Del() If Not Geste$ Then Return Geste = "" For p.Maus=Each Maus Delete p.Maus Next End Function Function Erkennung() Select Geste$ Case "LDRUL":Rz="0" Case "URD":Rz="0" Case "RUD":Rz="1" Case "UD":Rz="1" Case "URDLDR":Rz="2" Case "URDR":Rz="2" Case "RDLRDL":Rz="3" Case "LUD":Rz="4" Case "LURD":Rz="4" Case "LRURD":Rz="4" Case "LDRDL":Rz="5" Case "LDRULD":Rz="6" Case "RDLR":Rz="7" Case "RD":Rz="7" Case "LDRDLU":Rz="8" Case "LDRDLUL":Rz="8" Case "LDRUDL":Rz="9" End Select End Function |
||
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs |
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
ist schon ne ganz gute erkennung, aber die abfrage solltest du noch mal überarbeiten, den keiner wird eine 4 zb. so zeichnen
|-----| -------| | -------| | LRURD DRUD oder einfach DRD wären besser geeignet, bei anderen Zahlen gibt es auch noch probleme |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
FWeinbehemals "ich" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja ich wieß ich bin grade am Überlegen ob ich nicht do die Methode mit den 8 RIchugnen nehmen ist bischen genauer denke ich aber muss mal sehen
[Edit] Ich habe jetzt mal nen Kleines SPiel angefangen also wie auf dem DS mit dem DR da ich weiß nicht wie das heist man bekommt ne aufgabe und muss das ergebins hinschreiben ^^ Code: [AUSKLAPPEN] Graphics 800,600,16,2 SetBuffer BackBuffer() Global tmp_x Global tmp_y Global Geste$ Global tolerance=30 Global Rz$ Global erg Global zei Global z,z1 SeedRnd MilliSecs() Type Maus Field X,Y End Type Aufgabe() Dat=WriteFile("1.txt") While Not KeyHit(1) Cls If Abs(erg)=Rz Then Aufgabe() Rz="" Else Select zei Case 1 erg=z+z1 Text 400,300,z+"+"+z1,1,1 Case 2 erg=z-z1 Text 400,300,z+"-"+z1,1,1 Case 3 erg=z*z1 Text 400,300,z+"*"+z1,1,1 Case 4 If z1<>0 Then erg=z/z1 Else erg=0 EndIf Text 400,300,z+"/"+z1,1,1 End Select EndIf X=MouseX() Y=MouseY() If X<>Xa And Y<>Ya And MouseDown(1) Then p.Maus=New Maus p\X=X p\Y=Y EndIf For p.Maus=Each Maus p1.Maus=Before p.Maus If p1<>Null Then Line p\x,p\y,p1\x,p1\y EndIf If MouseDown(1) If Not mouse_press tmp_x = MouseX() tmp_y = MouseY() mouse_press = True EndIf AddPoint(tmp_x,tmp_y,MouseX(),MouseY()) ElseIf mouse_press Erkennung() Del() mouse_press = False EndIf Next If KeyHit(59) Then Rz="" EndIf Text 10,10,Rz Text 10,40,Geste$ Flip Wend Function AddPoint(x1,y1,x2,y2) xdif= x1-x2 ydif= y1-y2 If Abs(xdif)<tolerance/2 And Abs(ydif)<tolerance/2 Return EndIf If Abs(xdif)>Abs(ydif) If xdif<0 Gest$=Gest$+"R" Else Gest$=Gest$+"L" EndIf Else If ydif<0 Gest$=Gest$+"D" Else Gest$=Gest$+"U" EndIf EndIf tmp_x = MouseX() tmp_y = MouseY() If Right(Geste$,1)<>Gest$ Then Geste$=Geste$+Gest$ EndIf End Function Function Del() If Not Geste$ Then Return Geste = "" For p.Maus=Each Maus Delete p.Maus Next End Function Function Erkennung() Select Geste$ Case "LDRUL":Rz=Rz+"0" Case "RUD":Rz=Rz+"1" Case "UD":Rz=Rz+"1" Case "URDLDR":Rz=Rz+"2" Case "URDR":Rz=Rz+"2" Case "RDR":Rz=Rz+"2" Case "RDLRDL":Rz=Rz+"3" Case "RDRDL":Rz=Rz+"3" Case "URDLRDLU":Rz=Rz+"3" Case "RDL":Rz=Rz+"3" Case "URDLDL":Rz=Rz+"3" Case "RDLRDLU":Rz=Rz+"3" Case "RDRDL":Rz=Rz+"3" Case "URDL":Rz=Rz+"3" Case "LUD":Rz=Rz+"4" Case "UDR":Rz=Rz+"4" Case "LDR":Rz=Rz+"4" Case "DR":Rz=Rz+"4" Case "LURD":Rz=Rz+"4" Case "LRURD":Rz=Rz+"4" Case "LDRDL":Rz=Rz+"5" Case "LDRULD":Rz=Rz+"6" Case "DRULD":Rz=Rz+"6" Case "RDLR":Rz=Rz+"7" Case "RD":Rz=Rz+"7" Case "LDRDLU":Rz=Rz+"8" Case "LDRDLUL":Rz=Rz+"8" Case "LDRUDL":Rz=Rz+"9" End Select End Function Function Aufgabe() z=Rnd(0,10) z1=Rnd(0,10) zei=Rnd(1,4) End Function |
||
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group