Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
155 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75154
次のページ(過去)
返信[23]
親投稿
おちゃめ ochame_nako
この大会の締め切りはいつなのか分からないので閉じられる前に個人的な意見(感想)を書いておきます。 ランダムで重複のない10桁の数字を表示するための方法はBlackSoftさんも書かれているように大きく分けて下記の2つの方法しかありません。 (1) ランダムに発生させ重複チェックを行う (2) 順番に並んだ数字をランダムに並べ替える ただし、言葉で書いたらこれだけでも実際のコードの書き方は無数にあるからプログラミングは楽しいです。 これが「正解」と決めつけずに自由な発想で作ってください。 というか、そういうプログラム(こんなやり方があったのか!というプログラム)を私自身が見てみたいです。 ちなみに以前私が開催したコードゴルフはこんな感じでした。 https://miiverse.nintendo.net/posts/AYMHAAACAAADVHkDQgi7rw
0そうだね
プレイ済み
返信[20]
親投稿
おちゃめ ochame_nako
A$="0123456789"@L SWAP A$[0],A$[RND(10)]?A$GOTO@L このプログラムは停止ボタンを押すことで表示ができます。ちょっとインチキだけどルールからは外れてないと思います。 手動停止必須ではなく普通に作るならば A$=" "FOR I=0TO 9B=RND(I+1)A$[B]=STR$(I)+A$[B]NEXT?A$ となりましたが、でんぺんさんが投稿したもの( RND(I+1)番目に数字Iを挿入する方法 )と変数名以外は同じになったので上記の方を投稿とします。 コードゴルフ大会は私も以前2回ほど開催しましたが同じものを作るにも人によって異なるコードが見れて大変楽しかったですね。
2そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
配列はたくさんのデータを管理するというのに便利ですが、添え字によって変数を指定できるのが最大のメリットだと思います。 それを活かせるものはたくさんありますが、作ったあと自分で楽しめるものとしてはトランプゲームなんてのはどうでしょうか? 52個の配列を確保して任意のカードを表示するプログラムから発展させて様々なゲームを作ることができます。 ブラックジャックあたりならば簡単ですね。ポーカーも役判定さえできれば簡単にできます。 その役判定にも配列変数を使うメリットが非常に大きくなります。(というか、配列変数を使わずに作るのは超大変)
1そうだね
プレイ済み
返信[12]
親投稿
おちゃめ ochame_nako
というわけで「スリープ中はタイマーが動かないようにする」かつ「できるだけ正確にする」ためには私のSLEEPTIME関数を使うなどをしてMILLISECからスリープ時間をマイナスするか、MAINCNTを1/60秒ではなく1/59.83秒くらいの補正を行うという選択肢を採るがベターだと思います。
1そうだね
プレイ済み
返信[11]
親投稿
おちゃめ ochame_nako
約0.3%の差というと10時間だと100秒程度の差となるため気になるというのも理解できます。 プチコン3号のタイマー機能はTIME$、MAINCNT、MILLISECがありますが、TIME$は分解能が1秒(MAINCNTと組み合わせて15フレーム)だけど正確でプチコン3号が起動していない場合も動作しているというメリットがあります。 MAINCNTは誤差が発生しやすいけど分解能は1フレームで表示のフレームに同期しているというメリットがあります。 MILLISECは分解能が1ミリ秒と極めて高くプチコン3号がスリープ中に動くというメリットがありますが、60fpsでの動作であれば実分解能は1フレームとなります。
1そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
簡単に言えば「条件が成立している間のみ繰り返す」のがWHILE~WEND、「条件が成立するまで繰り返す」のがREPEAT~UNTILです。 さらに言えばWHILE~WENDは最初に条件を記述しているため繰り返し前に条件が不成立ならば1回も実行されずWENDの後を実行しますが、REPEAT~UNTILは最後に条件を記述しているため繰り返し前に条件が成立していても1回は必ず実行されるという違いがあります。 自分が行いたい処理に適した方を選択すると良いです。 速度の違いはありますが微々たる数値なので初心者が気にする必要は全くありません。
0そうだね
プレイ済み
返信[10]
親投稿
おちゃめ ochame_nako
これについてこちらのトピックスにて詳しく解説を行っています。 https://miiverse.nintendo.net/posts/AYMHAAACAAADVHjrpjduHA もちろん、論理演算等の知識があればIF B AND #RIGHT || X<0 THEN ~ と記述して何ら問題はありません。(これも正解の1つ)
1そうだね
プレイ済み
返信[9]
親投稿
おちゃめ ochame_nako
IF文におけるANDやORの使い方はヘルプに記載されている通りです。 例えば、Bは条件でしょうか?#RIGHTは条件でしょうか?X<0は・・・条件ですね。 この場合はB AND #RIGHTで1括りになります。 B AND #RIGHTの部分を (B AND #RIGHT)==#RIGHT に変更するか、もしくは(公式ガイドブックの記述に合わせるならば)(B AND #RIGHT)>0 に変更すれば正しく動作します。 プログラムには、これが正解というものはありませんが、自分が意図している通りに動いていないものは正解ではないためどこがいけないのかを知る必要があるでしょう。 ちなみに B AND #RIGHT という記述が間違いと言っているわけではなくこれを理解するためにはビット演算と論理演算の理解が必要になるため実は初心者向きではない記述方法というだけの話です。
2そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
私は、スリープ中にキャラが成長したりイベントが発生するならばタイムに含めてもいいけどそうではないならばプレイ時間に含めない派ですね。
2そうだね
プレイ済み
返信[52]
親投稿
おちゃめ ochame_nako
難しいことに挑戦するのは良いですが、何も解決の足がかりがない場合は現状の自分にできることで妥協することも大切です。 しかし、影があるのと影がないのとでは雲泥の差です。 影があることで例えばこのカメラアングルでキャラを上にジャンプさせることが可能になります。 この単調な影というのはファミスタ等の見下ろし型2Dゲームで古くから落下位置を示すものとしても用いられているためです。
0そうだね
プレイ済み
返信[9]
親投稿
おちゃめ ochame_nako
ちなみにGSPOITを使いつつ判定漏れを限りなく0にする方法はあります。 毎秒60回ではなく毎秒600回等の極めて高速な判定を行えば良いだけです。 ただし、よほど処理速度に余裕がないと難しいため「こういうやり方もある」というのを覚えておく程度で良いかもしれません。 60fpsのゲームだからといって判定もそれと同期させる必要は全くないのです。(精密な当たり判定を行うため120fps、240fpsの判定は良く使われる)
0そうだね
プレイ済み
返信[5]
親投稿
おちゃめ ochame_nako
MIKIさんのコメントへの補足です。 「式の値」というのは、比較演算子を含んだ条件式の場合にはその条件が成立している場合は1、不成立の場合は0という値になります。 比較演算子とは等しい「==」、等しくない「!=」、左辺より右辺が大きい「<」、小さい「>」などを示します。 例としてA==10という式においてAの値が10の時には「A==10」の値は1になり、Aの値が10以外の時には「A==10」の値は0なります。 「分からない」というのは「自分で作ろうとしたけど分からない」「他人のプログラムを見ていて分からない」という2つが考えられますが前者の場合はMIKIさんのコメントで全く問題ないけど後者の場合だと「よく使われる方法」は覚えておいた方が良いかもしれませんね。 ちなみに私の「プチコン3号入門講座」は後者の解決も重視しています。
0そうだね
プレイ済み
返信[13]
親投稿
おちゃめ ochame_nako
三角関数を数学的に理解したいというのではなくゲームの中で使用したいというだけであれば小学生でも理解は可能です。 BUTTON()関数等の学校で習ってない関数をプチコン3号で使えているわけだからSIN()、COS()、ATAN()といった三角関数も定型のものとして覚えてしまえば難しいことは何もありません。
1そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
GCIRCLEで描いた円と特定座標との判定ならばGSPOITを使うのが一番簡単だし正確な判定が可能です。 ただし、円が動く場合には判定漏れが起きてしまうし円の内部も含めるというのであればZEXさんの方法がベターでしょう、
1そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
WIDTH 16はQSPを作るのに無くてはならない存在です
3そうだね
プレイ済み
返信[9]
親投稿
おちゃめ ochame_nako
プチコン3号の共同制作(合作)の成功例がほとんどないのはまとめ役の力量不足やお互いの力量の把握不足が理由でしょう。 それに加えてプチコン3号は小中学生がメインでありよく知らない者同士で1つのことを行うための経験が不足しているのも理由でしょう。 数少ない成功例といえるBS PROJECTは一定以上のスキルを持つ人が集まっていて自分ができることをお互い実際に提示しあっているのが大きいです。 細かいことを話し合うのも大事なことですが、まずは「とりあえずこんな感じのものを作ってみたのだけど・・・」とたたき台を出してそれを元に考える方がよりスムーズに進むと思います。 「共同制作」ではなく「制作手伝い」であれば「たたき台」を用意する必要はありませんが「こんなのを作りたい」というのをより具体的に提示した方が協力者も現れやすいと思います。
4そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
プチコン3号は何から初めても良い自由度の高さは他のゲームでは味わえない面白さですが、自由度が高いが故に初心者は戸惑ってしまうかもしれません。 最初は他の方が書かれているようにサンプルプログラムやユーザーが作ったプログラムを実行するのがベターでしょう。 様々なジャンルのゲームやツールが公開されており、プログラミングをしなくてもそれだけを楽しんでも問題ありません。 自分でも何か作ってみようと思ったらその時はプログラミングを初めてみてください。 そうすればプチコン3号の魅力を100%引き出せます。 最初は分からないことだらけだと思いますが、少しずつ覚えていけば誰でもプログラムは作れるようになります。 自分が考えた自分だけのゲーム(ツール)を作るというのは非常に楽しいですよ!
1そうだね
プレイ済み
返信[4]
親投稿
おちゃめ ochame_nako
難しく考えなくてもメインルーチン(メインループ)を作りメインだけでは冗長になってしまう部分をサブルーチンや自作関数を使い効率化すれば良いと思います。 そして、ステージクリアやゲームオーバー時などの処理を作り、最後にタイトル画面を作ります。 これは私にとって重要と思う順番であり重要度は人によって変わるため「これが正解」というものはないと思います。 先頭から順番に作るのはよほどサイズの小さい単純ものを除き普通は行いません。 ちなみにQSPなどのサイズ制限付きプログラムはまずは普通に組んだあとで短縮と効率化によって制限内に収まるように作っています。 私がQSPを作っているときの手順についてはこちらに詳しく書いています。 https://miiverse.nintendo.net/posts/AYMHAAADAAB2V0erQWuGiw
3そうだね
プレイ済み
返信[5]
親投稿
おちゃめ ochame_nako
麻雀の思考ルーチンの難しさは麻雀に似たルールであるセブンブリッジよりも上でオセロの思考ルーチンを作るよりも難しいです。 これは麻雀の役の多さに起因している部分が多いため的確な条件判断を行えれば難易度はそれほど高くなくてプチコン3号で作ることは十分可能です。 麻雀風のゲーム(ドンジャラみたいなタイプ)だと難易度はかなり抑えることは可能です。 麻雀の思考ルーチンが難しい場合は適当な役が揃った状態をランダムで作る→その中から1つ入れ替えてテンパイの状態にする→ここからゲームスタート というイカサマ麻雀でもありでしょう。(これでも役の判定プログラムは必要) ゲーセンの麻雀ゲームとかだとこんなイカサマ麻雀はよくあるしこれでも相手の捨て牌から当たり牌を予想するという麻雀の醍醐味の1つは味わうことが可能です。
2そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
3DSはハードウェア的には32bitフルカラーに対応していますが、プチコン3号ではRGB各5bit+アルファチャンネル1bitの16bitカラーに丸められるためやむを得ないと思います。 モノクロであれば32階調となるわけですが、工夫次第でこんな感じの256階調表示は可能です。(自作関数GRAYを使用) グラデーション表示では16bitカラーだとマッハバンドが目立つのですが、実写画像ならばそれほど気にならないと思います。
3そうだね
プレイ済み