Java:ショートカットをつけよう

Posted on

Frame.addKeyListener(KeyListener e)では取得できない!

とりあえず真っ先に思いつく方法としてキーイベントを使ってみる方法があると思うんですが・・・.

ここを見る限り,フレーム上にキーリスナを取得しそうなコンポーネントがあると,もうだめ.

JFrame#processKeyEventをオーバーライドしてみるが・・・しかし・・・駄目.

このメソッドでキー入力は全て処理しているはずですから,これをオーバーライドすれば良いに違いない!

というわけで,オーバーライドしてショートカット処理をしてみたのですが,どうも呼ばれません.

デバッガで確認済み.ここに通知が来ないということなんですね・・・.

InputMapを使え!

こちらを見てください.これのとおり,InputMapとActionMapを組み合わせて使えば,出来るのではないかな・・・と.

とりあえず実装してみました.

・・・お,出来る!カンペキです.

ただし,問題点があって,ShiftやAltなどの修飾キーだけでは使えません・・・.

これは仕方が無いですね・・・.逆に修飾キーが無くても使えるので,まあ十分でしょう.

ショートカットキーに必ず修飾キーをつけなくちゃいけないというのも面倒ですから.

なに!Javaからネイティブコード使えるの?

Posted on

Javaからネイティブコードを使ったプログラムが書けるらしい!

これなら妄想が実現できるかも!?

ここを参考にBorland C++ Compilerで組んでみますか・・・.

あと問題になるのは,プラグイン方式をどうやって実装するか.

サブクラスの検出とか出来るのかな・・・?

教えてえろいひと.

理想の全自動操縦ソフト

Posted on

どうせ技術から言って出来るわけが無いんですが,とりあえずアイデアぐらいなら出せるわけで.

エミュレータからメモリの値を取得できることが必須条件と思われます.

それによって,

・現在の主人公の場所

・パソコンを開いてるときは今どのポケモンを指しているのか

・個々のポケモンの個体値

・タマゴは生まれているのか,いないのか・・・

などなど様々な情報を読み込んでその情報をもとに操作できるわけです.

とりあえず誰かファイヤーリーフ以降の解析対策について教えて下さい・・・_| ̄|○

個々のゲームごとの解析対策に関しては,プラグイン方式で簡単に対応できると良いですね.

で,メモリを取得してそれを使ってうまくやれば

  1. そろそろ寝る時間だ
  2. エミュレータをおもむろに開き必須の個体値をセットする(めざパゴースト威力 == 70 && 攻撃とすばやさ == 31 など)
  3. 寝る
  4. うわーい良個体値ゲットだぜー

という凄い電気代の無駄使いが出来るわけですw

正直そこまでやるなら改造使ったほうが・・・いや,なんでもない.

規約とか気にせずにいられるから良いんだよ!

もしも電気代を無駄使いしたくなければ喜虎さんがやろうとしてるGBAに専用のハードウェアをつける,という方法が考えられますが,もしもメモリの中身を見たければPARをハックして自由に使えるようにしなければならない訳です.かなり,大変.

またPARはフックと呼ばれる動作を行うためにメモリをほんの一部使うようなのですが,もしかしてゲームが使うメモリ空間と被ってんじゃないの?

などなど結構不安要因は残ります.

あ,いいこと思いついた.

PARでフックを行ったときに飛ばすプログラムをうまく書き換えればPARのみで自動操縦できない?

出来るなら一番気楽ですよね.

それは普通の改造コードとして書き換えられるのかな?持ってないから分からないんですけど>PAR

メモリに手をつけてる点でもう改造になっちゃうから大会には出れない上に*1,メモリ上にそこまでの結構大きなプログラムを書くほどの容量が残ってるとは思いませんけど.

*1:PARで自動操縦したかったら,フックを行って飛ばした先のプログラムでキー入力を保存している所を書き換えなくちゃいけない

Phlogiston for GBA:ショートカットつけたお

Posted on

基本的にキーボードやジョイパッドを用いてエミュレータを操作しているので,マウスを使って一々起動したり停止したりするのがめんどくさい,といううことでショートカットキーつけました.

ショートカットはスペースがオススメですが,そうするとチェックボタンやなんやらにフォーカスが移っているときにショートカットできません・・・.

その際はボタンで自動操縦を開始すればボタンにフォーカスが映るので後は普通にショーカットが使えます.

その多起動時にサーナの可愛い起動画面が現れますw

ソフト自体がかなり重いので,遅いマシンだと起動にかなり掛かるんですよね.

で起動してるかどうかよく分からないし,寂しいので入れてみました.

ダウンロードはこちらから.

Phlogiston for GBA 改良中

Posted on

宿題やれ>自分

それはさておき.

ショートカットキーが付くと楽だなぁ,ということでやっています.

とりあえずキーの入力を検知したいのですが,どうもうまくいかない・・・.

JFrameにaddKeyListenerをしてもフォーカスの問題からどうもうまくいかず.

(他のKeyListenerを持っているクラスの方にしか通知されない・・・.)

enableEvents(AWTEvent.KEY_EVENT_MASK);

としてJFrameを拡張したクラスで

protected void processKeyEvent(KeyEvent e)

をオーバーライドしても検出できず.

誰かいい方法教えてください・・・.これができないと折角の数時間の意味が・・・.