ページ 11

関数ポインタを使用したメニュー画面の作成について

Posted: 2012年3月30日(金) 22:00
by takatwu
現在ゲームのメニュー画面の作成に戸惑っています。
メニュー画面をswitchで分岐しているのですが複雑化してきたため書きなおそうと思うのですが
調べたところ関数ポインタを使うと綺麗にできるということなので使ってみたいのですが
なかなか資料が見つかりません。
よろしければ具体的なサンプルコードをいただけないでしょうか。

関数ポインタにこだわるわけではないのでいい方法があれば教えていただけたら幸いです。

また、欲を言えばメニューをエクスプローラの様に階層的に管理することはできないでしょうか?
一応今はswitchを入れ子にして行なっていますが・・・

環境 VC++2010 win7

Re: 関数ポインタを使用したメニュー画面の作成について

Posted: 2012年3月30日(金) 22:26
by box
適当に改変してください。

コード:

#include <stdio.h>

int tasu(int a, int b)
{
    return a + b;
}

int hiku(int a, int b)
{
    return a - b;
}

int kakeru(int a, int b)
{
    return a * b;
}

int waru(int a, int b)
{
    return a / b;
}

int main(void)
{
    typedef int (*func)(int, int);
    func f[] = { tasu, hiku, kakeru, waru };
    int m;

    do {
        printf("+:1,-:2,×:3,÷:4\n"), scanf("%d", &m);
    } while (m < 1 || 4 < m);

    printf("%d\n", f[m-1](7, 3));
    return 0;
}

Re: 関数ポインタを使用したメニュー画面の作成について

Posted: 2012年3月31日(土) 16:17
by takatwu
ありがとうございます。
関数ポインタでメニューの項目を作りそれを選択させる、という感じで作ろうと思います。