趣味で作ってる不思議のダンジョン風ゲームだけど、ついにゲームパッドに対応してみた! 対応させること自体は、JInputを使えば簡単だった。結構簡単に、パッドからの入力を受け取れる。
以下はテストコード例。テスト環境としては、ELECOM のJC-PS101USVというのを使って、PS2のコントローラを使用。
以下はテストコード例。テスト環境としては、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
機能的には全然改善されてないが、コードを綺麗にする作業をやってた。いわゆるリファクタリングというやつですな。
ニコニコアクションゲームを作ってみる【その10】 とかを見てると、短い期間でよく作れるなー、と思ったりする。こっちは、期間だけで言うと一年半以上経ってるのに全然できてねえ。
ニコニコアクションゲームを作ってみる【その10】 とかを見てると、短い期間でよく作れるなー、と思ったりする。こっちは、期間だけで言うと一年半以上経ってるのに全然できてねえ。
全然開発進んでないぜー。
とりあえず、週一回ぐらいで定期的にどういう状況かを報告してみようと思う。
今つまってるのは、システムの基本的な部分。普通はいわゆる「タスクシステム」でゲーム処理を行うんだろうけど、気に入らなかったので別の方法で自作してたからあまりうまくいっていない。
気にいらないといっても、ちゃんと分析したわけじゃないので、わざわざ別のアプローチをしなくてもよいかもしれないけど。
で、その部分がうまく設計・実装できてないので進行が鈍ってる。
で、あまり気合が要らない部分として、ゲームデータのセーブ・ロードに着手中。まだ実装してなかったのか、って感じだけど。
一つ悩んでいるのは、現状のコードを公開するかどうか、っていう部分。というのも、普通にプレイできるまではまだ時間がかかりそうなので、どうしようかな、と。
コードを公開すること自体は別にいいんだけど。ただ、一時的なファイルとかをディレクトリ構成を整理しなきゃいけないってのが面倒ってだけで。