プレイ日記
nobu divine-creator
分かりやすい変数の使い方 ※ただし、これまでの講座内容を全て理解している状態での話です!
8そうだね
プレイ済み
返信[1]
親投稿
say sayer.exe
どうわかりやすいのかがわからないです おいらならこう書く '画面上にどう表示されるか想像してから実行してみよう v=0:? v v=1:? v v=v+1:?v v=8:? v v=1+2+3:? v v=v+4:? v
1そうだね
プレイ済み
返信[2]
親投稿
だにえる haru2016nen
有効利用してこそ意味があるんじゃ…? 活躍させないと、「何の為に変数使ったの?」 「どんな時に使えばいいの?」って 話になるのでは。 初心者に挫折因子を与えてしまいそう…。 例えるなら、 暗算で解けるような問題を コンパスを使って解こうとしているみたい。
0そうだね
プレイ済み
返信[3]
親投稿
nobu divine-creator
sayさんが書かれたのは、いろいろな代入の仕方ですね。 それも必要なことですが、初心者が変数を使えない理由は、具体的な使用例での説明が無いからだと思うのです!(私が最初の頃に変数を使えなかった理由はそうでした。) だにえるさんが書かれた有効利用というのは、どのような内容ですか? この例は、変数の使い方の基礎なので、まずは変数をどう使うか?を示す内容で、そこからスプライトの操作などへの活用法へ繋げる予定なのですけど…。
0そうだね
プレイ済み
返信[4]
親投稿
だにえる haru2016nen
ん?もしかして、 「どの場所に変数を入れられるのか」って 話ですか? それならWAITの引数にも 入れたらいいと思いますが。
0そうだね
プレイ済み
返信[5]
親投稿
そひ ladixsofiya
全くの無知を対象として考えた場合 自身なら算数との違いを入れるかな。X=X+1とか超難問と思われるので ×と÷の表記違いと共に=の違いも言っちゃう。 流れとしては 変数の代入/計算自体は小学校低学年の算数から始まる事なので sayさんの様な形で記憶をつついて 算数との違いを補足する という形。 後は具体例。この様に書ける というのは自身も入れるけど 異なる部分は ・X=1の重複は入れない。(数値を直接書いた方が早くね?の回避用) ・WAIT 60を変数にする。(数値を1ついじるだけで全ウェイト変化) ・座標内計算表示の前か後に変数計算を入れる。(2番目の後にY=Y+1 表示は2番目のまま等) ・SPはSP側にまわす。(ただの好み。基本は基本のみでまとめたい) 他は 別命令が絡むものばかり過って思い浮かばかなった。
0そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
変数において代入は非常に重要な要素ですが、「値が変化する」ということが変数を使う一番のメリットであるためそれを使ったサンプルにするとより良くなるかもしれません。 スプライトを絡めて変数の理解を図りたいならばこんなサンプルはどうでしょうか? X=8 WHILW TRUE  X=X+1  SPOFS 0,X,8  WAIT WEND X=X+1の1を2や4のように大きな数字にすれば「キャラが速く動く」ということも分かるし変数Yを用意して縦方向にも動かすことができると思います。 「画面の端から出ていかないようにするにはどうしたら良いか?」「ボタンで操作するにはどうしたらよいか?」という疑問が出てくると思うので「条件判断を行う」という発展にもつなげやすいと思います。 とはいえ、初心者はX=X+1を理解するのも大変なので上記のサンプルの前にさらにワンクッションあった方がベターでしょうね。
0そうだね
プレイ済み
返信[7]
親投稿
Godot orz_127
使い方のサンプルはこれで良いとして 具体的に変数をどう使っているかの説明部分はどうなっていますか? それがないとサンプル読め!と言っているのと同じ気がするのですが?
0そうだね
プレイ済み
返信[8]
親投稿
nobu divine-creator
アドバイスを参考に修正しました! WAITに数値を使っていたのは、そのほうがパッと見で時間が分かるからだったのですが、確かに同じ数値が続くのなら、変数にしたほうが良いですね♪ 次の新作からは、そうしようと思いました…というか、以前の作品も修正したいと思いましたが、急いで変えることでもないので、後回しに…。 重複している所は、本来続けて入力するのではなく、「同じ結果になる別の書き方」を説明している都合上、同じ形式で並べているからです。 この変数の話は、 SPの基本的な表示方法と、 SPの基本的な操作方法の間に入って、操作方法を理解しやすくするのが目的となっているので、最終的にSPの移動に変数を使えるようになるのが目標です。 おちゃめさんの例に繋がる準備段階といった感じの内容です♪
0そうだね
プレイ済み
返信[9]
親投稿
nobu divine-creator
最初の流れだと、 1つの変数に代入→複数の変数に代入→1つの変数を計算式にして使う…となっていましたが、 それだと不自然な流れになっていると感じたので、 1つの変数に代入→1つの変数を計算式にして使う→複数の変数に代入…という順番に修正しました。 変数の中身を変えずに計算式にするのも有効な手段ですけど、変数の中身を変えた場合に他の所まで変わってしまう問題があることや、計算式が複雑になると分かりづらくなるという問題を避けるには、複数の変数を使ったほうが良い…という流れにしたほうが自然ですよね? 添付画像は補助的なものであり、キャラクターの会話による説明が中心ですので、画像を見ただけで理解できるというわけではありません。
0そうだね
プレイ済み
返信[10]
親投稿
nobu divine-creator
今回の変数編では、一番下のプログラムを理解できればOKという感じなのですけど、そこまでの流れでおかしな点はありますか? 変数の使い方の基本を理解できれば、SPを自由に移動させるプログラムを理解しやすくなると思うのですけど…。 ちなみに、無限ループについては知っているという前提になっているので、あとは十字キーの入力さえ説明すれば、SPの操作が可能になるという計画になっています。
0そうだね
プレイ済み
返信[11]
親投稿
おちゃめ ochame_nako
このサンプルでは変数を理解する上で重要な「値が変化する」ということの理解が図れるかは微妙(せっかくループ内で処理しているのに変数の値が固定というのも・・・)に感じますが、その辺は解説でカバーできていればいいのではないかと思います。 あと今後の展開についてすごく個人的な意見ですが、ボタン操作を行う際にはWAIT 1で固定した方が失敗が少なくてオススメです。 動きを遅くしたい場合は変化量を小さくするのが良いです。 コンソールではその変化量で速度調整ができない(小数で変化させると不具合が発生しやすい)ため「アクションゲームを作る際にはコンソールよりもスプライトの方が初心者にとって易しい」というのが私の考えです。
2そうだね
プレイ済み
返信[12]
親投稿
おちゃめさん 確かにコンソールだと移動が速すぎてついていけない…ということがよくあります。 BREPEATを使えば…と思ったこともありますが、結局同じですね。 かといってWAITの引数を変えるとボタンが反応しないことがあるので、確かにコンソールでのアクションは初心者には難しそうですね。
0そうだね
プレイ済み
返信[13]
親投稿
nobu divine-creator
「変数の値が変化する」という状態の理解は、SPを十字キーで操作するプログラムの解説で行えば良いと考えています。 1話の中で基礎の全てを扱うというのは、詰め込み教育過ぎると感じますので、全話を通して読むことによりプログラミングに必要な知識がそろってくることになるように心がけています! なので、忘れた場合は前の話を読み返す…と毎回言うようにしています。 では、WAIT 1 を使うようにします♪
0そうだね
プレイ済み
返信[14]
親投稿
おちゃめ ochame_nako
こういちさんへ 昔(80年代)のBASICで作られたゲームではコンソールが主流でしたが、これはグラフィック表示が遅かったため(BASICでスプライトが扱える機種が限られていた)コンソール以外は動作面で厳しかったのが理由です。 そのためコンソールで「速すぎる」ということもなく初心者にとってはコンソールで作るゲームが入門用としてポピュラーでしたが、プチコン3号では当時の機種と比べて数100倍~数1000倍高速であるためコンソールでは逆に難しくなってしまいました。(特にプチコン3号ではボタン入力が1フレーム単位の更新となっているためWAITで遅くするのは不具合が発生しやすい)
0そうだね
プレイ済み
返信[15]
親投稿
おちゃめ ochame_nako
ちなみにコンソールで低fps動作のゲーム(普通にプレイできるレベルまで遅くしたゲーム)を作る際にボタン入力に対してきちんと反応するようにはこんな感じの工夫が必要になります。 もちろん、こんな工夫をしなくてもWAIT 8で7.5fpsのゲームとなるわけですが、BUTTON(1)、BUTTON(2)では押してもほとんと反応しないしないし、引数無しのBUTTON()でも反応しにくいため初心者が改善したいと感じたら一気にハードルが高くなってしまいます。
1そうだね
プレイ済み
返信[16]
親投稿
おちゃめ ochame_nako
そういう意味ではコンソールはさらっと流してスプライトに主眼を置くnobuさんの講座は個人的には良いと思います。 コンソールでは元々キャラを動かすということは向いておらずキャラを描いて動かして元の位置のキャラを消すという動作が必要不可欠となります。その際にはちゃんと消さないと残像が残ったりするためそれが初心者泣かせとなります。(しかも、覚えたことがスプライトへと発展させにくい) スプライトはキャラを動かすことを前提に作られていますのでその辺は全く考える必要はなく表示座標を変えるだけでキャラを動かすことができるため初心者向きです。 もちろん、最初に覚えることはコンソールよりは多いですが、自分で描いたキャラ(ドット絵)が動かせるというのは初心者にとっても楽しく感じるのではないかと思います。(もちろん、最初はデフォ画像からでも問題ないです)
0そうだね
プレイ済み
返信[17]
親投稿
nobu divine-creator
コンソールに力をいれず、スプライトを早めにした理由は、ミバで多くの初心者がスプライトを使いたがっていたことからなのですけどね…。 私自身もそうでしたし…。
0そうだね
プレイ済み
返信[18]
親投稿
nobu divine-creator
これを最後に知らせておかないと、自分で変数名を作れないか…。
0そうだね
プレイ済み
返信[19]
親投稿
だにえる haru2016nen
作り方って VARとかDIMの宣言のことを言うような。 「書き方」の方がいいのでは。
0そうだね
プレイ済み
返信[20]
親投稿
おちゃめ ochame_nako
「変数名の決め方」とか「変数名のルール」という感じですね。(ルールの範囲内ならば自分で自由決められるということと自分で分かりやすいものにするのがベターということも記述してあると良さそう) 誤解させないためには「変数」ではなく「変数名」にすると良いかもしれません。
0そうだね
プレイ済み
返信[21]
親投稿
nobu divine-creator
自分で変数を作る場合のルールという感じだったのですが、確かに「変数名の決め方」というほうが適切ですね!
0そうだね
プレイ済み