独学ツクールブログ

ツクールでのオリジナル作品の話を中心に創作関係の徒然な語り。

<< RGSSで使うのにおすすめな小数値 | main | Win32APIで遊ぼう2 >>

[ - ] スポンサーサイト

一定期間更新がないため広告を表示しています

| 2018.05.23 Wednesday | - | - |

[ RGSS奮闘記 ] Win32APIで遊ぼう1

いや遊んでるわけじゃないんだけど(挨拶)。

いつもの癖で、クアドラの合間に2016フリゲ展!theFINAL 夏の対象になるものでも作ろうかと思い立った。
んで、本当は前からあるADVでもできたらいいんだけどどうせ間に合わないので何かミニゲームでもやろうかなということに。
ぼんやり考えていたらうちの看板娘のゆみるに西瓜割りをさせるネタが思いつき、じゃあシステムどうしようってなったときにデフォルトのキーボード操作じゃなくマウスクリックが必要になった。

はいというわけで前にもちょっと手を出してたんだけどWindowsAPIというかWin32APIのお話。
ちなみに参考にしたのはpinvoke.netMicrosoft API とリファレンスのカタログである。
後者は公式の割にサイトが分かりにくいが、まあ関数や定数を検索してしまえば何とかなる。

さて、今回のゲームで間違いなく必要なのは「マウス位置の取得」と「クリックの検知」である。

マウス位置の取得は大したことないだろうと思いきやこれが意外。簡単に取得できるのは「スクリーン座標」であり、Game.exe(RGSS Player)の内側の座標にするには数ステップ必要なのだった。

まず、GetCursorPos 関数で「スクリーン座標」が取得できる。
それをScreenToClient 関数に通せばいいのだがここで「ウィンドウハンドル」が必要になる。詳しく話すとポインタ云々でややこしいし俺もはっきり理解したわけじゃないので雑に言うと、「プログラム内でそのウィンドウを示す変数」みたいなものだ。これにはFindWindow 関数が必要になる。
しかしここで、FindWindow 関数にはそのウィンドウについている「タイトル」が必要というトラップ発動(笑)ウィンドウハンドルを取得する処理に必要なのでウィンドウから取ることなどできず、フォルダにある「Game.ini」から取得する。Game.iniはただのテキストファイルだが、スムーズに読むにはopenではなくGetPrivateProfileString 関数を使うことになる。
ということで計4つの関数を経てやっとマウス位置が取得できるわけだ。しんどかった……(笑)


さて文字数の都合で実際の処理は次のエントリに回しここではWin32API自体の復習。

RGSSではWin32APIクラスがデフォルトで入っているので、requireは不要。そのまま使うことができる、
Win32API.newに(DLL名、関数名、関数の引数の型、戻り値の型)を渡す。
ここで「型」は「型を表す文字列(の配列)」である。そう以前のエントリでも触れた「p」やら「i」やらだ。この辺もまだ理解が今一つなので、次回各関数に合わせて語っていく。
生成したWin32APIクラスのインスタンスのcallメソッドを実行すると目的の関数が実行されることになる。当然ながら戻り値や引数がどうなるかは関数ごとに違う。
このくらいが現時点での俺の理解。見ての通りまだまだである。

次回、上で述べた処理に必要な関数について。クリックの検知のほうは、Inputモジュールをいじるので更にそのあとのエントリとする。


タグ:[RGSS] [Win32API] [フリゲ展夏] [GetCursorPos] [ScreenToClient] [FindWindow] [GetPrivateProfileString]

| 2016.06.25 Saturday 01:07 | comments(0) | trackbacks(0) |

[ - ] スポンサーサイト

| 2018.05.23 Wednesday 01:07 | - | - |

コメント

コメントする






この記事のトラックバックURL

トラックバック

このページの先頭へ▲

Twitter

WebClap

Blogram

ブログランキングならblogram

calendar

S M T W T F S
      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< September 2018 >>

categories

archives

Amazon

selected entries

recent comment

recent trackback

recent ranking

links

search this site.

sponsored links

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM