Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
1126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146154
次のページ(過去)
返信[2]
親投稿
おちゃめ ochame_nako
FPSM関数の方は私が作った1/1000秒(1ミリ秒)単位で取得できるTIMER関数を使いより正確なfpsを短時間で取得可能です。 0.1~0.2秒程度の更新間隔でも誤差1%以下の正確なfpsを取得できます。 FPSM関数の方はグローバル変数_FPSM0、_FPSM1、_FPSM2、_FPSM3、_FPSM4を使用しているのでプログラムの最初でVARを使って定義しておいてください。
0そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
引数を指定することで何秒ごとに値を更新するかを選べます。FPS(1)とすれば1秒単位でfpsの取得が可能でFPS(0.5)とすれば0.5秒単位でfpsが取得可能です。1秒未満の短い時間でもfps取得が可能ですが、更新間隔が長い方がより正確なfpsを取得可能です。 最初に取得した値は正しくないため2度目(更新間隔が1秒の場合は1秒後)以降のものを参考にしてください。 FPS関数の方はグローバル変数_FPS0、_FPS1、_FPS2を使用しているのでプログラムの最初でVARを使って定義しておいてください。
0そうだね
プレイ済み
投稿
おちゃめ ochame_nako
動作中のプログラムのfps(実行速度)を取得可能なFPS関数と1/1000秒タイマーを使って0.1fps単位の正確なfpsを取得可能なFPSM関数を作りました。詳細はコメントにて。
9そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
英語力よりは算数、数学力が必要です。 数学ができなくても論理的思考力があれば問題ないし質問する際に相手に分かりやすく伝えられる国語力があれば大丈夫です。
2そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
マギーさんへ 指摘ありがとうございます。完全に忘れていたので修正しておきました。
0そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
SPANIMは実行するたびに初期化されるのでボタンを押している間は常に初期化状態となり、離した瞬間にアニメーションが開始されてしまいます。 つまり、SPANIMを実行するのはボタンを押した瞬間のみにしなくてはなりません。
0そうだね
プレイ済み
返信[4]
親投稿
おちゃめ ochame_nako
あとIF A==0 THEN A=0は一見無意味な処理に見えますね。 これはプチコン3号では負数の値をROUND関数で丸め処理を行い0になった時には表記上は符号がマイナスのままになってしまうという仕様(バグ?)があるのですが、これは見た目が良くないためマイナスの符号を取り除くためこのような処理を行っています。 ちなみに整数部が8桁以上になる場合は別途判定を行わないと「見た目通り」という仕様とは異なるものになってしまうのですが、リストが長くなるし処理速度も桁違いに遅くなってしまうし、使用頻度から言ってほとんど無駄な処理であるためシンプルかつ高速にするためこういう仕様(見た目通りなのは整数部が7桁以下の場合のみ)とさせていただきます。
1そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
ここで役に立つのがPR関数です。 PR(A)とすれば2.9を返しますが、PRINT PR(A)==2.9は1(true)になります。 つまり、PR関数を使うことで内部の表現を気にせず見た目通りの判定が可能になるということです。 実数型で小数を扱った演算を行う場合には見つけにくいバグとなってしまうのですが、PR関数を使えばその問題を解決できるというわけです。(小数を扱う場合には==を使った判定は本来はタブーとされているくらい)
1そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
この時点では何のことやら分からない人もいると思うのでA=0.1*29としてみてください。 これは暗算でも計算できるしPRINT Aとすれば2.9と表示されますね。 こんなのは当たり前だと思うかもしれません。 しかし、プチコン3号は内部では2進数で計算されているため「0.1」が正確に表現できないので「2.9」というのは先ほどの5-E9が0.00000001になったように内部で表現されている値と見た目の値が異なっています。 PRINT A==2.9とすると0(false)になっているため0.1*29はプチコン3号では2.9にはならないことを示しています。 つまり、「Aの値が2.9の場合」という判定は行ってはいけないのです。
2そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
プチコン3号では2.2250738585072014E-308という小さな数が扱えますが、PRINT命令で普通に表示した場合には5E-9未満の数は0と表示されます。 5E-9は当然0ではありませんが、これはPR関数を使いPR(4E-9)とすることで0にできます。 また5E-9は四捨五入されて表示上では0.00000001となっていますが、当然5E-9(0.000000005)は0.00000001ではないですね。 しかし、PR(5E-9)とすることで0.00000001にしてくれます。
1そうだね
プレイ済み
投稿
おちゃめ ochame_nako
表示の見た目通りの値を返すPR関数を作りました。これはチョー使える関数です。 この関数の仕組みやプチコン3号の表示の仕組みはコメントにて。
9そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
バグがあったので修正
0そうだね
プレイ済み
返信[5]
親投稿
おちゃめ ochame_nako
プチコン3号で1000分の1秒単位の時間を取得するTIMER関数(TIMERSTART命令を実行してからの時間を取得できます) ※グローバル変数 _TIMER0、_TIMER1、_TIMER2を使用しています。 DEF TIMERSTART  XON MIC:MICSTART 3,0,0  _TIMER1=0:_TIMER2=0 END DEF TIMER()  _TIMER0=MICPOS  IF _TIMER0<_TIMER1 THEN INC _TIMER2,262112  _TIMER1=_TIMER0 RETURN FLOOR((_TIMER2+_TIMER0)/32.73) END
0そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
ドラクエだと(攻撃力÷2)-(防御力÷4)がベースになっています。 というわけで、ドラクエに近いダメージ量が出るDAMAGE関数を作ってみたので良かったら使ってみてください。 AP:自分もしくは相手の攻撃力 DP:相手もしくは自分の防御力 DEF DAMAGE(AP,DP)  VAR DM  DM=FLOOR((AP/2-DP/4)*(1+RNDF()/8))  IF DM<0 THEN DM=!RND(3) RETURN DM END
0そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
ファイル名として使える文字はABC・・・とリテラルで羅列するのが最も短くできるのですが、それ以外の方法で短くしてみました。
1そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
かなり短縮できそうだったので私も同じような関数を作ってみました。 私の活動からご覧になってください。
1そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
4行のそう!の後に IF !RND(20)THEN @B を追加してみてください
2そうだね
プレイ済み
投稿
おちゃめ ochame_nako
ファイル名として使えるかどうかを判別するCHKNAME関数を作りました。ツール等を作っていてセーブ前に使えるファイル名かを知りたい場合に活用してください。
8そうだね
プレイ済み
返信[12]
親投稿
おちゃめ ochame_nako
私がmkII用に作った3Dポリゴン立体視プログラムもノミネートされていました。 アイディア賞にノミネートされるとは思いませんでした(笑)
4そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
要するにフェードインやフェードアウトのような処理をしたいということですか? それならば最前面(Z=-256)に画面を覆う大きなスプライトを表示してその色を黒から透明色に少しずつ変えていけばフェードインっぽくできます。 やり方がよく分からなければフェードイン、フェードアウトを行う命令を作ったのでそれを使ってください。(私の活動参照) FADEIN 300 とするだけで300フレーム(5秒)かけて徐々に明るくなる表現が可能ですよ。
0そうだね
プレイ済み