« 小技 | トップページ | かゆい所に手が届く »

2008年3月31日 (月)ソウサ オレガ ワルインダ

おはようございます。本日の当番、プログラマーのM.Oです。

先日、後輩のアビィ君(仮称)が、
「このキーコンフィグですとぉ、ポーズボタンでぇポーズが解除できないんですぅ。どうしましょう?」
と聞いてきたんですがね、
「何言ってるかわかんね。ポーズできたんなら同じボタンで解除できるっしょ。」
と思ったわけです。

よくよく話を聞いてみると、ポーズを解除するときの判定で、
デフォルトキーコンフィグでポーズに関連付けられているボタンが押されているか、「ある機能に関連付けられたボタンが押されたかどうか判定する関数」を使わずに、「あるボタンが押されたかどうか判定する関数」で直接判定していたわけです。

---------------------------------------------------------
■例えば↓みたいに定義していた場合

class CInput
{
public:
enum INPUT
{
INPUT_NORMAL = 0,
// 押されているか
INPUT_TOGGLE,
// 押された瞬間か
・・・
};

// ボタン
enum CTRL
{
CTRL_A = 0x00000001,
// Aボタン
CTRL_B = 0x00000002,
// Bボタン
};

// ボタンに関連付けられる機能
enum BIND
{
BIND_PAUSE = 0,
// ポーズ
BIND_ATTACK,
// 攻撃
BIND_DECIDE,
BIND_CANCEL
};

public:
BOOL Check(INPUT input, CTRL ctrl);
BOOL Check(INPUT input, BIND bind);
};

A.本来してほしい判定のしかた
if(Input()->Check(INPUT_TOGGLE, BIND_PAUSE)) // ポーズに関連付けられたボタンが押された瞬間か
{
・・・
}

B.やらかしちゃった判定のしかた
if(Input()->Check(INPUT_TOGGLE, CTRL_START)) // スタートボタンが押された瞬間か
{
・・・
}

C.よく使うものはこんな感じで
#define DECIDE() (Input()->Check(INPUT_TOGGLE, BIND_DECIDE))
#define CANCEL() (Input()->Check(INPUT_TOGGLE, BIND_CANCEL))

---------------------------------------------------------

ポーズの関連付けが他のボタンになった場合、Bの判定ではできません。
他にも決定、キャンセル等、使用頻度が高いものは、Cのように定義したりします。
こうしておけば、海外版を出したりするときに、ボタン変更をする必要がある場合、
一部を直せば済むわけです。

上のことをアビィ君に話している最中に、ふと気が付いたことがありました。
「あれ?アビィ君。これって伝えてたっけ?」
「いま知りましたぁ。」
「ショウジキ スマンカッタ オレガワルカッタ。」

これは事実を元にしたフィクションです。
実際にはアビィ君はいません。脳内キャラです。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2008/03/post_5f06.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

« 小技 | トップページ | かゆい所に手が届く »

プログラマー」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: ソウサ オレガ ワルインダ:

« 小技 | トップページ | かゆい所に手が届く »