Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17154
次のページ(過去)
返信[11]
親投稿
おちゃめ ochame_nako
ちなみにINFNAN()関数はこんな簡単なプログラムです。 DEF INFNAN(A) RETURN (A!=A)+(A*0!=A*0) END これでCLASSIFY()と同様にinfならば1、nanならば2を返すことで判定可能です。興味があれば、なぜ、そのような動作になるのかを考えてみると良いかもしれません。
1そうだね
プレイ済み
返信[10]
親投稿
おちゃめ ochame_nako
こういちさんへ RVAL()関数はメリット、デメリットの両面があり使いどころが難しい関数ですが、SLOT()と組み合わせることで使いどころがかなり増えますからね。 私は今までに様々な自作関数を作ってきましたが、合わせ技でここまで便利になる自作関数はなかなかありません。(合わせ技前提のSUFFIX()関数は例外ですが) ちなみに私が良く使う自作関数はRVAL()、SLOT()、PSTR$()、SUFFIX()あたりですね。 TIMER()、NEW3DS()、INFNAN()などもよく使っていましたが、MILLISEC、HARDWARE、CLASSIFY()登場で不要になりました。 Miiverseが無くなると今まで作った自作関数の大半が検索不能になってしまうためそれまでには自サイトの方で今まで作った自作関数をまとめたいと思います。
0そうだね
プレイ済み
返信[9]
親投稿
おちゃめ ochame_nako
これを見ての通りRVAL()とYYEVAL()はそれぞれメリット、デメリットが異なるのでどちらが良いかというより自分に合った方を使うと良いです。 RVAL()は自作関数に対応しているというメリットを活かして簡易関数電卓QSPに自由な機能を追加させたりOSもどきとして活用したりということも可能となりました。(特定の変数を数個対応させるだけならばわずかな改造だけで済むので簡単だし)
1そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
MIKIさんのYYEVAL()のプログラムを見れば真っ当な方法で式を評価するというのがどれだけ大変なのかが分かると思うし、これを見た後だとRVAL()がいかに単純なものかが分かると思います。        《 仕様比較表 》        RVAL()  YYEVAL() 自作関数    ○     × 組み込み関数  ○     ○ 演算子     ○     ○ システム変数  ○     × 定数リテラル  ○     ○ 変数      ×     ○ 速度※    147μs   241μs 特長   超コンパクト プログラムスロットを別途使用しない ※速度比較は"1+1"で行いましたが、複雑な式でも速度が落ちにくいRVAL()と比べてYYEVAL()はリアルタイムの構文解析のため複雑な式だとどんどん遅くなります。("1+1+1+1+1"だと156μsと575μsとなる)
1そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
NAGIさんへ RVAL()関数は非常にサイズが小さくプチコン3号の(自作関数を含む)すべての関数、演算子、システム変数、定数リテラルに対応しているというメリットがある反面で標準では変数には対応していない、基本的にスロット0での動作になってしまうというデメリットもあります。 前者のデメリットは簡易関数電卓やこの連立方程式を解くプログラムのように特定の変数のみ対応させることは可能で後者のデメリットはSLOT()関数を併用することで対応が可能です。 あとRVAL()関数は仕様上プログラムスロットを動作用とは別に作業用に1つ使ってしまいますが、それがどうしても気になるならばMIKIさんのYYEVAL()をお使いください。 https://miiverse.nintendo.net/posts/AYIHAAAEAABEVRTuNIUIpQ
1そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
このプログラムは単に二元一次連立方程式を解くだけのプログラムですが行列を使って多元一次連立方程式を解くように改造したり、(大幅な改造が必要ですが)自由な式を入力するだけで平方根の状態で表示できる二次方程式を解くプログラムを作るというようなことも可能なので興味がある人はチャレンジしてみてはいかがでしょうか。
2そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
このプログラムが簡単に作れたのは式を評価するRVAL関数、分数計算を可能にするFRAC関数のお陰です。 RVAL関数はスロットの場所に依存しているので現在動作するスロットを取得できるSLOT関数も併用しています。上記公開キーにはこれら3つの自作関数のプログラムも同梱しています。 これらの自作関数は私が過去に作ったものであり詳細は下記のリンクを見てください。 RVAL関数 https://miiverse.nintendo.net/posts/AYMHAAADAAB2V0fZKWc_BQ FRAC関数 https://miiverse.nintendo.net/posts/AYMHAAADAAB2V0fZg_mRMQ SLOT関数 https://miiverse.nintendo.net/posts/AYIHAAAEAACHVRTs1c4kFA
2そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
公開キーは【 QDVDDXXD 】 です。 プログラムもこんな感じで比較的コンパクトです。 仕組みは単純でX、Yの係数を求めてそれから中学の数学の授業で習う加減法によって解いているだけです。(入力する式はプチコン3号で実行可能な形式に限り、4Xは4*Xのように記述する) なお、このプログラムは0~3のどのプログラムスロットに置いても動作するように作られていますが、作業用に動作スロットの1つ次のスロットも使用します。(スロット1で動作させる場合はスロット2を作業用に使用)
2そうだね
プレイ済み
プレイ日記
おちゃめ ochame_nako
連立方程式を解くプログラムを作りました。X、Yを使った2つの式(どんな複雑な式でもOK)を入力するだけで解を分数で表示します。
11そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
私の「簡易毛筆」を使っていただきありがとうこざいます。 私も簡易毛筆を使ってプチコン3号で年賀状を描きました。 PCでそれを年賀ハガキに印刷してリアルな年賀状にしました。 印刷する場合には解像度不足でドットが粗いですがこれはこれでいい雰囲気の年賀状だと思います。
1そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
ζ(2)
1そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
誤解する人がいるといけないので補足しておきますが、どちらが正解でどちらが間違いということではないということです。 前者のSTICKの戻り値としきい値を単純比較するやり方はプログラム自体は簡単ですが調整が難しく、後者の角度を使うやり方はプログラム自体は少し難しくなりますが調整が簡単というだけです。 ちなみにるかかさん作のRPG「まじっくすと~り~」では前者の方法を少し改善した判定を用いています。(X、Y方向同じしきい値ではなく異なるしきい値を用いることで誤入力を軽減している) やり方は人それぞれで自分が思っているように動いていると思えばどれもが正解です。しかし、何となく(他所で使われているのを真似して)作ってみて少し気になるけど「まぁいいか」という感じで妥協している人は今回の書いた思ったように動かない理由や改善案を元にすれば自分が求めているものが作れるようになると思います。
0そうだね
プレイ済み
返信[5]
親投稿
おちゃめ ochame_nako
角度を使って判定を行う場合に注意すべきことは「向きの基準」です。 例えば8方向で「上」を判定する場合には45度の範囲となりますが、真上を基準に±22.5度の合計45度で判定が必要ということです。 このプログラムで+382.5という数字は+360(負数対策)に補正値22.5をプラスしたものです。 こうしないと真上から少しずれただけで斜めと判定されてしまう恐れがあります。 このプログラムはプログラムリスト短縮をしている関係上で分かりにくい部分もありますが、仕組み自体は非常に単純です。 とはいえ、普通に戻り値X、Yをしきい値とで比較する最初のやり方と比べると難しいため初心者は敬遠しがちだと思います。 プログラム自体は多少難しくても調整が楽(使いこなすのが楽)であるため結果的にこちらの方が簡単なのです。
0そうだね
プレイ済み
返信[4]
親投稿
おちゃめ ochame_nako
そこで、私がオススメなのが図の左側になるスライドパッドの角度(向き)から8方向に変換する方法です。 この方法だと冒頭の図を見てのように8等分されているため各方向に均等に入ります。(角度計算が少し複雑になるけど上下左右方向に比べて斜め方向を入りにくくしたりも可能) そして、さらに大きなメリットはしきい値は上下左右や斜め方向への入りやすさに影響を与えないということです。 つまり、しきい値を小さくすれば敏感に反応させることもできるし、しきい値を大きくすればスライドパッドを大きく動かした場合のみ反応させることもできます。 つまり、しきい値は単純にアソビの大きさとして機能するわけです。
2そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
では、逆にしきい値を0.6にしてみましょう。 これだと斜め方向にはほぼ入りません。 0.7だと斜め方向には全く入りません。 ちなみに冒頭の図の右下のものが概ねしきい値0.4くらいです。 このしきい値とX、Yの値を比較する方法はプログラム自体は簡単ですが、しきい値によって動作が変わるため実は使いこなすのが非常に難しいのです。(しきい値は大きめだけど斜め方向には入りやすくしたり、しきい値は小さめだけど上下左右方向に入りやすくすることはできない)
0そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
単純にSTICKの戻り値をしきい値と比較するこの方法は作りやすい反面で8方向の入りやすさが上下左右方向と斜め方向で変わるという問題点を抱えています。 例えば、スライドパッドの微妙な動きでもキャラが追従するようにしきい値を0.05に設定したとしましょう。 すると斜め方向に入りやすく上下左右方向には入りにくくなるためキャラを上下左右方向に動かすゲームではプレイが困難になります。 冒頭の図の右上のものが概ねしきい値0.2くらいなのでJUMP KUNではこんな感じの判定になっています。 しきい値を0.05にしてしまったら上下左右方向の入りやすさがこの4分の1くらいになってしまうわけです。(実際に0.05に変更して入力具合を確かめてみれば一目瞭然)
0そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
まず、よく使われているのがSTICKの戻り値であるX、Yの値を特定のしきい値と比較することで8方向を計算する方法です。 例えばしきい値(このプログラムでは変数SLVの値)を0.5に設定した場合は戻り値のXが0.5より大きければ右方向とみなし、Yが0.5より大きければ上方向とみなし両方を満たしていれば右上という感じです。 標準でSYSに入っているGAME3「JUMP KUN」ではこれとほぼ同じプログラムがしきい値0.2で使用されています。 しきい値より絶対値が大きい場合のみ判定が行われるため少し指が触れて思わず変な方向にキャラが進んでしまうということが起きることはありません。
0そうだね
プレイ済み
プレイ日記
おちゃめ ochame_nako
自作ゲーム等でスライドパッドを十字ボタンの代わりに使っている人も多いと思いますが、その際の注意点について書いておきます。
16そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
疑問に思ったことは実際に試すということは大事ですね。 ちなみに変数の場合は左辺に記述できますが、定数なので左辺値に記述はできません。(A$="ABC"の時にA$[1]="XY"とすることでA$を"AXYC"にすることは可能だけど"ABC"[1]="XY"という記述はできない) この変態仕様はプチコン3号(SmileBASIC)ならではのものですが、これを知っていることで大幅なプログラムリスト短縮も可能であるためQSPの作りやすさもかなり変わってきます。
2そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
私も以前プチコン3号に最適化したポリゴン表示ライブラリを作ろうと模索していました。 予定していた仕様は下記のような感じです。 ・GTRIの2倍高速な描画 ・P3D-ENGINEより2倍高精細なポリゴン ・半透明対応 ・似非テクスチャ対応(テクスチャ使用時も速度低下はほとんど無し) とはいえ、最適化が進まず、テクスチャ非対応の時点でGTRIより遅いので公開するのはいつになることやら・・・。(とりあえず、GTRIよりも速くなったら公開予定) ぜひ、NAGIさんも自前のポリゴン表示プログラム(任意三角形表示プログラム)を作ってみてください。
1そうだね
プレイ済み