質問なのですが

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

質問なのですが

#1

投稿記事 by リラン » 18年前

タイトル画面

プレー画面

ゲームクリア画面

タイトル画面

プレー画面

上のような感じで処理をしたいのですが
ゲームクリア画面からタイトル画面に戻った後に
もう1度プレーすることができません。
変数などの値が初期値に戻っていないせいだと思うのですが・・・
どうすればいいですか?

バグ

Re:質問なのですが

#2

投稿記事 by バグ » 18年前

変数を初期化すればいいのではないでしょうか?

リラン

Re:質問なのですが

#3

投稿記事 by リラン » 18年前

DXライブラリを使っているのですが
while文の前で初期化しているので
無理なんです・・・

バグ

Re:質問なのですが

#4

投稿記事 by バグ » 18年前

DxLib自体の初期化と、ゲームに使う変数の初期化とでは全く意味が違います。
今回の場合は後者ですから、ループの始めで初期化してやれば解決するはずです。

リラン

Re:質問なのですが

#5

投稿記事 by リラン » 18年前

while文の中で初期化するということですか?
キャラクターの位置などの初期化は
while文の前でやっているのでできないです。

バグ

Re:質問なのですが

#6

投稿記事 by バグ » 18年前

初期化が不可能だという理由が全く分かりません。
まぁ、ソースコードを見ていないので、これ以上は何とも言えませんが…

タイトル画面

プレー画面

ゲームクリア画面

タイトル画面

プレー画面

少なくとも、こういう流れにしたいのならば、タイトル画面とプレイ画面の間で初期化処理をすればいいだけの話だと思いますよ。

提示されている情報だけでは、これ以上のアドバイスは不可能です。

管理人

Re:質問なのですが

#7

投稿記事 by 管理人 » 18年前

仰る意味はわかりますが、機能の分担をさせていたいため起こる事です。しっかりモジュールわけをしたり、きっちり切り離しが出来る書き方をしましょう。
メインループの中に全部処理をわけずに入れてしまっているからでしょう。
今の状態変数でも用意しておいて、その状態変数によって任意の関数を呼んでやるようにすれば解決します。
そうでなくても、初期化関数をiniとでもするなら、初期化させたいときにini関数を呼んでやるだけのことなので、なんら難しくないと思います。

ゲームプログラミングの館にメイン関数の書き方の例をあげています。
別に一般的なやり方なわけでなく、私の勝手な書き方ですが・・。
メイン関数内には関数の呼び出し以外の記述はなるべくかかないようにし、機能の分担をしっかりさせる事で、切り離しが可能になります。

http://l.huu.cc/g/#34

リンク先でいうならfunction_statesが0の時、初期化させるようにしておけば、初期化させたいとき、function_statesを0にするだけでOKです。

リラン

Re:質問なのですが

#8

投稿記事 by リラン » 18年前

返事遅れてすみません。

回答ありがとうございます。

プログラムを書き換えて
実行したところちゃんとできました。

ありがとうございました。

閉鎖

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