[Geöst] Repeat Until und trotzdem Multitasking
-
- Beiträge: 89
- Registriert: Fr 18. Apr 2014, 18:57
Re: Repeat Until und trotzdem Multitasking
Danke ich werds mir später nochmal in Ruhe angucken
Definition "Strategische Fehlerkorrektur":
Solange rumprobieren bisses klappt :D
Solange rumprobieren bisses klappt :D
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Repeat Until und trotzdem Multitasking
Ein kleiner Tipp: Verwende ein Array in den du die Tasten drücke Speicherst.
Dann kannst du im Timer Entsprechend abfragen. In PseudoCode würde es etwa so aussehen:
Keys:array[0..255] of Boolean;
Denn Array Installisierst du dann in einer Schleife mit Standard Werten.
Dann kannst du in OnKeyDown z.b. folgendes machen:
keys[key]=true;
und in onkeyUp dann
keys[key]=false;
Im Timer kannst du dann einfach den Array abfragen:
if Keys[VK_TOP] then ...
und soweiter.
Damit bist du auf der sicheren Seite.
Dann kannst du im Timer Entsprechend abfragen. In PseudoCode würde es etwa so aussehen:
Keys:array[0..255] of Boolean;
Denn Array Installisierst du dann in einer Schleife mit Standard Werten.
Dann kannst du in OnKeyDown z.b. folgendes machen:
keys[key]=true;
und in onkeyUp dann
keys[key]=false;
Im Timer kannst du dann einfach den Array abfragen:
if Keys[VK_TOP] then ...
und soweiter.
Damit bist du auf der sicheren Seite.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Repeat Until und trotzdem Multitasking
Nur kurz zur Info, auf Lazplanet gibt es ein Tutorial für ein Pong-Spiel: http://lazplanet.blogspot.de/2014/10/cr ... rself.html
Ich habe mir dies angeguckt, die Steuerung ist recht misserabel gelöst. Das muss man ja die Finger wund tippen, um den Schläger zu bewegen.
@Pluto
Die Idee finde ich super, die muss ich mir merken.
Reichen hierfür 255 Werte, der Key kommt als Word daher.
Code: Alles auswählen
FormKeyDown(Sender: TObject; var Key: word; Shift: TShiftState)
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 89
- Registriert: Fr 18. Apr 2014, 18:57
Re: Repeat Until und trotzdem Multitasking
Dankeschön
Definition "Strategische Fehlerkorrektur":
Solange rumprobieren bisses klappt :D
Solange rumprobieren bisses klappt :D
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Repeat Until und trotzdem Multitasking
Reichen hierfür 255 Werte, der Key kommt als Word daher.
Eventuell musst du es noch umrechnen mit ord. Also ord(key).
Dann sollte es auf Jedenfall passen.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Repeat Until und trotzdem Multitasking
Noch eine kleine Verbesserung, spart noch ein wenig Speicher, das es nicht auf Geschwindigkeit ankommt.
Code: Alles auswählen
Keys : bitpacked array[0..255] of Boolean;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 89
- Registriert: Fr 18. Apr 2014, 18:57
Re: Repeat Until und trotzdem Multitasking
Also ich hab jetzt mal die Idee mit dem Array ausprobiert: Ich bin aber anscheinend zu blöd ein dynamisches Array zu programmieren und zu übergeben.
Denn hier kommt immer die Fehlermeldung: unit1.pas(26,96) Error: Fields cannot appear after a method or property definition, start a new visibility section first
Denn hier kommt immer die Fehlermeldung: unit1.pas(26,96) Error: Fields cannot appear after a method or property definition, start a new visibility section first
Code: Alles auswählen
type
TWordArray = array of word;
type
{Form1}
...
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState; Keys: TWordArray): TWordArray;
Definition "Strategische Fehlerkorrektur":
Solange rumprobieren bisses klappt :D
Solange rumprobieren bisses klappt :D
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Repeat Until und trotzdem Multitasking
Du hast ja auch die Parameter Liste vom Event erweitert.
Du musst die Variable als Variable Definieren, nicht als Typ bzw. du kannst ein neuen Typ erstellen, dann sieht es so aus:
der Datentyp sollte Boolean sein, nicht Word.
Du musst die Variable als Variable Definieren, nicht als Typ bzw. du kannst ein neuen Typ erstellen, dann sieht es so aus:
Code: Alles auswählen
type
TMyArray = array[0..255] of Boolean
in TFrom1 schreibst du dann einfach:
MyArray:TMyArray.
der Datentyp sollte Boolean sein, nicht Word.
MFG
Michael Springwald
Michael Springwald