トピック
nobu divine-creator

初心者向けの無限ループ

初心者でも理解しやすい(使いやすい)無限ループは、どんな形式だと思いますか? いろいろな形式が思いつくと思いますけど、初心者が理解しづらい(使いづらい)形式ではダメなので、なるべく簡単で使いやすい形式を見つけ出したいと考えています! 条件としては、「無限ループからの脱出もセットでなければならない」ので、無限ループのみではなく、ループを抜ける方法も合わせて考えてください。 なるべく応用もしやすい形式であれば、なお良いです。
4そうだね
プレイ済み
返信[1]
親投稿
SEKI22 rcftgrsfrr578
ラベル~GOTO ラベルやWHILE 1~WEND、REPEAT~UNTIL 0位ですね あとプチコンで使えないけどDO~LOOP
0そうだね
プレイ済み
返信[2]
親投稿
すぎのは SUGINOHA
while 1 if 脱出条件 then goto @out if 終了条件 then end なんかの処理 wend @out 次の処理 よく考えたらsmilebasicで無限ループは、これしか使ったことがない
3そうだね
未プレイ
返信[3]
親投稿
nobu divine-creator
一番簡単な無限ループは、 ラベル GOTO ラベル だと思うのですけど、この形式の場合はループからの脱出に IF 文を使わなければならないじゃないですか…。 そうすると、少し面倒になるような気がするんですよね…。 それに対して、 WHILE !BUTTON() WEND という無限ループなら、ループを抜ける条件も一緒になっているので、こちらのほうが良いのかな?と思いました。 ただ、この条件を初心者が理解するのは少し難しいので、こういうものだと思ってもらうしかないのですけど…。
1そうだね
プレイ済み
返信[4]
親投稿
say sayer.exe
break これ以上わかりやすいパターンが思いつかん
4そうだね
プレイ済み
返信[5]
親投稿
say sayer.exe
あ、ごめんもとい while 1 if 条件 then break wend repeat if 条件 then break until 0 for 変数=初期値 to 終了値 [step 増分] if 条件 then break next これぐらい
2そうだね
プレイ済み
返信[6]
親投稿
nobu divine-creator
大前提として、プチコンで使えない形式は不可です! ラベルを使う形式と、WHILE 1 を使う形式は、無限ループとしては最も簡単だと思っています♪ ラベルは初期の頃ずっと使っていましたし、WHILE 1 は最近でもよく使っているのですけど、ループを抜ける条件が少し初心者向けではない気がするんですよね…。(そうでもない?) REPEAT ~ UNTIL の形式もよく使っていますが、他の形式より少し難しい印象が…?(必ず通過するという意味では、良い無限ループなんですけどね…。)
1そうだね
プレイ済み
返信[7]
親投稿
GOTO~ラベルだと無限ループを作るたびにラベル名を考えなければならず、さらに抜け出すためのラベルも必要になったりならなかったりするので、プログラムの流れを追うことに慣れていない初心者には使いづらい気がします。 ループには再帰呼び出しなるものもあるにはありますが、難しい上に使いづらいので論外。
1そうだね
プレイ済み
返信[8]
親投稿
個人的にはボタンやLINPUTなどの入力系との相性が良いREPEAT~UNTILが初心者にもおすすめ出来ると思います。また、「もし条件が満たされたならループから抜ける」というのも直感的だと思います。 ボタン入力待ちも REPEAT WAIT 1 UNTIL BUTTON(2) という風にすっきり書くことが出来ます。 WHILEも分かりやすいですが、 同様の動作をWHILEで書いた場合、 WHILE !BUTTON(2) WAIT 1 WEND になりますが、直前にボタンを押す動作があった場合、ループが無視されるので、混乱しやすいと思います。
1そうだね
プレイ済み
返信[9]
親投稿
Haru HaruMMLdaisuki
初心者ガチ勢「無限ループってなんだろう…怖そうだしいいや…」
2そうだね
プレイ済み
返信[10]
親投稿
りょう RYO_NAK
初心者向けとするならWHILEやREPEATの条件を1や0の定数にしてしまうのは いかがなものかなぁと思ったり
3そうだね
プレイ済み
返信[11]
親投稿
nobu divine-creator
そうなんですよね~♪ ラベルは多くなると、管理が大変になるという弱点が…! WHILE は無視されてしまう心配が…! FOR NEXT は無限ループより別の目的で使うほうが良い? …と考えていくと、REPEAT が一番無難な無限ループですかね? 無限ループ「怖くないよ…!抜け出す方法はあるから…♪」
0そうだね
プレイ済み
返信[12]
親投稿
nobu divine-creator
できるだけ簡単に…という目的で考えると、あまり複雑な条件を入力するよりは、こういうものだと理解しておき、後から細かい内容を理解するというので良いと思っています! なので、無限ループと条件分岐は別々の回に扱いたいと思っていて、 ボタンによる選択分岐 十字キーによる操作 スライドパッドによる操作 それぞれのテーマごとに説明をするという計画になっています!
0そうだね
プレイ済み
返信[13]
親投稿
しんいち stgf1080
無限ループというタイトルだと WHILE 1やREPEAT UNTIL 0 のように、条件部分が定数で、抜けるのはBREAK というのを連想しました。 条件部分が比較演算式とかなら、無限ループという感じではなく、ただのループかな。 ちょくちょく使う便利だと思うループは REPEAT VSYNC UNTIL BUTTON()
4そうだね
プレイ済み
返信[14]
親投稿
だにえる haru2016nen
初心者には 無限ループよりまず先に FOR-NEXTの「一定回数ループ」で ループの概念を理解してもらうと いいと思うんですが、、、 どういう計画になってます? ループの概念っていうのは 以下のような意味合い。 「ループは 全く同じ処理の繰り返しではなく、 似た処理の繰り返しであり 情報を更新して反映させることが 出来るのがミソ」
1そうだね
プレイ済み
返信[15]
親投稿
SilverBlue Corei72630QM
上級者「定数は変数よりも遅いのでREPEAT UNTIL N」 いやそんな事は無いか。
0そうだね
プレイ済み
返信[16]
親投稿
あきと SideBurnsM
ループから抜ける必要があるのでしょうか。 私は一番最初に必要なXSCREENのような初期化以外はサブルーチン内に初期化やゲーム処理を書いてメインループを抜けることはありません。 貼り付けたソースのようにサブシーケンスの切り替えで処理を換えていきます。 タイトル画面で力尽きる人にもこの構造で書いてもらえば流れを作れるようになるのでは…と思っています。
0そうだね
プレイ済み
返信[17]
親投稿
あきと SideBurnsM
この構造は便利だと思っているのですが、理解しないといけないことが多いと言うのが敷居が高い点です。 ・ラベル ・文字列変数 ・GOSUB ・文字列変数にラベル名を書いてGOSUBできること この構造は「???_INIT」「???_MAIN」「???_EXIT」というラベルを増やせば自由に場面も行き来することもできます。 上の画像ではタイトル画面ですが、ゲーム用の3つ、ゲームオーバー時の3つを用意してタイトルに戻るように繋げば一通りの流れたができあがります。
1そうだね
プレイ済み
返信[18]
親投稿
nobu divine-creator
「条件が成立するまでは無限にループし続ける」という意味で無限ループと呼んでいたのですが、ただのループというのが正しいのですか? ちなみに、「条件が成立したらループを抜ける」という意味では、無限じゃなくて有限ループのような気がしますが…。 本当の無限ループは「絶対に抜けられないループ」(←それじゃ進まない!)ということに? やっぱり、REPEAT が人気みたいですね♪ え~と…今回無限ループの話になった理由は、「ボタンが押されるまで待ち続ける」という処理をどうするか?と考えた時に、「条件が成立するまでループし続け、成立したらループを抜ける」という方法が良いと思ったからで、FOR NEXT のような一定回数ループよりも先に必要だと考えたからです。 なので、メインループを抜けるという話でもありません…m(_ _)m。
0そうだね
プレイ済み
返信[19]
親投稿
SEKI22 rcftgrsfrr578
プチコンじゃないけど DO LOOP これがいい FOR~NEXTは初心者にはきついかも
0そうだね
プレイ済み
返信[20]
親投稿
otta777 otta777a
ループとは特定の条件が成立するまで処理を繰り返す事を指すようで 無限ループは条件を意図的に成立させないようにするかループ内の 処理によって条件が成立しなくなってしまった場合に発生します。 後者はバグによって発生することがありますね。 ATMや切符の自動販売機やアーケードゲームなど、プログラムが 終了してしまうとサービスが提供できなくなってしまう物に意図的に 無限ループを実装しています。
1そうだね
プレイ済み
返信[21]
親投稿
MNC2 Monaca-kun2
むしろIFとGOTOの使い方こそがもっとも基本かつ超重要であり、ループを教える前に、まずそっちをみっちりとやるべきではないかと。
4そうだね
プレイ済み
返信[22]
親投稿
Godot orz_127
「条件が成立するまで無限にループし続ける」も「条件が成立したらループを抜ける」も、どちらも無限ではなく 条件付きループです。 無限ループは純粋にループし続ける 「@LOOP:GOTO @LOOP」 「WHILE TRUE:WEND」 「REPEAT:UNTIL FALSE」 かと。 「IF THEN」や「GOTO」 については制御文としてループより先に覚えるもののような気がします。 IF で跳び先を指定するのではなく、ループを抜けるBREAKに変わるだけなのでさほど難しくもない気がします。 多分以下の順に覚えていくかと。 GOTO (GOSUB)、IF THEN、FOR NEXT、WHILE WEND、REPEAT UNTIL 「WHILE !BUTTON():WEND」は 無限ループ出はなく条件付きループです。
2そうだね
プレイ済み
返信[23]
親投稿
nobu divine-creator
ウッ!以前に条件設定を間違えて、ループから抜けられなくなった苦い記憶が…!(;´Д`) 無限ループという名称が好きなんですけど、今回のループは条件付きの「ボタン入力待ちループ」というのが正しいみたいですね…。 ループと条件分岐とボタン入力って、完全には切り離せないと分かっていたのですけど、なるべく一度にたくさんの情報を入れ過ぎないようにしたいんですよね~。 第5話『ボタン入力待ちループ』 第6話『ボタン選択で条件分岐』 …という感じに、一回で覚えることを少なめにして、段階的に理解していく…というのが良いと思っているのです! 実際に、自分はそういう風に覚えていったので、たぶん他の人でも似たような方法が挫折しにくくなると思うのです♪
1そうだね
プレイ済み
返信[24]
親投稿
nobu divine-creator
たぶん、今回の目的である「何かボタンが入力されるまで待ち続ける」という条件付きループの例としては、このような形式が良いと考えたのですけど、どうでしょう? REPEAT はスキップされてしまう心配が無いし、とりあえずボタンの種類は問わないので、比較的分かりやすいのでは?と思います。 押されたボタンによる条件分岐は次回ということで…。
1そうだね
プレイ済み
返信[25]
親投稿
PRINTをループの中に入れる意味は何ですか?
1そうだね
プレイ済み
返信[26]
親投稿
nobu divine-creator
このループを理解した後、応用する場合に中に入れておいたほうが良いのかな?と考えました。 PRINT の場合は、ループ内に入っていると LOCATE 無しでは連続で表示されてしまう…と言いたいわけですよね? なので、ループに入れないほうが良いのかな?とも思ったのですけど、それだと応用しづらくなるかも?…と考えたのです。 でも、ボタン入力待ちループの場合は、中に入れる必要が全く無いので、ここでは入れないほうが良いですかね?
1そうだね
プレイ済み
返信[27]
親投稿
さすがに「なにかボタンをおしてください」という文字列を移動させたい人はいないと思います(笑) …という冗談は置いといて アニメーションしたい文字とそうでない文字の区別がつきづらくなるような気がします。 あとループの部分が長くなりすぎるのもどうかなと思います。(個人の意見)
1そうだね
プレイ済み
返信[28]
親投稿
nobu divine-creator
う~ん……やっぱり、ボタン入力待ちループは他のループとは別物と覚えてもらったほうが無難ですかね? これで REPEAT ~ UNTIL の基本的な使い方を覚えてもらって、そこから応用できるように…と考えていたのですけど、これがボタン入力待ちループの基本形として覚えてしまうのはマズいか…。
2そうだね
プレイ済み
返信[29]
親投稿
nobu divine-creator
私の超初心者講座の一番の目的は、「挫折者をゼロに近づける」ことなので、とにかく分かりやすい内容で、「初歩的なことだけを理解できれば良い」と思っています! そこから先の難しいことは、他の人の講座で学んでもらうとか、ミバ留学で学ぶので良いと思っています♪ 基礎さえ何とかなれば、だいたいの人は大丈夫になると思うので、とりあえずボタン入力待ちループの見本は、こちらの形式にしようと思います。
1そうだね
プレイ済み
返信[30]
親投稿
Godot orz_127
さっき「プチコン.net」を見ていたら BUTTON()のサンプルは普通にGOTOループとIF文を使っていました。 一応ご報告。
3そうだね
プレイ済み
返信[31]
親投稿
nobu divine-creator
ご報告には感謝いたしますが、それは任意のボタン入力待ちループというよりボタン選択による分岐のループですよね?(ボタンの入力を待つのは同じですけど…。) 入力されたボタンによって分岐するループは、第6話で IF THEN とセットにして行うことになっています。(GOTOループは使わない予定でしたが…。) 学ぶ順番に決まりは無いのですけど、自分自身が覚えた時のことを考えると、任意のボタン入力待ちループを覚えてから、ボタンの種類による分岐のループに発展するほうが理解しやすいと感じています。
1そうだね
プレイ済み
返信[32]
親投稿
Godot orz_127
ボタンの種別判定が6話だとしたら 5話の任意のボタン待ちループは これで良いのでは?
1そうだね
プレイ済み
返信[33]
親投稿
U-key osutaka917
ループの終了条件に関数を使うのは個人的には好ましくないですね。 WHILE 1~WENDの中にIF文を入れてBREAKでループを抜けさせる方が後で見直した時にわかりやすくていいと思います。 それに、BREAKでループを抜けさせるようにすれば、終了条件を複数用意したい時に柔軟に対応できますし。 ループの中にループさせる必要のない処理は書かせないべきです。 処理落ちの原因になります。 3DSが高性能だからOK、としてしまうと別の言語でプログラミングする際に支障が出る恐れがあります。 ループ処理について指導したいようですから、WHILE~WENDとREPEAT~UNTILの両方に処理の違いも含めて触れた方がいいと思います。 どちらを用いるべきか、などは教え子さんに考えさせるべきでしょう。 ご指導頑張ってください。
2そうだね
プレイ済み
返信[34]
親投稿
nobu divine-creator
GOTO ラベルによるループは、私も最初の頃よく使っていたので、初心者でも分かりやすいループのNo.1だと思うのですけど、今はほとんど使っていないループなんですよね…。 使わなくなった理由は、ラベルが多くなり過ぎると混乱しやすくなるからで、ループにラベルは使わないほうが後々のためにも良いと思います。 でも、IF THEN BREAK のセットはボタン入力待ちループで使ったほうが良いんですかね? 確かに、ボタン選択による分岐のループへ繋げやすいと言えますが…。 WHILE と REPEAT の違いについての理解は、後々に必要になると思いますけど、最初の頃に聞いても混乱してしまう気がします…。(私も理解したのは遅かった記憶が…。)
1そうだね
プレイ済み
返信[35]
親投稿
nobu divine-creator
私自身がプチコンを始めた当時(約2年半前)は何も分からず、最初に文字の表示方法から学び、表示した文字が消えてしまわないように WAIT で止める方法から覚えました。 でも、WAIT ではずっと止まっていてくれるわけではないので、何かボタンが押されるまで待ってくれる方法が必要になり、Miiverseで質問をして条件付きループの形式を少しずつ理解してきました。 その時に気に入って現在でも使っているのが、 REPEAT:VSYNC:UNTIL BUTTON(2) …という形式だったのですけど、それはあまり好ましくないのでしょうか? 何度も使用する場合には、GOSUB ラベルを使ってサブルーチン化すると使い勝手が良かったのですけど、その場合でも別の形式を使ったほうが良いのでしょうか?
1そうだね
プレイ済み
返信[36]
親投稿
かなり主観的な意見ですが、 IF THEN BREAKは正直あまり好ましくないような気がします。理由は、ループが長くなったときにバグが出たら、あちこち見直さなければならず、大変だからです。UNTIL (条件)とまとめておけばチェックが1か所ですむので、混乱も防げると思います。 >REPEAT:VSYNC:UNTIL BUTTON(2)< 特に問題は無いと思います。ただ、VSYNKよりWAITの方が短くて好きです。 >何度も使用する場合には、GOSUB ラベルを使ってサブルーチン化すると使い勝手が良かったのですけど、その場合でも別の形式を使ったほうが良いのでしょうか?< サブルーチン化はいい方法だと思います。 GOSUB~RETURNかDEF~ENDでサブルーチン化すれば、プログラムが短くなりますし、似たような処理が続くことも減り、迷子になりづらくなります。
2そうだね
プレイ済み
返信[37]
親投稿
Godot orz_127
恐らく順番にだと プログラムは上から順番に実行されるという前提を覆す無条件ジャンプのGOTO。 GOTOは行ったきりだけど元の位置に戻って来れるGOSUB。 GOTO、GOSUBは無条件だったけど条件がつけられる「ON GOTO」「ON GOSUB」。 ジャンプ以外の処理も条件付きで行える「IF THEN」。 ここまで覚えれば回数制限のループやループの最初に判定して抜けるとか、ループの最後に判定するとかの処理が作れます。 先ずループの仕方のバリエーションを押さえてから実はこれを簡単に表現出来る「FOR NEXT」「WHILE WEND」「REPEAT UNTIL」がある、と進めた方が良いかと。 GOTOとIFによる類似のループ例は端折るとしても最初にループの特徴については回を設けた方が良いかと。
1そうだね
プレイ済み
返信[38]
親投稿
ひろきち henahenachoco
本当にいろんな考え方があっておもしろいですね~ 僕はラベルを使ったGOTOがわかりやすいと思います。 大前提として、プログラムって上から下に順番に進んでいくもので、GOTOで初めてそのルールを飛び越えてちょっと高度なところへ足を踏み入れる感じがするんですよね。 あ、それまでにFORとかを教えてたら初めてではないですが…笑 WHILEやREPEATって、「条件が成立"しなくなったら"」っていう考え方が直感的でなくて、初心者の方にはわかりづらいかなー、と思っています。 僕も未だにWHILEもREPEATって限定的にしか使ってないんですよね~
1そうだね
プレイ済み
返信[39]
親投稿
U-key osutaka917
確かに初心者にはWHILEやREPEAT、IFなどの「条件」が絡む処理は難しいかもしれませんね。高校数学で本格的に触れる内容ですし。 初心者でも理解できそうな範囲だと、「<,>,<=,>=,==,!=」の記号の意味までなら何とか覚えられるでしょうか? ANDやORみたいなビット演算は難しすぎるでしょう。 とはいえ、上達するには避けて通れないのもまた事実です。 まずはサンプルとなる短いプログラムをいじらせて、考えさせながら教えていくのはどうでしょう? プログラムの記述方法は人それぞれ癖もありますから、一概にこれが正解だとは言えないですね。 その辺は自分の経験と勘を信じるしかないです。 プログラムを読んだ人が理解できれば合格、最低でも見かけ上想定した動きになればギリギリOKだと思います。 私も最初はPRINTやLOCATEでハリボテを作って、そこから加工していきますから。
1そうだね
プレイ済み
返信[40]
親投稿
おちゃめ ochame_nako
ループの方法はたくさんありますが、どれも一長一短であるためどれが初心者向けというのは無いと思います。 「初心者だからその時点で覚えることをできるだけ少なくしたい」と思うならばGOTOがベターだし、応用しやすい方法を最初から教えるべきと考えているならばWHILE~WEND、REPEAT~UNTILにBREAKで脱出する方法から入るのもありでしょう。 WHILE~WENDとREPEAT~UNTILのどちらがベターかというと入り口チェック、出口チェックという違いがあるものの極端にいえば「好みの問題」で使って問題ないと思います。(WHILEはループを脱出する条件を記述、UNTILはループを脱出しない条件を記述) https://miiverse.nintendo.net/replies/AYMHAAADAAB2V0fpqD21Hg
2そうだね
プレイ済み
返信[41]
親投稿
おちゃめ ochame_nako
個人的にはWHILE~WEND派ですがボタン入力待ちにREPEAT~UNTILを奨めるのも理由はあります。 それは最も簡単に記述できるからです。 REPEAT WAIT UNTIL BUTON(2)で完全なボタン入力待ち処理ができますが、WHILE~WENDだと完全なボタン入力待ちはWAIT WHILE !BUTTON(2) WAIT WENDとなります。 単なるボタン入力ループでありループ内では特に処理をしない場合はWAIT WHILE !BUTTON(2) WENDのようにループ内のWAITは省略可能です。 ここで重要となってくるのがVSYNCとWAITの違いですが、両者は起点が違うため全く同じ挙動になる場合もあれば異なる挙動になる場合もあります。 ちなみにVSYNCだと下記の場合には正常に動作しません。 INPUT A REPEAT VSYNC UNTIL BUTTON(2)
2そうだね
プレイ済み
返信[42]
親投稿
おちゃめ ochame_nako
ちなみに私の「プチコン3号入門講座」ではnobuさんとは全く別のやり方で「初心者の挫折」を無くす方法を採っています。(というか初心者が中級者になるのが目的の講座) これは上記のようなものを含めた初心者のあらゆるミスをあらかじめ想定することでそれに対応する方法を記載しているためテキスト量こそ多くなっていますが、それは現時点では関係ないことを読み飛ばすことで対応できるようになっています。(必要最小限の情報のみ欲しいというという人は「他のサイトをご利用下さい」というスタンス) あくまでこれはセルフ型学習に特化した私なりの考えなのでnobuさんはnobuさんが正しいと思ったやり方で何ら問題はないと思います。 初心者相手ならば「どんなループがベター」かよりも「なぜループが必要か説明があるのがベター」かもしれないですね。
4そうだね
プレイ済み
返信[43]
親投稿
nobu divine-creator
相反する意見があったりして、なかなか面白いですね♪(とても興味深いです!) これが単にプログラムを作るだけの話なら、「好みの形式で作れば良いじゃん!」となりますけど、初心者に薦めたい形式という話では、やはり「分かりやすさ」と「使いやすさ」を重視しなければなりません…。 そう考えると、REPEAT で WAIT を使うのが最も無難な気がします! それぞれの特徴や欠点を総合した上での考えです。 私が作ってるのは、α先生とフチネ三世が会話しながらプチコンの操作からプログラミングの基礎までを学んでいく…というスタイルなので、1話単位で読まなければなりませんが、画面写真も使って文字での分かりにくさを補うようにしています♪
1そうだね
プレイ済み
返信[44]
親投稿
nobu divine-creator
最初は、5話目では押されるボタンの指定はしない予定でしたが、6話目で扱う情報量が多くなるのはバランスが悪いので、5話目でボタンの指定まで扱うことにしました。 分岐と違ってアルファベットを変えるだけでボタンを指定できるので、ここまでやっておけば6話目の内容を理解しやすくなるはず……きっと……たぶん……おそらく……。
0そうだね
プレイ済み
返信[45]
親投稿
nobu divine-creator
第6話は、この例を使おうと思います! 第5話までに学んだことを使えば、1話でここまで何とか理解できるだろうと思います。 自分が学んだ時は無理でしたけど、効率良く学べば可能だったのではないか?と感じていたので、たぶん大丈夫だと思います。
0そうだね
プレイ済み
返信[46]
親投稿
nobu divine-creator
間違えていたので、一部を修正しました…orz。
0そうだね
プレイ済み
返信[47]
親投稿
おちゃめ ochame_nako
VSYNC 1ではなくあえてWAIT 1を使ったり、WHILE 条件式ではなくWHILE 1を使う際には説明がちゃんとあるのでしょうか? それとも単なる「おまじない」的なものでしょうか?(「WHILEの後に1を付けるのは無限ループにするおまじない」みたいな感じ)
0そうだね
プレイ済み
返信[48]
親投稿
nobu divine-creator
現在の自分なら理解できていることでも、始めて間もないような時期では、たくさんの情報を理解しきれない…という考えで、なるべく情報量をしぼるようにしたため、5話目で使った WAIT 1 を使ったほうが良いかと考えました。 ここでは VSYNC 1 でなければマズいなら、違いを説明しなければならなくなりますが、特に問題が無ければこのままで…。 6話目は押されたボタンによって分岐する方法なので、WHILE 1 のほうを使うようにしました。 1 を使う理由の理解は、始めて間もない時期では難しいので、そういうものだという理解に留めています。 細かい理解は後回しで…。
0そうだね
プレイ済み
返信[49]
親投稿
Godot orz_127
前のコメントで おちゃめさんがVSYNCの問題を説明してくれています。 それは無視でしょうか? 今は問題なくても将来的に問題が発生する可能性があります。 特にその違いも説明せず使用するなら 問題が発生しないWAITを推すべきかと。 WHILEについても説明せずおまじないで進めるなら「WHILE 1」ではなく「WHILE TRUE」の方が良いような気がします。
3そうだね
プレイ済み
返信[50]
親投稿
nobu divine-creator
任意のボタン入力待ちループでWAITを使ったように、ボタン選択による分岐待ちループでもWAITを使おうとしたら、VSYNCを使わない理由を聞かれたので、「VSYNCのほうが良い理由があるのか?」と思いました…。 WHILEの1は単に文字数が少ないことだけで選んでいたので、それはTRUEのほうに直すことにしました。
0そうだね
プレイ済み
返信[51]
親投稿
SEKI22 rcftgrsfrr578
しかしWAITだと処理落ちしやすくなる ループ前にVSYNCを置くと良いかも
0そうだね
プレイ済み
返信[52]
親投稿
おちゃめ ochame_nako
WAITとVSYNCの使い分け方はプチコン3号入門講座でも書いていますが、「待たないと困る」場合はWAIT、「待ちすぎたら困る」場合はVSYNCという感じですね。 ボタン入力待ちのように確実に待って貰わないと困る場合にはWAIT、メインループのように待つことで処理落ちが起きてしまい困るような場合はVSYNCがベター(常時60fpsで動作しているゲームだったらVSYNCでもWAITでも変わらないけどたまに60fpsを割るゲームだとVSYNCだとほとんど処理落ちが目立たないけどWAITだと処理落ちが非常に目立つ)ということです。 とはいえ、その違いを初心者には理解するのは難しいと思うし講座の流れもあると思うので、まずはどちらか片方に絞って書くというのも問題ないと思います。困る場面になってからもう一方を教えれば良いだけのことです。
2そうだね
プレイ済み
返信[53]
親投稿
nobu divine-creator
おちゃめさんへ 補足の解説をありがとうございます♪ 今回扱うのは、選択肢が表示された状態でボタンが押されるのを待って、押されたらラベルへ飛んで分岐するという流れですので、WAIT でも処理落ちにはならないはずです。 SP を操作するようなループを扱う時には、VSYNC を使わなければならないと思いますので、その時に WAIT との違いを説明するという計画です!
1そうだね
プレイ済み
返信[54]
親投稿
nobu divine-creator
最近、ある初心者の質問に対して、ZEXさんがたくさんの情報をコメントして、質問者が「もういいです。」とコメントしたのを見かけた人なら分かると思いますけど、それが始めたばかりの初心者の状態です…。 ある程度プログラミングを学んだ状態であれば、書かれた情報がとても役に立ちますし、分かりやすく書かれているのですが、何も知識が無い状態でたくさんの情報を与えられても混乱してしまうだけなのです! 私が扱う情報は初歩の初歩だけですが、それすら理解できなければその先へは進めません…。 とりあえず必要なのは、少しの知識でもできる達成感であり、それを積み重ねることでしか上達はできない…というのは間違っていないでしょう? 細かいことや詳しい理由などは、後から学ぶのでも良いと考えた内容で、挫折しないような講座を目指します!
1そうだね
プレイ済み
返信[55]
親投稿
おちゃめ ochame_nako
初心者には「プチコン3号のすべてを教えてください」という感じの人も多いですが、そういう人に限ってたくさんの情報を与えたら逆に嫌がったりしますね。 要するに自分が欲している情報が欲しいけど何を欲しているのかが分からないのが初心者だと私は考えています。 したがって、必要最小限の情報のみ与えるというのは方法的には間違ってないです。 プチコン3号用のプログラムということで単体で完結してオフラインでも閲覧できるというのは良いですね。 とりあえず、nobuさんなりの一貫性があれば良いのではないかと思います。
1そうだね
プレイ済み
返信[56]
親投稿
おちゃめ ochame_nako
私は過去四半世紀に渡って様々な講座を書いてきてその都度問題点を抱えていたのですが、プチコン3号用の個人制作の講座はWeb上にたくさんあるので自分に合ったものを選択すれば良いだけというわけで、私は他所との差別化のため欲しい情報が必ず記載されているような講座を目指して作っています。 現在作っているのが「知識編」でそれから実際のゲーム制作のノウハウをまとめた「実践編」も作る予定ですがなかなか時間が取れないので制作は全く進んでいません。 ちなみに夏コミにて「プチコン3号 裏マニュアル」を委託頒布します。裏技満載の中上級者向けの本です。
0そうだね
プレイ済み
返信[57]
親投稿
nobu divine-creator
私が約2年かけて学んできたことを振り返ると、「もしこのような説明をしてもらえていたら、もっと早く理解できただろう…」と感じていて、それを形にしているのがこの講座です! だからと言って、これがベストというわけではないですし、「挫折してしまうタイプの人が実際に読んで理解できなければ失敗」ですから、公開後にも修正をしなければならないだろう…と予想しています。 とりあえず、始めたばかりの人が読んで理解できるように…と言葉を選んでいますが、上手くいくかは分かりません…。 自分が理解できていないことは説明できませんし、最終的にどのくらいのことまでできるか?は不明です…。 全ての伏線を回収できるか?は怪しいですが、必要な説明は省略しないので、残りはミバ留学や他の講座などで理解してもらえば良いと思っています。
0そうだね
プレイ済み
返信[58]
親投稿
nobu divine-creator
少し誤解されているようなので書いておきますと、元々はDLできるプログラムとして考えた講座ですが、さすがにその形式だと作るのが大変ですし、間違っていた場合に修正も大変ですから、現在は自作HPで行うようになっています!
0そうだね
プレイ済み
返信[59]
親投稿
nobu divine-creator
とりあえず、ループに関する問題は解決できたので、こちらは終了し次の問題へ進むことにします。 ご協力してくれた皆さんに感謝すると共に、次の問題にもアドバイス等をよろしくお願いします! ちなみに、第7話『音楽と効果音』までできました♪
0そうだね
プレイ済み