Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
153 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73154
次のページ(過去)
返信[4]
親投稿
おちゃめ ochame_nako
私がプログラミングを覚えたての頃に最初に作ったのは数当てゲームみたいな感じのものです。 しかし、これは購入したのがアクションゲーム等を作るのに向かないポケコンだったのでプチコンで作るならばこれがベターとは言い切れません。 自分が作りたいものを作れば良いのではないでしょうか? 初心者が「現時点で作れるもの」としてしまうとかなり限定されるため作りたいものを考えてそれに必要な命令をその都度覚えれば良いです。 スプライトが必要ならば覚えればいいしまだ使う必要はないと感じれば無理に覚える必要はありません。 ただし、「自分が作りたいもの」が非常に高度な知識や技術を要求するものであればそれを単純化したりある程度の妥協が求められるかもしれません。 それでも、自分で作りたいという強い気持ちがあれば多少難しくても何とかなると思います。
1そうだね
プレイ済み
返信[12]
親投稿
おちゃめ ochame_nako
Simple Calc QSP(簡易関数電卓QSP)は上記リンク先のRVAL ver.2.0ではなく未公開のver.2.1を元にしています。 というわけで、後出しになりましたが、RVAL ver.2.1を公開しました。 https://miiverse.nintendo.net/posts/AYMHAAADAAB2V0fZKWc_BQ
0そうだね
未プレイ
返信[3]
親投稿
おちゃめ ochame_nako
要するに擬似3Dのレースゲームを作りたいということですか? 正確にカーブを表現しようと思ったら三角関数の知識が必要になりますが、カーブっぽいものを表示するだけならば簡単です。 その前に擬似3D表示の方法ですが、これは実は横に細長い道路(地面)を奥に行くにしたがって縮小表示するだけです。この計算方法は正しく行うことは可能ですが、擬似3Dである以上は正確さよりもそれっぽさが重要だと思います。 その辺は長くなるので「プチコン 擬似3D レース」あたりのキーワードでネット検索すると良いでしょう。 直線コースが表示できたらカーブは奥に行くごとに少しずつ横にずらせばいいだけなので実は簡単に表現できます。
0そうだね
プレイ済み
返信[31]
親投稿
おちゃめ ochame_nako
RVAL関数がver.2.1に更新しているのでこちらのトピックスをご覧になってください。 https://miiverse.nintendo.net/posts/AYMHAAADAAB2V0fZKWc_BQ
0そうだね
プレイ済み
返信[4]
親投稿
おちゃめ ochame_nako
あとこのRVALは自由に自作プログラムに組み込んでOKです。 下画面に電卓のボタンを表示すればグラフィカルで四則演算の優先順位付きの電卓も簡単に作ることができますよ。 もちろん、グラフィカルな関数電卓も簡単に作れます。 簡易関数電卓QSPのフルバージョンに搭載されているように私の自作関数PSTR$と組み合わせると有効数字約16桁の高精度な電卓になります。 https://miiverse.nintendo.net/posts/AYIHAAAEAABEVRTp-ZVMIg このRVAL関数は電卓に限らずいろいろな用途に使えると思います。 面白い使い方を考えた人はぜひ教えてください。
0そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
RVALは様々な開発環境に搭載されているEVALに近いものと考えれば分かりやすいです。 EVALはソフトウェアの脆弱性に繋がることが多いため一部の人は懸念してしまうかもしれないですが、そもそも自由にプログラムを改変可能なプチコン3号においてはプログラム内で別のプログラムを実行するなんて簡単に行えることであり「EVALの脆弱性」は全く気にする必要はなく安心して使用することができます。 以前、RVALのver.2.0を公開した時に全く見当違いのコメントによってトピックスが荒れてしまったので今回は最初に安全宣言をしておきます。 RVALそのものは上記のように全く無害ですが、プチコン3号で実行できない計算式や関数を入力した際の例外処理は行っていないため必要な人は事前にチェックを行ってください。 ただし、この事前チェックを普通に行えばRVAL関数の100倍以上大きなサイズになると思います。
0そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
ちなみにこのRVALをベースに作ったのが簡易関数電卓QSPです。 https://miiverse.nintendo.net/posts/AYMHAAACAAADVHkyf3cD3A こちらはQSPという制限の中でUIを作り、メモリー機能搭載し、変数に対応し、ユーザー制作の様々な自作関数に対応できるようにしています。(文字列を返す自作関数や戻り値の無い自作関数にも擬似対応) そのため自作関数を用意すれば様々な機能を追加可能です。(自分用の万能電卓、万能ツールにすることが可能) ちなみにこの「簡易関数電卓QSP」にQSPで作られた拡張関数をいくつか追加したフルバージョンでは順列・組み合わせ計算、消費税計算、分数計算、数値積分、グラフ表示、タイマー機能、ストップウォッチ機能、お絵かき機能、ゲーム等の多種多様の機能を搭載しています。(すべての機能をQSP以下のサイズで提供)
0そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
プチコン3号で使えるすべての演算子、関数、システム変数、定数リテラルに対応しています。(変数には対応していません) 例えば、?RVAL("#A") とすれば「16」と表示され、?RVAL("2+3*4") とすれば「14」と表示され、?RVAL("SIN(RAD(30)) とすれば「0.5」と表示されます。 このRVALを使えば WHILE 1:INPUT A$:?RVAL(A$):WEND と記述するだけであらゆる演算子に対応した電卓プログラムになります。
0そうだね
プレイ済み
プレイ日記
おちゃめ ochame_nako
以前作った自作関数RVALのver.2.1です。 このRVALを使えばプチコン3号で実行可能なあらゆる式の値を求めることが可能でたった1行で電卓プログラムを作れるという優れものです。
17そうだね
プレイ済み
返信[16]
親投稿
おちゃめ ochame_nako
「置き換え」が同一と見なされるのであればIF文で記述しているものを論理式に置き換えて短縮等も同一扱いになってしまうため投稿できるプログラムの幅が一気に減ってしまうんですよね。 個人的には「これがこんな風に置き換え出来るなんて知らなかった(気づかなかった)」というのを見てみたいため置き換えは歓迎したいところです。
3そうだね
プレイ済み
返信[12]
親投稿
おちゃめ ochame_nako
スペースやコロンの省略といった「単純な省略による短縮」ではなくMID$(A$,B,1)をA$[B]を変えるような「置き換えによる短縮」は個人的には同一手法とは定義して欲しくないですね。(あくまで主催者であるBlackSoftさんの意向次第ですが)
1そうだね
プレイ済み
返信[11]
親投稿
おちゃめ ochame_nako
確かに「同一手法」の定義はあった方が良いですね。 「先に投稿したものからコロンやスペースの省略をしただけのものは同一手法とみなす」みたいな具体的な記述がないと「アルゴリズムが同じ」というだけではすごく幅が広くなってしまいますからね。 ちなみに私がすでに投稿したプログラムはコロンやスペースの省略はできないためアルゴリズムが異なるものでないとこれ以上の短縮はできません。 すでにいくつか試してみましたが、現時点では最初に投稿した最もシンプルなものを超えるものは見つかっていません。
0そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
A=-1WHILE A-B||B-C:C=B:B=A:A=RND(10)?A;:WEND (44文字) この問題を見た瞬間に思い浮かんだ方法なのでさらに短いものができたら再投稿します。 ところで再投稿の回数制限は無いんですか?
3そうだね
プレイ済み
返信[11]
親投稿
おちゃめ ochame_nako
高度サウンドユニットのARYOP命令を使えば配列変数の演算速度が40~100倍くらい速くなりますよ。(ある程度大きな配列を一括処理する場合) サウンドのみに限らず、画像処理やゲームでも威力を発揮すると思います。 もちろん、ARYOPで高速化可能なプログラムでないと極端な高速化は難しいですが。 画像処理ならばFFT関連の命令も有効ですね。 昔でいえばBASICではかなりBASIC(一部マシン語)みたいな感じです。 New3DSならば何もせずに旧3DSの3~4倍になります。 こちらは高速な上位機種なので当然といえば当然ですね。 両方合わせるとプチコン3号がまるで別物の速度になります。 ただし、それがあることを前提に作ってしまうとその環境を持ってない人は使用できない(使用するのが辛い)というプログラムになってしまうので注意が必要ですが。
5そうだね
プレイ済み
返信[20]
親投稿
おちゃめ ochame_nako
りゅうまごさんも書かれていますが、最初は日本語で考えてそれをプチコン3号に変わる形に置き換えるというのが初心者にはやりやすいと思います。 日本語ならば普段使っているのでより具体的な別の言い回しも浮かびやすいと思います。 プログラミングは最初は覚えることが多いですが、自分で考えた通りにプチコン3号上で動くようになると非常に楽しくなります。 ぜひ、頑張ってください。
1そうだね
プレイ済み
返信[19]
親投稿
おちゃめ ochame_nako
「Aボタンを押したらBEEPが鳴る」というのを「Aボタンを押した瞬間に1回だけBEEPが鳴る」という動作をして欲しいのであればそれが分かるようにプチコン3号に伝えなければなりません。 WHILE 1  IF BUTTON(2)==#A THEN BEEP  VSYNC WEND このプログラムではBUTTON()のところをBUTTON(2)に変えるだけで対応ができます。 こんな感じで「このようにして欲しい」を具体的に考えてそれを「プチコン3号に分かる形」で記述すれば良いのですが、「Aボタンを押したらBEEPが鳴る」という単純なものでも分かるように最初は「自分が思っている動作」と「プチコン3号が実際に行う動作」がなかなか一致しません。 しかし、それは「Aボタンを押したら」を「Aボタンを押した瞬間に1回だけ」のようにより具体的に考えることでプチコン3号に伝えることが可能です。
0そうだね
プレイ済み
返信[18]
親投稿
おちゃめ ochame_nako
では、WHILE 1とWENDは何のためについているかというとこのプログラムを繰り返すためです。 というのもプログラムというのは特に指定が無い限りは先頭から順番に実行して最後の行まで実行したら終了するためです。 つまり、繰り返しがないとIFが実行された時点でAボタンを押してないと音が鳴ることはないということです。 WHILEは条件をつけて繰り返しを行えますがWHILE 1と記述することで無条件で繰り返します。(簡単に言えば無限ループ) あとVSYNCは入力と出力のタイミングを取るために入れています。なぜ入れるのが分からない場合は「画面表示や入力が絡む処理を行う場合はループ内に必ず1個入れておくべきもの」と覚えておくと良いです。
0そうだね
プレイ済み
返信[17]
親投稿
おちゃめ ochame_nako
では、「Aボタンを入力したらBEEP音を鳴らす」というプログラムがどのようになるかを考えてみましょう。 最初は分からないと思うので回答の一例を挙げると次のようになります。 WHILE 1  IF BUTTON()==#A THEN BEEP  VSYNC WEND 実際にこのプログラムをプチコン3号で実行すればAボタンを押している間はBEEP音が鳴り続けることが分かると思います。 BUTTON()はどのボタンを押しているかを取得するものであり「入力」に相当します。BEEPはBEEP音を鳴らす命令で「出力」に相当します。 IF~THEN~は「判断」に相当します。 トータルするとIF BUTTON()==#A THEN BEEPは「もしAボタンを押したらBEEPを鳴らす」というプログラムになります。
0そうだね
プレイ済み
返信[16]
親投稿
おちゃめ ochame_nako
プログラムというのはプチコン3号に対して「こういうことをして欲しい」というのを記述したものにすぎません。 ただし、プチコン3号は融通が利かないコンピュータであるため分かるように具体的に記述しなくてはならないのでその書き方を覚える必要があります。 さて、プログラムですが、人に命令をする場合は「いつ、どこで、何を、どうしなさい」という感じになるのですが、コンピュータにおけるプログラムは入力、出力、判断、分岐、繰り返しで構成されます。 これはどんな複雑なゲームであろうと同じです。 入力というのはボタン入力、タッチでの入力、マイク入力などがあり、出力というのはコンソール(普通の文字)、スプライトなどによる画面出力、BGMやBEEP音などによるスピーカーからの出力があります。
0そうだね
プレイ済み
返信[9]
親投稿
おちゃめ ochame_nako
圧縮データの展開が高速にできればSPANIMでアニメーション中にGLOADを繰り返すだけでSDカードの容量限界の動画を再生できそうな気がします。
2そうだね
プレイ済み