忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


2024/12/04 02:44 |
開発状況:ゲームパッドに対応
趣味で作ってる不思議のダンジョン風ゲームだけど、ついにゲームパッドに対応してみた! 対応させること自体は、JInputを使えば簡単だった。結構簡単に、パッドからの入力を受け取れる。

以下はテストコード例。テスト環境としては、ELECOM のJC-PS101USVというのを使って、PS2のコントローラを使用。
import net.java.games.input.Component;
import net.java.games.input.Controller;
import net.java.games.input.ControllerEnvironment;

public class Main {
  
  public static void main(String[] args) {
    
    ControllerEnvironment env =           
      ControllerEnvironment.getDefaultEnvironment();
    
    for(Controller cont : env.getControllers()) {
      
      if (cont.getType() == Controller.Type.STICK) {
        while(true) {
          
          try {
            Thread.sleep(100);
          } catch (InterruptedException e) { }
          cont.poll(); // コントローラの状態を更新
          print(cont.getComponents());
        }
      }
    }

  }
  
  private static void print(Component[] comp) {

    for(Component c : comp) {

      // int にキャストが適切かどうかは不明
      int val = (int)c.getPollData(); 

      if (c.getIdentifier() == Component.Identifier.Axis.X) {
        
        if (val == -1) {
          System.out.println("左");
        }
        if (val == 1) {
          System.out.println("右");
        }
      }      
      if (c.getIdentifier() == Component.Identifier.Axis.Y) {
        if (val == -1) {
          System.out.println("上");
        }
        if (val == 1) {
          System.out.println("下");
        }
      }
      
      if (c.getIdentifier() == Component.Identifier.Button._0) {
        if (val == 1) {
          System.out.println("△");
        }
      }
      if (c.getIdentifier() == Component.Identifier.Button._1) {
        if (val == 1) {
          System.out.println("○");
        }
      }
      if (c.getIdentifier() == Component.Identifier.Button._2) {
        if (val == 1) {
          System.out.println("×");
        }
      }
      if (c.getIdentifier() == Component.Identifier.Button._3) {
        if (val == 1) {
          System.out.println("□");
        }
      }
    }
  }
}
PR

2007/09/16 15:16 | Comments(1) | TrackBack() | 開発状況

トラックバック

トラックバックURL:

コメント

intにキャストせず、floatのまま使わないとスティックの倒し加減などを読みとれないのでは?
posted by 空住所at 2011/05/08 00:34 [ コメントを修正する ]

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<ゲームデザイン:不思議のダンジョンでレベルリセット | HOME | ゲーム:シレン3>>
忍者ブログ[PR]