// Richtungen pour Gesten
p=0 // index Position Trennzeichen dans xg, yg
tg = -1 // Nr. Teilgeste
xg="" yg="" xge=[] yge=[] // partie-Geste: Cordes, Gestenfelder
xp=[0] yp=[0] // Positionen p Trennz ; dans Cordes xg, yg
ix=0 iy=0 dx=0 dy=0 // Koordinaten, Differenzen
var rtg =[ // z
["\u21d8" "\u21d7" "\u21d2"] // 0 à droite
["\u21d9" "\u21d6" "\u21d0"] // 1 à gauche
["\u21d3" "\u21d1" "\u2299"] // 2 vertikal, Stillstand
] // Matrix qui Richtungssymbole
//s 0 1 2
// runter hoch horizontal
imprimer "direction de Gesten"
proc event id data
global p tg xg xge yg yge xp yp
cas id==event.touchdown : gekoord data.x data.y // Koord. aufnehmen
cas id==event.touchmove : gekoord data.x data.y // Koord. aufnehmen
si id==event.touchend
tg++ // Nr. qui Teilgeste erhöhen
xge[tg] = xg // Teilgeste dans x Gestenfeld
yge[tg] = yg // Teilgeste dans y Gestenfeld
// Teilgeste auswerten:
// Regionen et Anstieg/Krümmung ermitteln / "Wende"punkte - teils offen
kruemmung // ... ist encore UNVOLLSTÄNDIG
// Abschluss-Teilgeste komplexer Gesten erkennen - ist encore offen
cas tg==7 : tg=0 // 7 Teilgesten
// je Teilgeste récente initialisieren
xg="" // x Koordinaten-String (; separiert)
yg="" // x Koordinaten-String (; separiert)
p=0 // index Position Trennzeichen (;)
xp=[0] // Datenfeld avec Positionen qui Trennzeichen dans xg
yp=[0] // Datenfeld avec Positionen qui Trennzeichen dans xg
endif
endproc
proc gekoord x y // Geste: x y Koordinaten aufnehmen
global p ix xp iy yp xg yg
cas y<0 : y=0 // wegen Infoleiste (.y negativ)
p++ // index Position Trennzeichen ;
ix = round(x 0 vrai) + ";" // integer x avec Semikolon
xp[p]=xp[p-1] + str.len ix // x Trennzeichenposition enlever
iy = round(y 0 vrai) + ";" // integer y avec Semikolon
yp[p]=yp[p-1] + str.len iy // y Trennzeichenposition enlever
xg=xg+ix // ix à String anfügen
yg=yg+iy // iy à String anfügen
endproc
proc kruemmung
global tg xp yp xg yg dx dy rtg
i=0
verlauf = ""
cas tg==7 : cls
imprimer "x " + (str.len(xp)-1) +": " + xg
imprimer "y " + (str.len(yp)-1) +": " + yg
tandis que i < (len(xp)-2)
// long pour Vergleiche important: différent Stellenzahl!
x1 = long str.mid xg xp[i]+1 xp[i+1]-xp[i]-1 // Koordinaten auslesen
x2 = long str.mid xg xp[i+1]+1 xp[i+2]-xp[i+1]-1
y1 = long str.mid yg yp[i]+1 yp[i+1]-yp[i]-1
y2 = long str.mid yg yp[i+1]+1 yp[i+2]-yp[i+1]-1
dx = x2-x1 // pour Krümmungsverhalten VORBEREITET
dy = y2-y1
z=2 // x1==x2 la ligne rtg Richtungssymbole
s=2 // y1==y2 Spalte rtg Richtungssymbole
cas x1!=x2 : z = 0+(x1>x2) // Zeilenwahl z
cas y1!=y2 : s = 0+(y1>y2) // Spaltenwahl s
verlauf = verlauf + rtg[z][s] // Richtungssymbol anhängen
// imprimer " dx "+ dx + " dy "+ dy + " " + verlauf
i++
Wend
imprimer verlauf
endproc