2020年01月17日

俺がファミリーベーシックを学んだ時に詰まったこと

拝読しました。


「初学者が何かを学ぶ過程」というものは非常に貴重な知見であって、知識を得た後では分からないこと、気づかないことに気づかせてくれることがしばしばあります。

経験者にとって、一番分からないのは「何が分からないのか」ですので、その情報が詰まった「分からなかった頃の話」というものは非常に貴重なのです。

そこで、私も初学時代の頃をちょっと振り返ってみようかと思ったんですが、私のプログラミング初学時代というのは小二の頃に触ったファミリーベーシックですので、ちょっと初学過ぎました。

ただ、当時は本当に色んな本を読みあさったり、ベーマガに載ってためちゃ長いプログラムを丸々全部打ち込んで0とOを打ち間違えてエラーが出て泣いたりしていたので、当時何に悩んだのかは割とはっきり覚えています。知見として役に立つかどうかはともかく、ちょっと懐かしいので当時のことを思い出して書いてみようと思います。内容のレベルが低すぎるのは小学校低学年の考えることだからと勘弁してやってください。

以下、承前。



〇そもそも「入力したプログラムを後から実行する」ということの意味がよく分からなかった

何を言ってるか分からねーと思うんですが、要は対話式の逐次実行しか分からなかったんですね。CLSって入力すると画面がクリアになる。BEEPって入力すると音が鳴る。言った通りのことをファミコンがしてくれる。うん、これはいい。

けど、じゃあ、 「10」 って入れてから入力すると何ですぐ実行されないのか?意外とどの参考書にもこれが書いてなかったんですよ。

で、行番号つけて入力してると、当然ながら段々画面はスクロールしていって、最初の方の行番号は画面から消えるじゃないですか?けどRUNするとちゃんと最初の方の命令が実行される。これは何でなんだ?と。当たり前ですがメモリとか記憶領域とかの知識もないので、最初プログラムってのは画面内に見えているものだけだと思ってたんですよ。

これについては、後々ベーマガで見かけた、「プログラミングというのは「計画書」を作ってあげることなんだ」みたいな表現を見て、そっか、自分が書いたものをファミコンが覚えていて後からその通り実行してくれてるんだな、的に納得しました。


〇「定義」と「動作」の違いが分からなかった

例えばMOVEとDEF SPRITEなんですけど、そもそも「何かを用意する」と「その何かを動かす」というのは別々にすることなんだよ、というのが最初全然分からなかった。というかDEF MOVEとか「動作を定義する命令」もあったんですけどそれ以前の問題ですね。DEF MOVEってその場でSPRITE呼んで動かすことも出来るんで、じゃあこれだけでいいじゃん、なんで処理分けるのとか思ってました。

これについては、確か「用意したキャラクターの色をゲームの展開に合わせて変える」みたいなプログラムがあって、そこで「あ、先にキャラクターだけを用意して、その状態を色々変えることが出来るんだな…」みたいなことでそのメリットというか、意味を納得したような記憶があります。


〇処理があっちこっち動くことの意味がよく分からなかった

GOTOとかGOSUBとか、「今いる場所から別の場所にいってそこの命令を処理して、またメインの流れに戻ってくる」みたいな命令の意味が最初さっぱり分かりませんでした。とにかく、「処理を飛ばして別のところに行く」という概念が理解出来なかった。アルゴリズムの一番基本的な部分ですよね。

これ解決したの実はゲームブックのおかげで、ゲームブックで項番飛ぶの「あ、これファミリーベーシックじゃん!!!」って納得して色んな疑問が一気に氷解したんですが、ゲームブックがなければずっと分からないままだったかも知れない。ゲームブックは偉大。

〇繰り返し処理が本当にさっぱり分からなかった

ファミリーベーシックだとFOR I=1 TO 10 STEP(繰り返す処理):NEXTみたいな感じで書くんですけど、要はfor文ですよね。これ、当時は何度解説読んでもわけわからなくって。多分、「同じ一文の中で処理がループする」「処理を抜ける為のカウンタがあってそれがインクリメントされていく」みたいな概念が難しかったからだと思うんですけど、かなり後まで繰り返し処理がうまく使えなかったんですよ。

これいつから分かるようになったのかよく覚えてないんですが、結局「なんとなくこう書くもんだから書いておこう」みたいに何度も書いてる内に、なんとなく「この回数分この処理が何度もぐるぐるするってことかな…」みたいに分かるようになったような気がします。



なんか改めて思い出すと分かってなさ過ぎて色々とアレですが、まあ初学者には違いなかったと思うのでそのまま書いてみます。ファミリーベーシック楽しかったですよね。

取り敢えずアルゴリズム的な「処理があっちこっち飛ぶ」ことを理解するのにゲームブックはマジ最適だったと思うのでみんなゲームブック読むといいと思います。特に創土社のヤツ。

今日書きたいことはそれくらいです。

posted by しんざき at 16:23 | Comment(2) | 雑文 | このブログの読者になる | 更新情報をチェックする

今日のしんざきのMHWアイスボーン進捗 20/01/17

ひーひー言いながらイヴェルカーナ倒しました。

まあこの画像は二回目の時なんですけど。(SSとるタイミングを外すことに定評のあるしんざき)

今回結局ラージャンの為に大剣をメインで進めることにしてみたんですが、やっぱ飛び回るモンスターが相手だとなかなかしんどい。イヴェルカーナ、周囲にブレスをまき散らす攻撃とかあって、懐で斬ってると避け切れないでブレス喰らっちゃうことが結構あってかなり苦労しました。毎回ウチケシの実使うの面倒なんでしまいには属性やられ耐性つけた。

まだクラッチクローからのぶっ飛ばし壁たたきつけの精度が低いんで、もうちょっと練習しないといけないですねー。しがみついて、さあぶっ飛ばすかって時にスリンガーの残弾がないことに気づく、っていう不具合どうにかなりませんか?

で、なんか霊玉が出てくれたので、

なんか抜刀大剣が復活したらしい!!という噂を聞きまして、定番っぽい装備を作ってみました。

なんか私P2Gの頃大剣始めて、抜刀コロリンの立ち回りが体に染み付いてるんで、基本抜刀コロリンスタイルの戦い方がめっちゃ体に馴染みます。真溜め狙いも悪くはないんだけどやっぱ抜刀斬り。なじむ、実になじむぞっ。

ただ、わたし匠珠一個しか持ってなくて、ジャグラス大剣で匠1だけだと正直あっという間に切れ味なくなっちゃってしんどいので、これも定番のヒドゥンブレイズでも作るかなーと思っているところです。スロ4の複合匠珠欲しいなー。

ストーリーの方は、なんか知りませんがちょっと普通のより怖い感じのバゼルギウスが出てきて、それを撃退したらなんかあちこちに古龍が出てきたでオイって感じです。

MHW、「みんなで調査してるよ感」を出したいっていう意図は分かるんですけど、ゲーム上は全部プレイヤーに丸投げに見え勝ちなんでいまいちストーリーに感情移入出来ない。。。まあモンハンにストーリーなんておまけなのかも知れないですが。モガ村みたいに、「小さな村の運命が全部プレイヤーの双肩に」みたいなシンプルなストーリーの方がゲームのフォーマットに適しているのかも知れないですね。ナバルデウス戦は熱かった。

ということで、引き続きやって参りたいと思います。ラージャンまだかなー。

今日書きたいことはそれくらいです。



posted by しんざき at 09:01 | Comment(0) | レトロでもないゲーム | このブログの読者になる | 更新情報をチェックする
このエントリーをはてなブックマークに追加