jsdo.it かなりいいです!やっぱりカヤックはおもしろい!
とりあえず手元にあるhtml5 canvasを・・・
jsdo.it かなりいいです!やっぱりカヤックはおもしろい!
とりあえず手元にあるhtml5 canvasを・・・
ユニークなもの発見!
なんとYouTubeでむりやり!?(笑)スト2が、できてしまうようです!
選択肢ごとに別動画が再生される~~~
おそらく自称日本初!?? IE8にも対応したhtml5のcanvasをつかったアクションクソゲームです。。
クソまで条件にいれれば本当に日本初かも!?(笑
職場の方から、google のexcanvasつかえばIEでもhtml5に対応できるという優良情報をいただき、
グーグル先生のお力を借りて、IE8でも動く簡単クソゲームができました。
現状html5ですが、IEだけ、対応しておらず対応は9から対応のようです。
この問題点をおぎなってくれるのが、googleのexcanvas先生です。
下記ように記述してあげるとIEだけこのファイルを読み込ませ、他のブラウザではコメント扱いさせるようです。よくある、条件付きコメント的な感じだと思います
たださすがに使えない機能などもあるので、注意が必要です。
取得したデータの判定
●十字キーのデータ
dwXpos ・・・十字キーの左右を表す。
左 ⇒ 10000以下
中央⇒ 30000前後 の数が入る。
右 ⇒ 50000以上
dwYpos ・・・十字キーの上下を表す。
上 ⇒ 10000以下
中央⇒ 30000前後 の数が入る。
下 ⇒ 50000以上
●ボタンのデータ
各ビットが、「ボタンが押されているかどうか」を表す。
………0000_0000
・・・・ ・・BA
0ビット目・・・Aが押されていたら1
離されていたら0
1ビット目・・・Bが押されていたら1
離されていたら0
ボタンを調べる時は、ビット操作を使って
調べたいビットのみを調べる。
Aボタン・・・JoyData.dwButtons & 1
が0でなければ(押) …0001
Bボタン・・・JoyData.dwButtons & (1<<1)
が0でなければ(押) …0010
サンプル
・GameMain()の文字表示部分
//十字キー左右
if(JoyData.dwXposos <= 10000)
{
※「X軸 = 左」と表示
}else if(JoyData.dwXpos >= 50000)
{
※「X軸 = 右」と表示
}else
{
※「X軸 = 中央」と表示
}
//十字キー上下
if(JoyData.dwYpos <= 10000)
{
※「Y軸 = 上」と表示
}else if(JoyData.dwYpos >= 50000)
{
※「Y軸 = 下」と表示
}else
{
※「Y軸 = 中央」と表示
}
//Aボタン(ボタン0)
if(JoyData.dwButtons & 1)
{
※「A = 押」と表示
}else
{
※「A = 離」と表示
}
//Bボタン(ボタン1)
if(JoyData.dwButtons & (1<<1))
{
※「B = 押」と表示
}else
{
※「B = 離」と表示
}
ジョイスティックの使用
※「マイコンピュータ」→「コントロールパネル」→「ゲームコントローラ」で、
「2軸 2ボタンのジョイスティック」があるかどうか確認
無い場合は、追加しておく。
また各自で調整しておくこと。
1、ジョイスティックデータの取得
・winmm.libが必要なので、追加していない場合は
#pragma commentなどで追加しておく。
・joyGetPosEx関数で、
JOYINFOEX型の構造体の中に、データをうけとる。
●JOYINFOEX型構造体
主なメンバ
long dwSize ・・・構造体事態の大きさを代入しておく。
long dwFlags ・・・どんなデータを取得するか。
JOY_RETURNBUTTONS(ボタンのデータ)
JOY_RETURNX(十字キー左右)
JOY_RETURNY(十字キー上下)
の3つを「|」(OR)でつなげて指定。
long dwXpos ・・・十字キー左右のデータをうけとる。
long dwYpos ・・・十字キー上下のデータをうけとる。
long dwButtons ・・・ボタンのデータをうけとる。
例、
JOYINFOEX JoyData;
JoyData.dwSizeize = sizeof(JOYINFOEX)
JoyData.dwFlags = JOY_RETURNBUTTONS | JOY_RETURNX | JOY_RETURNY;
●joyGetPosEx関数
定義 : MMRESULT joyGetPosEx(ジョイスティックID,JOYINFOEX*);
引数 : ジョイスティックID・・・JOYSTICKID1 か
JOYSTICKID2 を使う。
今回は、JOYSTICKID1。
JOYINFOEX * ・・・・・データをうけとるJOYINFOEX構造体のアドレス
戻値 : MMRESULT ・・・・・・ JOYERR_NOERRORで成功。
例、
MMRESULT ret;
ret = joyGetPosEx(JOYSTICK1,&JoyData);
※JoyDataの中にジョイスティックのデータが入る。
ret == JOYERR_NOERRORなら成功
サンプル
・winmm.libを追加していない場合、
WinMain()にあるファイルに
#pragma comment(lib,”winmm.lib”)
を追加
・JOYINFOEX JoyData; を外部変数で宣言
GameCreate()など、ゲームの準備をする所で
JoyData.dwsize = sizeof(JOYINFOEX);
JoyData.dwFlags = JOY_RETURNBUTTONS | JOY_RETURNX | JOY_RETURNY;
を代入しておく。
・GameMain()で、
MMRESULT ret;
ret = joyGetPosEx(JOYSTICKID1,&JoyData);
を実行
JoyData.dwXpos,JoyData.dwYpos,JoyData.dwButtons
の3つを、wsprintf(),TextOut()で表示して確認。