Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
160 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80154
次のページ(過去)
返信[4]
親投稿
おちゃめ ochame_nako
普通に使うならば特に問題はないですが、中央に近い0.5~0.6の範囲であっても0.9~1という高い値であってもほぼ同じ確率で発生するため「大きな値に対する希少性」は全くありません。 大きな値(小さい値)を出にくくするにはどうするかというと(RNDF()+RNDF())/2のように2つの乱数を足して2で割れば良いです。 そうすれば長方形だった分布がこんな感じで三角形に変わります。
0そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
標準のRND関数(RNDF関数)ではなくこのADAMを使用することにどんなメリットがあるのかを書いていきます。 プチコンには標準でRND関数があります。この関数は計算式によって生成された擬似乱数であり、完全な乱数ではないとはいえRND(6)であれば0~5の6つの数字がどれも同じような確率で発生可能です。 RNDF関数であれば0~1の範囲で一様の分布の乱数を発生させることが可能です。(下図参照)
0そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
使い方はADAM(S,P,Q)のように指定するだけで0~1の範囲の実数型の乱数を発生させます。自作ゲームで使用する場合には何倍かして整数化して使用すると良いでしょう。 Sは乱数の初期値(シード)です。0~1の範囲(1未満の値)で設定します。 0を指定した場合には毎回異なる値を返しますが、0以外を指定した場合にはシード値によって決まった値を返すのでネームバトル系のゲームに使用できます。 Pは端の値(大きい値、小さい値)の出やすさ(出にくさ)を設定可能です。2以上の値を設定してください。大きい値を設定するほど端の値が出にくくなります。(3~10くらいの範囲を推奨) Qは一様の分布をする範囲(平らに近い部分の範囲)を設定できます。(0.4~0.8くらいの範囲を推奨)
0そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
これがプログラムリストです。 20000回発生させた場合の分布表示を行うサンプルプログラムを付けています。
0そうだね
プレイ済み
プレイ日記
おちゃめ ochame_nako
分布を自由にコントロールできる乱数を発生させる自作関数ADAMです。 ネームバトル系のゲーム、RPGのパラメータ生成など様々な用途に使用できます。 プログラムリストや解説等はコメントに書いています。
26そうだね
プレイ済み
返信[13]
親投稿
おちゃめ ochame_nako
私は 作らせて≒作るのを手伝って という解釈を行いました
3そうだね
プレイ済み
返信[11]
親投稿
おちゃめ ochame_nako
3Dゲームといってもピンからキリまでありますが、擬似3Dならば比較的簡単に作れるし、プチコン3号でもスムーズに動くものを作ることも可能です。(もちろん、内容によっては厳しい場合がある) ポリゴンゲームのことを示しているのでしたら難易度は高くなるし速度面で厳しいです。 現在最速の描画環境でも最大15000ポリゴン/秒程度なのでゲーム制作時に表示以外の処理に半分程度の時間で済むと仮定した場合には、1フレームあたり100ポリゴン程度に抑えられたら60fpsは可能というレベルですね。 立方体1つ表示するのに12ポリゴン必要なのでそれを目安に考えると立方体8個程度で済むならばスムーズに動くゲームは作れる計算になります。(私が実際に作ったわけではないのであくまで計算値です) 15fpsが許容できればポリゴンゲームもそれなりに作れそうな感じです。(表示に凝れば1fpsを切ってしまうけど)
1そうだね
プレイ済み
返信[10]
親投稿
おちゃめ ochame_nako
作りたいゲームがあるというのは大変良いことだと思います。 格闘ゲームは下記のことができれば作ることが可能です。 (1)ボタン入力に対してキャラを自由に動かせる (2)技の入力判定やそれに対する処理 (3)相手キャラの思考ルーチン (4)自分の技や相手の技の当たり判定や勝敗判定 (5)スマブラのようにステージを活用するゲームの場合はステージとの当たり判定 とはいえ、デフォルトで格闘ゲーム向きのグラフィックが用意されてないのでそれを作ることがまず必要になります。 その際に動作のパターン数が多かったり大きなキャラで作る場合には1枚のGRPに収める工夫が必要になります。 いきなり、格闘ゲームを作るのはハードルが高いので、まずは、ボタン入力で左右移動+ジャンプを行うプログラムやスプライト同士での当たり判定を行うプログラムから作ってみるのが良いかと思います。
2そうだね
プレイ済み
返信[18]
親投稿
おちゃめ ochame_nako
私は初代プチコンからなので5年ですね。 3DSが発売されてから買ったので初代プチコンが発売されて少し後から始めました。 プチコンは結構特殊な部分も多かったのですが、BASICは四半世紀使っていたので少し使ったらすぐに慣れることができました。 プチコンが発売されて初めてプログラミングをした人と80年代からBASICを使っていた人でほぼ二分されそうな予感・・・。
1そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
プチコン3号は、GFILLだけではなく表示関係の命令はすべて実数型で指定しても内部では整数型として処理されています。そのため2の31乗以上の値はoverflowとなります。 FLOORは整数値にするだけであって整数型にするわけではありません。なお、FLOORは正しくは「切り捨て」ではなく「その値を超えない最大の整数」となっています。 したがって、同じ挙動にするには整数型に変換してやればいいのです。 変数Xに実数型の値が入っている場合はA%=Xとすれば整数型に変換できます。 また、整数型として処理する演算子を使うことで同様に整数型にすることができます。 0 OR X -1 AND X X>>0 X DIV 1 どれも同じ結果になります。
3そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
ボールの回転や抵抗を無視すれば軌道の頂点を結んだものはある程度の速度があれば一次関数に近い挙動になるのは正しいと思います。 それが気になる場合は、抵抗や回転を入れるとリアルになります。運動エネルギーは跳ね返り以外にも失われるためです。 ボールが速い時もしくはピンポン球のように軽い時はかなり大きな空気抵抗があります。 ボールと地面には摩擦抵抗があるためX方向に移動しながら跳ねるボールは次第に地面との摩擦によって転がり始めます。 私はボールの回転と跳ね返り、抵抗を意識したカットやドライブを自在にできる3D卓球ゲームをプチコンmkIIで作ったのですが、途中で飽きて試作品の動画のみの公開でやめてしまいました。 本格シミュレーションではなくゲームであればある程度意識して採り入れるだけで問題ないと思います。
1そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
私も飽きっぽいので大作は作れないです。 個人的にはアルゴリズム等を考えるのが好きなのでゲームの完成までの手順が見えたらその後は「作業」に感じてしまうので楽しめないためです。 それならば、自分が楽しいと思えることに集中すれば良いだけです。 私はリスト短縮等に興味があったためプチコン3号ではQSPを作っています。 QSPの場合は頭の中だけではなかなか思うようにはいかないため実際に組むまで分からないというメリットがあるし、作ってみると非常に奥が深いです。 https://miiverse.nintendo.net/posts/AYMHAAADAAB2V0erQWuGiw したがって、趣味で作っているだけならばモチベーション云々は考える必要はなく自分が好きなことだけをやればいいと私は思います。 逆に言えば、楽しくなければ(気分が乗らなければ)やらなければ良いだけです。
5そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
Aボタン入力待ちがたくさん出てくるプログラムならばDEFを使って自作関数(自作命令)として定義しておけば使い勝手はさらに良くなりますね。 現状でも問題ないのですが、「Aボタン入力待ち処理」の前からAボタンを押していた場合はどうなるのかとか「Aボタン入力待ち処理」が連続で発生する場面ではどうなるのかを考慮できるとさらにプログラミングのスキル向上ができると思います。
0そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
ボーネンさんへ スーファミのマリオカートやF-ZEROはスーファミで新たに加わったBG画面の2軸回転機能によって実現されています。プチコン3号にはこの機能がないので似たようなものをプログラムを作って実現する必要があります。 計算方法や解説等は「GRP2軸回転」などでネット検索してください。 私はアルゴリズムを考えるのが楽しいのでほぼオリジナルのアルゴリズムで作りました。 三角関数等も必要になるためポリゴン表示と難易度はそれほど変わらないと思います。 これが、ファミコン風の擬似3Dだと薄くスライスした横に細長い道路のグラフィックをスプライトの拡大縮小機能を使って近くのものは大きく遠くのものは小さくするだけでできるので超簡単になります。
8そうだね
プレイ済み
返信[9]
親投稿
おちゃめ ochame_nako
Иあっキー#ジャロさんが最初に作ったプログラムは共通の素数で順番に割っていくものなので大きな素数を指定した場合にはすごく時間がかかってしまいます。 Nが素数かどうかはN回ループして調べる必要はなくSQR(N)回で済むので「アルゴリズムは同一のままであっても高速化はできる」という例を書かせていただきました。 互除法を使用するのはそれよりも良い方法ですね。
1そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
マリオカートっぽいレースゲームを作るためには以下のものが作れる必要があります。 (1)擬似3Dのコース表示 (2)ボタン入力に対する車の挙動 (3)周回判定 (4)敵キャラの思考ルーチン、接触判定 (5)アイテム使用時の挙動と判定 (1)~(3)まで出来ればタイムアタック専用のゲームが完成可能です。 (1)は端的に言えば画面写真のような感じのものを表示できればいいだけですが、簡単とは言い難いです。すでにファミコン風の擬似3Dレースゲームを作った経験がなければまずはそれから作るのがベターです。(画面表示はスプライトの拡大表示だけでできるし周回判定も超簡単) レースゲームそのものを作ったことが無いならば見下ろし型から始めるのがベターです。 まずは、可能な限り自力で作ってみましょう。 その上で分からない部分があればここで質問すれば誰かが回答してくれることでしょう。
5そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
画面の解像度から縦横比を求めるだけならば1億、1兆という大きな値を計算することはないので現状の速度で何ら問題はないと思います。 それでも、高速化したいのであればループ回数を減らすようにすれば良いでしょう。現状では最大I回のループが必要となっていますが、これは最大SQR(I)回で問題ありません。これによってIの値が1兆ならば理論上では最大で100万倍の高速化が可能です。 私が作った簡易関数電卓QSPでは分数計算関数FRACを用意しているのですが、これを使っても比率計算を行うことは可能です。(ただの通分機能だけど) このFRAC関数のリストはHQSP程度ですが、力業で計算しているため遅いです。
1そうだね
プレイ済み
返信[4]
親投稿
おちゃめ ochame_nako
必要なものと言えば、透視変換の基礎知識と三角関数、行列、ベクトルの知識くらいですね。ちゃんと理解しようとすれば高校数学レベルになってしまいますが、公式に当てはめて計算するだけでいいので小学生でも作ることは可能です。 どんな公式が必要かは「プチコン ポリゴン」などのキーワードでネット検索をして調べてください。
3そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
標準では用意されてないので作ってみました DEF ODD(A) RETURN ABS(A) MOD 2 END ODD(変数)とすることで変数の値が奇数ならば1を返し偶数ならば0を返す関数です。
5そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
3.3.2起動時のメモリは8323072バイトなのでKBに直すとちょうど8128KB 8MBは8192KBなので差分は64KB・・・つまり・・・(以下はご想像にお任せします)
1そうだね
プレイ済み