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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
takatwu

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

#1

投稿記事 by takatwu » 14年前

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

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

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

環境 VC++2010 win7

box
記事: 2002
登録日時: 15年前

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

#2

投稿記事 by box » 14年前

適当に改変してください。

コード:

#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;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

takatwu

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

#3

投稿記事 by takatwu » 14年前

ありがとうございます。
関数ポインタでメニューの項目を作りそれを選択させる、という感じで作ろうと思います。

閉鎖

“C言語何でも質問掲示板” へ戻る