//C++6.0
//windows XP
C++は初心者なので、理解に苦しむ日本語を使うかもしれませんがご容赦ください。
あるソフトを使い、画面上に青い色の球体が出てきたとします、
その球体の色情報はわかっているので今回作成するプログラムで
その色情報を画面から検索し、その球体の場所にマウスを持っていくプログラムを
作りたいのですが、まったくの初心者なのでmouse_eventを使うのは調べたのですが
まったくわかりません、どなたかお教え願えませんでしょうか。
mouse_eventは使わないような気がするな。
マウスを動かすならSetCursorPos()が良いかと。
画面上の色を求めるのはGetPixel()。
但し点の位置のほかに、デバイスコンテキストのハンドルが必要ですので、
先にGetWindowDC(NULL)でデスクトップのデバイスコンテキストを取得します。
後は、全ての点について色を調べ、探している色かどうかを判定します。
以上で、(効率に不安がありますが)お望みのものができると思いますが、
結構大変そうですよ。本当に作る必要がありますか?
目的を書いてもらえると、ベターな案が出てくるかも。
★たいちう様
大井健次郎と言います、答えてくださって、まことにありがとうございます。
私の勤務しています老人介護施設のパソコンに、動く球体をクリックするごくごく
簡単なゲームがあります、そんなゲームでもマウスを動かす事になれていない人は
難しいと感じてしまうようで、初心者用にとマウスを自動的に動かすような
プログラムを作れないかと思い、このような質問をさせて頂いた次第です。
GetWindowDC(NULL)やGetPixel()というのが必要なのですね
それについて色々調べてみます。
例えばうちの会社にプログラム経験のない新入社員が入ってきたとして、
C++やVCの研修をフルタイムでさせたとして、
そのようなプログラムができるのは2ヶ月か3ヶ月くらい先だと思う。
特定のプログラムだけを作るための研修じゃないし、
個人の資質によっては2週間だったり2年だったり
永遠に無理だったりもするし、大井さんの現在の知識も0ではないだろうから、
2~3ヶ月という期間との比較は難しいとは思うけど。
ご自分で作るつもりならば、一応この位の覚悟をしておくことをお勧めします。
代替案としては、お勧めの順番に、
1.もっと簡単なゲームを探す。
2.駄目元で件のゲームの作者にお願いする。
3.マウスカーソルが色を追いかけるツールを探す。
4.それっぽいゲームを自作する。きっと、この方が簡単。
まあ、他の回答者の方々がより良いアドバイスをくれるかもしれませんが。
複数のピクセルが青い場合、どう処理させます?
#1ピクセル球体…ではないでしょうからね。。
質問者はその辺の仕様まで至っていないと思いました。
左上から調べて最初に見つかったピクセル...
現在のマウスカーソルから最も近いピクセル...
条件を満たす複数のピクセルの中心(重心)...
ざっと、このような仕様が思いつきますが。
色々制約がきついですが、ゲーム自体が単純にGDIで作られているなら
gdi32の一部分をフックするとか。
後は条件とか絞って青い色の球体(or そのビットマップ?)を
取得できないカナ、と。
どうせフックするならGDIじゃなくてゲームのプログラムに直接埋め込んだほうが早
い可能性も…。
>動く球体をクリックするごくごく簡単なゲームがあります。
1. このソフトのソース等は手に入るのですか?
2. 又は、担当者と連絡取れるのですか?
この2点のどちらかが可能ならば、このソフトから球体の座標を取得して、
あたかも球体を追いかけるようにマウスを動かせばいいと思いますが...
>4.それっぽいゲームを自作する。きっと、この方が簡単。
球体の見え方が平面的でもよければ
たいちう様がおっしゃられたように
自作するのが一番良いと思います
理由
・目的に合うように変更ができる(球体の速度・大きさ・色・形など)
・速度もそれほど要求されないでしょうから 言語は慣れているものが使える
(C++を使いこなすまでには時間がかかる)
・他人のソースを読み理解するのは大変