Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
1124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144154
次のページ(過去)
投稿
おちゃめ ochame_nako
DEF命令を使って自作関数(自作命令)を作ったことがある人も多いと思います。 そこで、DEFについて知っておいた方が良いことを少しだけ長々と書いておきます。 DEF X2(A)  RETURN A*2 END 見ての通り関数X2は2倍した値を返す関数です。 PRINT X2(123)とすると当然ながら246という値を返します。 では、PRINT X2("123")とした場合の動作はどうなるでしょうか?(そもそもエラー無しで動く?) 初心者の人もぜひ考えてみてください。
12そうだね
プレイ済み
投稿
おちゃめ ochame_nako
プチコン3号では比較演算でtrueとなった時の値は「1」、falseの時は「0」を返します。(例えばX=3ならば PRINT X==3 とすれば1が表示される) というのは絶対的に正しいわけではなく実は数値と文字列の比較演算を行ったらtrueやfalseに関係なく「3」を返します。(ただし、Type mismatchエラーにならない場合のみ) プチコン3号においてtrueならば「1」、falseならば「0」という盲信は良くないですね(笑)
4そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
FLOORで注意しなくてはならないのは負数の時の処理です。 FLOORはその値を超えない最大の整数であるためFLOOR(-12.5)は-12ではなく-13になります。 -12.5を-12にしたければ条件分岐をする必要があります。 そんなことをしなくてもFLOOR以外にも切り捨てで整数化するする方法はたくさんあります。 X DIV 1 0 OR X X<<1>>1 Z%=X DIVやビット演算やシフト演算は自動的に整数演算が行われるため結果が整数値になります。 整数型の変数に代入すればその段階で整数になります。
0そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
FPS 動作中のプログラムの速度を取得する自作関数です。 ちなみにFPSMは1/1000秒タイマーを使って0.1fps単位で取得可能です。
2そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
数値を誤差ゼロで文字列に変換できるというのは非常に大きなメリットがあります。 最初に書いたようにセーブしたら値が変わるなんて心配もないし、プログラムが誤動作した際に変数の値が適切な値になっているかのチェックに使用することもできます。 変換誤差による条件判定の誤動作もなくなります。 プチコン3号ではSTR$はイマイチですが、その代わりに便利なFORMAT$があります。 しかし、このFORMAT$は適切な表示設定にするのが初心者には難しいし、非常に大きな数を表示したら0が羅列されて非常に分かりにくくなってしまいます。 ゲームのスコア表示等ではFORMAT$が活躍できますが、それ以外の用途だと今回作ったPSTR$が使い勝手が良いと思います。 FORMAT$を使い誤差ゼロで文字列に変換するのはプチコン3号の有効桁数に関して熟知しておかないと難しいですがPSTR$は非常に簡単です
0そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
普通にPRINT PI()で表示すれば3.14926535と表示されます。 しかし、STR$で文字列に変換してしまうと3.14159になってしまいます。 これはすでに丸められた値なのでVALで数値に変換しても3.14159のままです。 3.14159という値がPI関数の値と等しいかを判定した場合には当然falseになります。 文字列に変換する前の3.1415926535であってもPI関数の値と等しいかを判定すればfalseになります。 そこで出てくるのが今回のPSTR$です。 このPSTR$で文字列に変換すると3.1415926535897931になり普通は表示されない部分まで確認できます。 そして、この値をVALで数値に変換してPI関数の値と等しいかを判定したら何とtrueになります。
0そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
例えばPI関数の値を表示させた場合はこんな感じです。
0そうだね
プレイ済み
投稿
おちゃめ ochame_nako
数値を文字列に変換するときは普通はSTR$を使用しますが、その場合は有効桁数が少なくなってしまいゲームのセーブデータなどで支障が出る場合も多いです。 そこで誤差ゼロで数値を文字列に変換できるPSTR$関数を作りました。 これは非常に便利ですよ。 詳細はコメントにて。
12そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
例えば5から10の範囲の乱数を発生させたい場合はRND2(5,10)としてください。 5、6、7、8、9、10のいずれかの値を返します。 引数に小数を指定した場合は小数の乱数を発生させます。 2.5から4.2の範囲の小数の乱数を発生させたい場合はRND2(2.5,4.2)でできます。 5から10までの範囲の小数の乱数を発生させたいという場合はRND2(10,5)のように2数のうちの大きな方を最初に指定することでできます。 このRND2関数があれば指定範囲の乱数は整数、小数含めて簡単に発生させることができるので初心者にはオススメです。
0そうだね
プレイ済み
投稿
おちゃめ ochame_nako
一定の範囲の乱数を発生させたいと言う質問をよく見かけるので指定した2つの数の範囲の乱数を発生させるRND2関数を作りました。 使い方はコメントにて。
6そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
この関数はそのまま使っても良いし、ベースとなる攻撃力÷2-防御力÷4という部分を変えたり、クリティカルの確率などを変えたりして自分が作るRPGに適したものに改造して使ってもいいと思います。
0そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
攻撃力と防御力を入れたらダメージ量とクリティカル判定を返します。 ベースとなっているのはドラクエで使われている攻撃力÷2-防御力÷4という計算式です。 それに乱数でダメージ量にバラツキをもたせ一定の確率でクリティカルヒット(会心の一撃)を出し相手の防御力が非常に高くダメージが与えられない場合は一定確率で1のダメージを与えるようなプログラムになっています。 DAMAGE関数の部分は23~27行のみでそれ以外は動作確認用のサンプルとなっています。 サンプルを見ればダメージ量やクリティカル判定をどのように使えば良いかも分かると思います。
0そうだね
プレイ済み
投稿
おちゃめ ochame_nako
RPGを作る際に使えるダメージ計算を行うDAMAGE関数を作りました。 詳細や使い方はコメントにて。
12そうだね
プレイ済み
返信[11]
親投稿
おちゃめ ochame_nako
X、Yの値を変えてもWHILE~WENDのメインループ内にSPOFS 1,X,Yを入れないと動きません。
0そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
私が作ったGRP2軸回転プログラムを使用していただきありがとうございます。 プチコンmkIIでこのGRP2軸回転プログラムを作った時には3Dレースゲームに使いましたがmkIIでは処理速度に難があって試作段階でボツにしました。 プチコン3号ならば十分に使えそうですね。
0そうだね
プレイ済み
返信[9]
親投稿
おちゃめ ochame_nako
GRAY 32階調表示しかできないプチコン3号で擬似的に256階調表示を可能にする自作関数です。
1そうだね
プレイ済み
返信[9]
親投稿
おちゃめ ochame_nako
本筋とは関係ない話ですが、ビット演算を使って普通に判定をすると4方向ではなく8方向移動になってしまいます。
1そうだね
プレイ済み
返信[5]
親投稿
おちゃめ ochame_nako
指定した2つの数の範囲の乱数を発生させるRND2関数を作りましたので自由に使ってみてください。 DEF RND2(A,B)  VAR R  IF A<B && A==FLOOR(A) && B==FLOOR(B) THEN   R=RND(B-A+1)+A  ELSE   R=RNDF()*(A-B)+B  ENDIF RETURN R END 5から10の範囲の乱数を発生させたい場合はRND2(5,10)としてください。 2.5から4.2の範囲の小数の乱数を発生させたい場合はRND(2.5,4.2)でできます。(※引数に小数を指定したら自動的に小数の乱数になる) 5から10の範囲の乱数を小数で発生させたい場合はRND2(10,5)としてください。(※大きい方の数字を1つ目の引数に指定すれば自動的に小数の乱数になる)
1そうだね
プレイ済み
返信[11]
親投稿
おちゃめ ochame_nako
ネットでもある程度は情報が得られるのですが、やっぱり一定以上の質でまとまった情報を得ようとなると本に頼るしかないんですよね。 書店で見つけて良さそうなものを買っていくと本が増える一方になってしまうという罠(笑)
1そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
プチコン3号ならば数100語レベルの単語ならば頭から順番に検索しても一瞬で出てくるけど数千、数万になるとそうはいかないですね。 したがって探索木について調べておくと良いかもしれません。 どれがベターなのかはデータ構造によって異なるので一概には言えません。
0そうだね
プレイ済み