・・・言いたかっただけです.
でも兼業ぐらいしてますよね・・・?
感慨無量よ 散るがよい
(「怒首領蜂最大復活」テーマソング「どどんぱち大音頭」 / CAVE)
・・・言いたかっただけです.
でも兼業ぐらいしてますよね・・・?
こんな本かって来ました.
リバーシのアルゴリズム C++&Java対応―「探索アルゴリズム」「評価関数」の設計と実装 (I・O BOOKS)
とりあえず今の状態を確認してみたところ,家にあった昔のVAIO-C1MRX(クルーソー0.7GHz)で動かしても,今のメインマシンのテトラ君2号(Pen4 3.0GHz)でも大して速度が変わらないんですよ.
CPUが違うとはいえ,クロックがこんなにも違うのに実行速度が同じってことは,別の部分に足を引っ張られて思考ルーチンが遅くなっているということ.
で,真っ先に思い浮かぶのがメモリアクセス.かなり無茶してます.盤面を元に戻すために配列のコピーをしたりとか普通です.
ぱっと本を読んだところ,メモリアクセスを最低にするためのテクなんかも載っているようです.
オリジナリティを無くさないためにほどほどにしつつ,参考にしたいと思います.
タイトルのとおりです.私が色々やった結果を乗っけてます.
ソースは汚いのであまり乗せたくない・・・.
KeyEvent#getModifiers()やKeyEvent#getKeyCode()を使って判断していきます.
何のキーを押しているかどうかを判断するには,KeyTypedかKeyReleasedを使うしかありません.
また,KeyReleasedを使うと,ユーザが
- 修飾キーを押す
- 別の普通のキーを押す
- 修飾キーを離す
- 別の普通のキーを離す
という順番で入力した場合,修飾キーしか判断されません.
(離す順番が逆なら大丈夫.)
というわけでKeyPressedを使って判断します.
しかし,KeyPressedを使ってもユーザが修飾キーを押せば修飾キーのみを,普通のキーを押せば普通のキーしか判断されません.
というわけで修飾キーの時は無視します.
最終的にKeyPressedのソースはこんな感じ.
public void keyPressed(KeyEvent e){ if(e.getKeyCode() == e.VK_SHIFT || e.getKeyCode() == e.VK_CONTROL || e.getKeyCode() == e.VK_META || e.getKeyCode() == e.VK_ALT){}else{//修飾キーの場合は無反応 /*キーの検出*/ /*ボタンテキストにキーのテキストを設定*/ /*キーの設定*/ /*リスナ(自分)の削除*/ } }
KeyEvent#getSource()を使うとソースが省略できるかも.
とりあえず真っ先に思いつく方法としてキーイベントを使ってみる方法があると思うんですが・・・.
ここを見る限り,フレーム上にキーリスナを取得しそうなコンポーネントがあると,もうだめ.
このメソッドでキー入力は全て処理しているはずですから,これをオーバーライドすれば良いに違いない!
というわけで,オーバーライドしてショートカット処理をしてみたのですが,どうも呼ばれません.
デバッガで確認済み.ここに通知が来ないということなんですね・・・.
こちらを見てください.これのとおり,InputMapとActionMapを組み合わせて使えば,出来るのではないかな・・・と.
とりあえず実装してみました.
・・・お,出来る!カンペキです.
ただし,問題点があって,ShiftやAltなどの修飾キーだけでは使えません・・・.
これは仕方が無いですね・・・.逆に修飾キーが無くても使えるので,まあ十分でしょう.
ショートカットキーに必ず修飾キーをつけなくちゃいけないというのも面倒ですから.
Javaからネイティブコードを使ったプログラムが書けるらしい!
これなら妄想が実現できるかも!?
ここを参考にBorland C++ Compilerで組んでみますか・・・.
あと問題になるのは,プラグイン方式をどうやって実装するか.
サブクラスの検出とか出来るのかな・・・?
教えてえろいひと.
どうせ技術から言って出来るわけが無いんですが,とりあえずアイデアぐらいなら出せるわけで.
エミュレータからメモリの値を取得できることが必須条件と思われます.
それによって,
・現在の主人公の場所
・パソコンを開いてるときは今どのポケモンを指しているのか
・個々のポケモンの個体値
・タマゴは生まれているのか,いないのか・・・
などなど様々な情報を読み込んでその情報をもとに操作できるわけです.
とりあえず誰かファイヤーリーフ以降の解析対策について教えて下さい・・・_| ̄|○
個々のゲームごとの解析対策に関しては,プラグイン方式で簡単に対応できると良いですね.
で,メモリを取得してそれを使ってうまくやれば
という凄い電気代の無駄使いが出来るわけですw
正直そこまでやるなら改造使ったほうが・・・いや,なんでもない.
規約とか気にせずにいられるから良いんだよ!
もしも電気代を無駄使いしたくなければ喜虎さんがやろうとしてるGBAに専用のハードウェアをつける,という方法が考えられますが,もしもメモリの中身を見たければPARをハックして自由に使えるようにしなければならない訳です.かなり,大変.
またPARはフックと呼ばれる動作を行うためにメモリをほんの一部使うようなのですが,もしかしてゲームが使うメモリ空間と被ってんじゃないの?
などなど結構不安要因は残ります.
あ,いいこと思いついた.
PARでフックを行ったときに飛ばすプログラムをうまく書き換えればPARのみで自動操縦できない?
出来るなら一番気楽ですよね.
それは普通の改造コードとして書き換えられるのかな?持ってないから分からないんですけど>PAR
メモリに手をつけてる点でもう改造になっちゃうから大会には出れない上に*1,メモリ上にそこまでの結構大きなプログラムを書くほどの容量が残ってるとは思いませんけど.
*1:PARで自動操縦したかったら,フックを行って飛ばした先のプログラムでキー入力を保存している所を書き換えなくちゃいけない
基本的にキーボードやジョイパッドを用いてエミュレータを操作しているので,マウスを使って一々起動したり停止したりするのがめんどくさい,といううことでショートカットキーつけました.
ショートカットはスペースがオススメですが,そうするとチェックボタンやなんやらにフォーカスが移っているときにショートカットできません・・・.
その際はボタンで自動操縦を開始すればボタンにフォーカスが映るので後は普通にショーカットが使えます.
その多起動時にサーナの可愛い起動画面が現れますw
ソフト自体がかなり重いので,遅いマシンだと起動にかなり掛かるんですよね.
で起動してるかどうかよく分からないし,寂しいので入れてみました.
巡回に来た名古屋市職員にけがを負わせたとして、傷害などの罪に問われた路上生活者の男の初公判が1日、名古屋地裁であった。男は逮捕時から一貫して「ほとけ」と名乗り、氏名や年齢などは明らかにしておらず、公判の人定でも名を聞かれ、「こじきのほとけです」と述べた。また、男は起訴事実を否認した。
( ゜д゜)
(つд⊂)ゴシゴシ
「こじきのほとけです」
(;゜д゜)
(つд⊂)ゴシゴシ
「こじきのほとけです」
_, ._
(;゜ Д゜)
宿題やれ>自分
それはさておき.
ショートカットキーが付くと楽だなぁ,ということでやっています.
とりあえずキーの入力を検知したいのですが,どうもうまくいかない・・・.
JFrameにaddKeyListenerをしてもフォーカスの問題からどうもうまくいかず.
(他のKeyListenerを持っているクラスの方にしか通知されない・・・.)
enableEvents(AWTEvent.KEY_EVENT_MASK);
としてJFrameを拡張したクラスで
protected void processKeyEvent(KeyEvent e)
をオーバーライドしても検出できず.
誰かいい方法教えてください・・・.これができないと折角の数時間の意味が・・・.