自分の土台が理解が出来ないの辛いよなあ……自分の足元がどうなっているかというのを意識しだすと大抵の人は精神を壊しがちになる
ある問題があった時にその問題は複雑で巨大でそれ単体で挑むと全然わからん状態になる。だから「分割する」。
おそらく元増田に関して言えばループとif文というのはわかっているのだろう。
じゃあそれがどういった風に組み合わせればゲームというものが組み上がるか、という点に関していきなり挑戦しだすと大変なことになる。
ーそれらを操作が出来る
という定義をしてみる。これで三要素。
次に「画面に画像を出す」を分割する
画面に画像を出す、ということは「画像を画面の決められた位置に置いて表示する」ということが必要だ
さらに画像は「色の粒」と「その色の粒がどこに置いてあるか」というので表現できる
ピクロスとかあるだろ?あれと同じだ
ということは
・画像の色の粒を抜き出して画面に表示する
となる。
ここでまた問題が出てきた。「画面に表示する」だ。
画面に表示するということは画像の色粒情報が何がしかデジタルな情報から自分たちのアナログな世界に出すということになる
これをしてくれるのは画面に並んでる赤と青と緑のめちゃくちゃ小さな電球(LED)だ。
昔のブラウン管テレビなんかすごい近くで見ると赤と青と緑の粒が並んでる。
俺たちが画面を通して色を知るのはこの粒が「ある面積(1cmでも1mm四方でもいい)の中でどれだけの割合でどの色の電球が光っているか」という情報でしかない
例えば赤だけ光っていれば赤と認識するし、赤と緑が同時に光っていれば混ざって黄色に見える
つまり、画像の粒の情報から「ここの赤はこの数値だった光る、そうでなければ光らない」ということで色が決定される
ほら、if文が出てきただろ?
ここまで分割してようやっとif文の世界にたどり着く。しかし、逆に言えばこれだけ分割すればifの世界にたどり着けるということでもある。
もし「わかっている人」がいるのならその人はどこまでもこの問題の分割を行って分かる範囲まで落とした人だ。
プログラムをやるには実はこの「問題を分割する」という行為が一番大事になる
ただの四則演算とループやif文の組み合わせでなぜゲームが出来るのかといえば、それはゲームというものをそこまで分割しきったからだ。
んで、この分割を毎回色んな人が繰り返し実装するのはきついのでみんなすでにある道具を使ってしまう
「画像を表示する」という解決だけしたいからみんなそれがすでに出来るようにしてくれる道具を使う
それがライブラリだったり、もっと大きくなるとUnityというゲームエディターだったり、更に広い範囲でいうとOSになったりする
とまあ、ここまで言ったがこの「分割」をあらゆるものにやっていくのは本当に大変な作業だ。
色んなものを分割していくと「じゃあなぜ俺たちはifという命令をPCにわからせることが出来るんだ?」とか
「なぜループできるんだ?」というところまでに行く
けれどそこまで行くこと自体がある種の経験だしそれが自分たちが立っている土台を知る学ぶということでもある。