Joystickabfrage in C

Turbo-C ist sicherlich eine der mächtigsten Programmiersprachen für den ST. Die Bibliotheken sind schnell und lassen im Funktionsumfang fast keine Wünsche mehr offen. Besonders die Spieleprogrammierer vermissen aber eine Routine zur unkomplizierten Joystickabfrage. Mittlerweile gibt es zwar eine Vielzahl von Vorschlägen zur Abfrage des Joysticks, aber entweder sind diese Routinen zu lang oder zu unhandlich. Um diesen Mißstand zu beseitigen, stellen wir eine kurze, universelle Joystickabfrage in Turbo-C und Assembler vor.

Der Kern, die Assembler-Routine (Listing 4), speichern Sie unter dem Namen JOYSTICK.S. Die Headerdatei (Listing 2) sollten Sie JOYSTICK.H benennen. Das C-Programm im Listing 3 demonstriert den Einsatz der Joystickroutinen. In Listing 4 finden Sie eine vorgefertigte Projektdatei, die ein ablauffertiges Programm erzeugt.

Beachten Sie, daß wir darin das Assembler-Programm mit ».S« aufgenommen haben. Damit geben wir Turbo-C an, JOYSTICK.S mit dem MAS.TTP zu assemblieren. Besitzer eines anderen Assemblers sollten die Assembler-Routine separat assemblieren und eine DRI-Objektdatei erzeugen. Um diese in die Projektdatei einzubinden, ersetzen Sie einfach das ».S« durch ».O«.

Die Joystick-Abfrage schalten Sie mit »j_on()« ein. Von nun an werden Sie von den beiden globalen Variablen »joyst1« und »joyst2« über den Status der Joysticks in Port 1 und 2 informiert. Jede Bewegung verändert den Wert der Variablen. Ein erneuter Aufruf von »j_on()« ist nicht nötig. Um die Joystick-Abfrage wieder abzuschalten, rufen Sie »j_off()« auf.

Die Werte, die die Variablen »joyst1« und »joyst2« annehmen können, finden Sie in der Textbox.

(Ulrich Eckartz/ba)

[1] »Duell im Computer«, ST-Magazin 1/90, Seite 58 f.

Listings 1-4

Diese Werte nehmen die beiden Variablen »joyst1« und »joyst2« an. Kombinationen sind möglich:

oben
5 1 9
links 4 0 8 rechts
6 2 10
unten
Fire + 128


Links

Copyright-Bestimmungen: siehe Über diese Seite
Classic Computer Magazines
[ Join Now | Ring Hub | Random | << Prev | Next >> ]