C言語DxLib ゲーム内メッセージ

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

C言語DxLib ゲーム内メッセージ

#1

投稿記事 by roxas710 » 8年前

DXライブラリでRPGの戦闘みたいなゲームを
制作していて、バトル状況を下のように表示
させたいのですが、フラグ管理が多くなって
ややこしくなるのですが、いい方法はないでしょうか?

エンターを押すと、
「自分のターン」を表示
    ↓
次にエンターを押すと
「自分のターン」を非表示
    ↓
エンターを押すと、
「敵のターン」を表示
    ↓
次にエンターを押すと
「敵のターン」を非表示

コード:

//「敵のターン」メッセージ表示
void Message(){
	static int rflg = 0;
	static int MyTurnFlg = 1;
	static int EnemyTurnFlg = 1;

	if (MyTurnFlg == 1){
		if (PAD_INPUT_RETURN){
			if (rflg == 0){
				printfDx(" 自分のターン");
			}
		}
		else{
			rflg = 0;
		}
	}

	if (PAD_INPUT_RETURN){
		if (rflg == 0){
			MyTurnFlg = 0; //非表示
		}
	}
	else{
		rflg = 0;
	}


	if (EnemyTurnFlg == 1){
		if (PAD_INPUT_RETURN){
			if (rflg == 0){
				printfDx(" 敵のターン");
			}
		}
		else{
			rflg = 0;
		}
	}

	if (PAD_INPUT_RETURN){
		if (rflg == 0){
			EnemyTurnFlg = 0; //非表示
		}
	}
	else{
		rflg = 0;
	}

}
今はこんな風な感じでかいているんですが、
どうも上手くいきません。
なにかいい方法をおしえてください。

hide

Re: C言語DxLib ゲーム内メッセージ

#2

投稿記事 by hide » 8年前

自分のターン かつ 相手のターン という状況が普通に考えて存在しないので、両方が変数として存在するべきではないです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: C言語DxLib ゲーム内メッセージ

#3

投稿記事 by softya(ソフト屋) » 8年前

hideさんに補足すると状態が4つなので、0,1,2,3の数値で表せると思います。
enumすべきかと思いますが、switch~caseで記述するのはどうでしょうか?
今の書き方だと、全部のターンが連続で切り替わるバグを持っているはずです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

roxas710
記事: 54
登録日時: 9年前

Re: C言語DxLib ゲーム内メッセージ

#4

投稿記事 by roxas710 » 8年前

回答ありがとうございます!
やはり、こういった処理はenumを使うのがベストなんでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: C言語DxLib ゲーム内メッセージ

#5

投稿記事 by softya(ソフト屋) » 8年前

enumは可読性・メンテナンス性向上のために使います。
使って良いことはあっても悪いことはないはずですが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

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