最速タイムの保存

ホーム フォーラム CF2.5使用法全般 最速タイムの保存

  • このトピックには10件の返信、3人の参加者があり、最後にMaster.typeXにより7年前に更新されました。
11件の投稿を表示中 - 1 - 11件目 (全11件中)
  • 投稿者
    投稿
  • #13867
    Master.typeX
    参加者

    どうもです。
    現在作っているアクションゲームで、クリアタイムを計測して保存しているのですが
    クリアタイムが前回よりも早かった場合、どうやって保存させればいいのかわからず
    制作が詰まっております。

    ゲームデータがサイズオーバーで送れいないので
    似たような動作のものを作ってみましたのでそちらを確認してください。

    お忙しいところ恐縮ですが、何卒宜しくお願い致します。

    Attachments:
    You must be logged in to view attached files.
    #13870
    ASD
    キーマスター

    >>Master.typeX
    過去にストップウォッチの内容を次のフレームへ引き継ぐ処理のサンプルを作成しました。これを応用すればできると思います。

    時計&日付オブジェクトについて

    添付されたデータを拝見しましたが、コンマ以下のカウントが100になったら秒のカウントをアップさせているようですが、60フレームのアプリケーションでは常に1足していっても1秒間で60までしか増えませんので、それで100になった時、としていると、実際の1秒よりかなり遅れて秒数がカウントされてしまうことになってしまいます。100ではなく、60になった時にアップさせるか、上記リンク先のトピックの『cf25_blog_2017-01-29_stopwatch.zip』のやり方が良いと思います。

    #13871
    Master.typeX
    参加者

    >>ASDさん
    サンプルを見て時間のカウントは修正できました!
    ありがとうございます!

    ただ100になったらカウントアップというのだけではダメなのですね・・・
    勉強になりました・・・。

    ですが
    現在のタイムが前回のタイムより早かった場合更新するといった方法がわかりません。

    お手数おかけしますが、教えていただけないでしょうか。

    #13890
    ASD
    キーマスター

    修正してみました。分・秒・コンマそれぞれで比較してしまうと分・秒は更新していないのにコンマは下回って(超えて)いるのでコンマだけ現在のタイムで上書きされてしまうということになります。分・秒・コンマを全て足した値で比較することにより、全て上回っているかどうかを判定することができます。

    – サンプルプログラム
    https://blog.clickteam.jp/wp-content/uploads/2017/05/cf25_blog_2017-05-04_save_ini_when_update_time.zip

    なお、iniファイルのパスの指定方法ですが、Master.typeXさんが添付されたファイルのように、パスに日本語他マルチバイト文字が含まれる場合で、iniファイルをUTF-8で保存する場合、Apppath$を使うと、日本語版以外のWindowsでは読み取れなくなります。こちらの記事を参考に相対パス(.\)を使用されることをお勧めします(iniファイルにマルチバイト文字を一切格納しないのであれば、UTF-8のチェックを外してApppath$を使うことができます。)。

    Iniオブジェクトでセーブデータを保存する

    #13896
    Master.typeX
    参加者

    >>ASDさん
    INIの方まですみません。
    サンプルを見ながら自分のゲームに落とし込んだら何とか
    想定通りの動作になりました!

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

    #13897
    Master.typeX
    参加者

    すみません。
    自分のゲームで旧タイムが1分10秒以上の時に
    1分10秒以下1分02秒以上のタイムが更新できないので
    サンプルの方も再現されるのではないかと思い
    やってみたところ、画像のようにサンプルでも1分10秒以下1分02秒以上のタイムが
    更新されない時がある事がわかりました。

    これに対応するにはどうしたらよいでしょうか・・・?

    Attachments:
    You must be logged in to view attached files.
    #13904
    ASD
    キーマスター

    文字列の比較ではなく、数値に変換して比較することで上手くいきました。文字列の比較は文字単位で行われるため、最初の1はどちらも同じですが、次の文字が現タイムは8で旧タイムは1になるので、ここで現タイムの方が大きいと判定されてしまっていたようです。お騒がせいたしました。

    – サンプルプログラム
    https://blog.clickteam.jp/wp-content/uploads/2017/05/cf25_blog_2017-05-04_save_ini_when_update_time2.zip

    #13905
    Master.typeX
    参加者

    サンプルを確認し、自分のゲームの方も
    同じ比較方法に直したところ
    無事にタイムが更新されるようになりました!

    ありがとうございます!

    #13909
    Master.typeX
    参加者

    たびたび申し訳ありません。
    今度は旧タイムが1分1秒以上の時に
    新タイムが0分59秒以下、0分33秒以上の時に
    更新されない状態を確認しました。

    Attachments:
    You must be logged in to view attached files.
    #13916
    shinon
    参加者

    こんにちは。

    数字をつなげて文字列として扱う場合、私もよくやってしまうのですが、桁数調整してやらないとだめなやつだとおもいます。たとえば1分5秒という場合はそのまま文字列にすると15ですが、0分25秒とかの場合もそのまま文字列にすると25になってしまうので、1分5秒より25秒のほうが遅いということになります。なので、1分5秒なら1分05秒扱いで文字列化して105にしないといけないかんじです。同様に1/1000秒についても調整がいりますね。めんどくさいけど仕方ないですね。

    Attachments:
    You must be logged in to view attached files.
    #13918
    Master.typeX
    参加者

    >>shinonさん

    なるほど、0を付け足して調整するんですね。
    先ほど、サンプルを確認しながら自分のゲームに落とし込んだところ
    今のところは特に更新されないという現象は見られなくなりました。

    ありがとうございます!

11件の投稿を表示中 - 1 - 11件目 (全11件中)
  • このトピックに返信するにはログインが必要です。