Benutzer-Werkzeuge

Webseiten-Werkzeuge


api:documentation:spiele:gamepad

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


api:documentation:spiele:gamepad [2024/08/31 10:03] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== Gamepad ======
  
 +<WRAP center round info 100%>
 +Der Status des Gamepads kann in den Unterklassen der Klasse ''Actor'' (also insbesondere auch in allen graphischen Klassen) mit folgenden Methoden ermittelt werden:
 +  * ''isGamepadConnected(int gamepadIndex)'' gibt genau dann ''true'' zurück, wenn das Gamepad mit dem angegebenen Index angeschlossen ist. \\ **VORSICHT:**Die Indices beginnen bei 0!
 +  * ''getGamepadAxisValue(int gamepadIndex, int axisIndexX)'' gibt die Auslenkung des entsprechenden Gamepad-Steuerknüppels als double-Wert im Intervall $[-1;1]$ zurück.
 +  * ''isGamepadButtonDown(int gamepadIndex, int buttonIndex)'' gibt genau dann ''true'' zurück, wenn der entsprechende Gamepad-Button gerade heruntergedrückt ist.
 +
 +Darüber hinaus kann der Gamepad-Status auch über die gleichnamigen statischen Methoden der Klasse ''Gamepad'' ermittelt werden:
 +  * ''Gamepad.isConnected(int gamepadIndex)'' gibt genau dann ''true'' zurück, wenn das Gamepad mit dem angegebenen Index angeschlossen ist. \\ **VORSICHT:**Die Indices beginnen bei 0!
 +  * ''Gamepad.getAxisValue(int gamepadIndex, int axisIndexX)'' gibt die Auslenkung des entsprechenden Gamepad-Steuerknüppels als double-Wert im Intervall $[-1;1]$ zurück.
 +  * ''Gamepad.isButtonDown(int gamepadIndex, int buttonIndex)'' gibt genau dann ''true'' zurück, wenn der entsprechende Gamepad-Button gerade heruntergedrückt ist.
 +
 +Aus Sicherheitsgründen ordnen die Browser ein angeschlossenes Gamepad einer Webseite erst dann zu, wenn die Webseite den Fokus hat und der Benutzer erstmals eine Taste/einen Steuerknüppel betätigt hat. Erst dann gibt ''isConnected'' den Wert ''true'' zurück.
 +
 +</WRAP>
 +
 +
 +
 +
 +<HTML>
 +
 +<div class="java-online" style="height: 350px; width: 80%" data-java-online="{'withBottomPanel': false, 'id': 'gamepad1'}">
 +
 +<script type="text/plain" title="Gamepad1.java">
 +SystemTools.setSpeed(-1);
 +
 +new GamepadConnectedText();
 +
 +new GamepadAxisCircle(0, 1, 250, 300, Color.red.toInt());
 +new GamepadAxisCircle(2, 3, 550, 300, Color.blue.toInt());
 +
 +for(int i = 0; i < 20; i++) {
 +   double x = 10 + 40 * i;
 +   new GamepadButtonRect(i, Color.green.toInt(), x, 500, 20);
 +   Text t = new Text(x + 10, 450, 24, i);
 +   t.setFillColor(Color.white);
 +   t.setAlignment(Alignment.center);
 +}
 +
 +class GamepadAxisCircle extends Circle {
 +   int axisIndexX;
 +   int axisIndexY;
 +   double mx;
 +   double my;
 +   GamepadAxisCircle(int axisIndexX, int axisIndexY, double mx, double my, int color) {
 +      super(mx, my, 40);
 +      setFillColor(color);
 +      this.axisIndexX = axisIndexX;
 +      this.axisIndexY = axisIndexY;
 +      this.mx = mx;
 +      this.my = my;
 +   }
 +
 +   void act() {
 +      
 +      moveTo(mx + getGamepadAxisValue(0, axisIndexX) * 100, my + getGamepadAxisValue(0, axisIndexY) * 100);
 +
 +   }
 +
 +}
 +
 +
 +class GamepadButtonRect extends Rectangle {
 +   
 +   int buttonIndex;
 +   int color;
 +
 +   GamepadButtonRect(int buttonIndex, int color, double x, double y, double width) {
 +      super(x, y, width, width);
 +      setBorderColor(color);
 +      setBorderWidth(3);
 +      this.color = color;
 +      this.buttonIndex = buttonIndex;
 +   }
 +      
 +   public void act() {
 +      if(isGamepadButtonDown(0, buttonIndex)) {
 +         setFillColor(Color.white);
 +      } else {
 +         setFillColor(Color.black);
 +      }
 +   }
 +
 +}
 +
 +class GamepadConnectedText extends Text {
 +   GamepadConnectedText() {
 +      super(10, 10, 32, "");
 +      setFillColor(Color.white);
 +   }
 +   public void act() {
 +      if(isGamepadConnected(0)) {
 +         setText("Gamepad 0 ist angeschlossen.");
 +      } else {
 +         setText("Gamepad 0 ist nicht angeschlossen.");
 +      }
 +   }
 +}
 +</script>
 +
 +</div>
 +
 +</HTML>