switch文を使った整理

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
student
記事: 5
登録日時: 5年前

switch文を使った整理

#1

投稿記事 by student » 5年前

自分は今rpgを作っているのですがロードする画像やbgm、セリフ、レベルごとのステータスの上がり値をswitch文を使いまとめようと思っています。
ですが、私は高1の雑魚c言語初心者なのでswitch文の処理の重さがどの程度なのかわかりません。
switch文はデータの整理に適してるのでしょうか?

やろうとしている事
switch (haikei){
case 0://始まりの村の背景
handle=loadgraph("画像/hajimari.png");
break;
case1~つづく

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: switch文を使った整理

#2

投稿記事 by みけCAT » 5年前

student さんが書きました:
5年前
switch文の処理の重さがどの程度なのかわかりません。

コード:

int input(void);
void func(int);

int main(void) {
    int x = input();
    switch (x) {
        case 0:
            func(123);
            break;
        case 1:
            func(456);
            break;
        case 2:
            func(789);
            break;
    }
    return 0;
}
というコードを書いてCompiler Explorerでコンパイルしてみたところ、
どのコンパイラでも比較と条件分岐の連続になるようでした。
数十個~数百個程度の分岐であれば、おそらく画像のロードの方がはるかに重いでしょう。
student さんが書きました:
5年前
switch文はデータの整理に適してるのでしょうか?
場合によるでしょう。
例えば、文字列をキーにしてデータを取り出したい時には向きません。
「やろうとしている事」は、

コード:

// 関数外
const char* haikei_list[] = {
    "画像/hajimari.png", // 始まりの村の背景
    ~つづく
};

// 関数内
handle=loadgraph(haikei_list[haikei]);
のように配列でまとめる方がいいかもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

参照魚
記事: 109
登録日時: 6年前

Re: switch文を使った整理

#3

投稿記事 by 参照魚 » 5年前

switch文でゲーム(シナリオやバトルシーン)の流れそのものを記述したいのであればc言語の機能だけではちょっと厳しいです。c言語は複数フレームにまたがる処理や平行して複数のオブジェクトを同時に処理する機能がないので、プログラマーがその部分を実装する必要があります。ゲームライブラリやスクリプトエンジンを利用する事で解決できますが、勉強や挑戦の意味で自分自身で作成したいのであればそれはそれでアリだと思います。

student
記事: 5
登録日時: 5年前

Re: switch文を使った整理

#4

投稿記事 by student » 5年前

返信遅れてすみません。おかげさまで見やすくまとめることができました。
丁寧に教えていただきありがとうございます。
これから配列を使ってデータをまとめていこうと思います。

返信

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