Petit computer 3 Community

myu314myu314

02/06/2015 5:25 AM ·Spoilers

変数の型とかDATファイルの形式って調べる方法ないもんですかね? 整数と実数の変数についてはなんとかなったんですが… VAR A=1 OPTION DEFINE VAR B=1 ?IS_FLOAT(A) ?IS_FLOAT(B) DEF IS_FLOAT V OUT F F=V:F=0.5:F=!!F END

Advertisement

Comment

This post has no comments.

  • 形式というか、ファイルがあるかの確認の例。 IF CHKFILE("DAT:○○○○")==TRUE THEN PRINT "ありました。" ELSE PRINT "ざんねん…" ENDIF この例は、ファイルがあったら『ありました。』と なかったら『ざんねん…』とメッセージを出す例。

    Yeahs0
    Played
  • 命令表とにらめっこしてみましたが思い付きませんでした。 一番いい線行ったのが、×2してから配列と組み合わせてLEN()の返り値が1か否かで判別できないか的な方向。 どうしても先に文字列かどうかの判断が要ります………

    Yeahs0
    Played
  • 変数の型を省略して扱えるのは倍精度実数型と整数型なので その2種類が分かれば充分かと思いますがいかがですか? DATファイルにセーブした配列変数の型が分からない場合は 倍精度実数型で読み込んでおけばデータが化けることは ありません。 倍精度実数型でセーブしたものを整数型で読み込むと整数 部分しか格納されないためデータが化けます。

    Yeahs0
    Played
  • >Mb.ソースかつさん CHKFILEで形式も取れるようにしてくれると良かったんですけどね:) >けいさん 配列と組み合わせるというのは可能性ありそうだなと思ったのですが,僕も上手くできませんでした. 無理なのかなぁ…. >otta777さん ファイルの送受信/ファイルビューアを考えていたのですが,整数配列のDATを実数で扱って保存するとファイルサイズが倍ちかくになってしまうのと,多次元配列の場合は次元が違うとtype mismatchなのでどうしようかなと. 変数の型判断はそこからの派生です. こっちは確かに実数で扱ってしまえばあまり問題はおきないですね.

    Yeahs0
    Played
  • ↑の返事 そうですね…w SmileBasicにそんな機能があったらSmile×2Basicだったのに(え

    Yeahs0
    Played
  • 文字列か数値かの判定、こんな方法を思いつきました。 '引数が文字列ならtrue, 数値ならfalseを返す関数 DEF CHKSTR(X) IF X==X*0 THEN '0と空文字列の判定 BGMPLAY X WAIT 2 RETURN !BGMCHK(0) ENDIF RETURN X==X*1.5 END 0か空文字列が入力されたときに2フレーム待ち&BGMに影響を与えるので、実用的かと言われれば疑問ですが。

    Yeahs0
    Played
  • 関数の定義に関わらず引数にどんな型も与えられるので、中で型を判断できればオーバーロード的な事が出来るなみたいなのを期待してました。 >もやしもどきさん そっか、空文字除けば1.5かければ判断できるのですね!(°Д°) そこだけでも結構実用できそうです。

    Yeahs0
    Played
  • >もやしもどきさん おお,こんな方法があったか! あとはNaNの時に判定が狂うので, X==Xがfalseの時は実数(NaN)にしてやればばっちりですね:) >けいさん オーバーロード的なこともできますね. プチコンでそこまでしなくてもとは若干思ってますが:p ライブラリ作ってると妙に凝りたくなってしまいます.

    Yeahs0
    Played
  • 間違えた.判定狂うのはNaNじゃなくてinfの時だから,X==Xでは判定できない.

    Yeahs0
    Played
  • 途中で送ってしまった. inf*0 が NaNになるので文字列判定されたあと, X=X*0:RETURN X==X を追加すればOK.

    Yeahs0
    Played
  • あ,0*infがNaNだから 0か空文字は VAR A#=POW(2,2013) RETURN X*A#==X*A# で判定できました. 全部組み合わせれば,文字列/実数/整数はできますね.

    Yeahs1
    Played
  • そうか、InfやNaNのことまで考えてませんでした。 というかそれらを利用すれば普通に演算で空文字列と0を分けられるとは。勉強になります。 (Inf*0って0じゃなくNaNだったのか) >けいさん 実は当初「0や空文字がネックですが」とその辺りだけをコメントするつもりでしたが、投稿直前にふとBGMPLAYに気付いたもので… さすがにちょっとどうなんだとは自分でも思いましたが

    Yeahs0
    Played
  • >myu314さん、もやしもどきさん ありがとうございます!(^O^) 大変勉強になりました。 自分では思い付かなかったのですが、もしかしたら誰かが見つけてくれるかもと思ってコメントして良かったです。 オーバーロードもできると分かっていれば、自分でゲーム作る時に楽できそう、というのがやりたい動機です。 近いうちに、ここで分かったことを新規投稿でまとめてみようかなと思います。

    Yeahs0
    Played
  • こちらこそ勉強になりました。 コメントありがとうございました。 数値と文字列の判定はリストも短いですし,結構便利に使えそうな気がしてます. 最近作ってたものの中にファイルもしくはスロットから読み込む関数があったんですが,早速これを一つにまとめてしまおうかと:)

    Yeahs0
    Played

Add a Comment

You must sign in to post a comment.

Sign in using a Nintendo Network ID to connect to users around the world by writing posts and comments and by giving Yeahs to other people's posts. You can create a Nintendo Network ID using your Wii U console or your system in the Nintendo 3DS family.

Use of Miiverse Details about Miiverse

Report Violation to Miiverse Administrators

You are about to report a post with content which violates the Miiverse Code of Conduct. This report will be sent to Nintendo's Miiverse administrators and not to the creator of the post.

Violation Type:

Post ID: 3DB-NBL7-BXM-ZM7Y-4TU-B62F

Report Violation to Miiverse Administrators

You cannot report posts made automatically by a software title.

Edit Post

Select an action: