高速で繰り返しているため動いているように見えます。どんな複雑そうなゲームも、この流れに付け足しているに過ぎないのです。あまりに付け足すことが多すぎるために、管理を簡単にしたり、制限を設けたりするためにオブジェクト指向や、数々の取り決めがあります。できないので、ゲームプログラムも同じです。信じられないかもしれません。少なくとも私は信じていませんでした(笑)。ドラクエやFFなどのRPGを考えてみましょう。マップを動いたり、戦闘をしたり、いやカーソルを動かすのだって、プログラムで習う基礎的な文章を使う場面があまり想像がつかないと思います。教科書だけ見てもつまらないprintしかないですよね。練習で、これしかできないという感じがしますが、その基礎だけで実際なんでもできるのです。冒頭のループを当てはめてみましよう。マップ上を移動するとは、描画の中心点―この点を中心にして、マップデータが読み込まれる―の座標を押されたボタン(入力受付)の方向に足す(処理)ことです。90)2になり、描画範囲がズレて動いているように見えます。主人公は常に中心点に描画されます。主人公そのものが動かず、マップが逆に動いている感じです。3移動するときには主人公のアイコン画像を少し違うものを交互に読み込むようにすると、より動いているように見えます。4戦闘をするとは、「たたかう」などコマンドを選択して、味方と相手のHPやMPを変更させるということです。自分の攻撃力、相手の防御力を処理してダメージを算出してからダメージの数字を文字で表示したり、ゲージを変化させます。カーソルを動かすとは、方向キーを押すたびに数値を変化させ、その数値をもとに座標を決定し、選択中アイコンを描画するということです。決定ボタンを押したときは、その数値をもとに分岐し関数を実行します。同じキー入力でも場面によって処理が異なります。あるときの決定ボタンは戦闘の命令を決定しますが、あるときには「話しかける」となることがあります。ループの最初に、ゲームモードの変数によって分岐を作り、入力に対する解釈を変化させています。書くと、変数やループをどう使えばいいのか、今ならっていることがどのように役立つのか、なんとなくわかると思います。実際はもっと複雑ですが、脇道が増えるだけで基本は同じです。その脇道の多さが難しいのですが...。まとめということで、外見は難しく見せていますが細かく見ると仕組みは単純です。教科書を一通りやったあとは、それで簡単なゲームを作ったり、読んでみることをお薦めします。読むときは、このゲームの基本の流れを頭に入れたうえでまずはデバッガーを使って流れをおさえるとよいと思います。デバッガー超便利です。作ってみて本当にこれだけの言葉の組み合わせでゲームやプログラムになるんだ、とわかると上達は早いと思います。私はそこまでが長かったですが...。小説やシナリオ、美術、作曲や演奏も似たような上達過程をたどると思います。実際に作っていくなかで上達していく種類のものです。いうわけか、それらは何か自分で作ってみる過程を必要としているように思います。小説の書き方や作曲方法を学んでも、うまくできません。そもそも完成しない可能性すら高いです。いうことで、教科書を何冊やっても「小説を書くために文法を学ぶ」、「作曲するために楽譜を学ぶ」ようなもので、必要ではありますが生み出せるようになれるわけではないのです。基礎知識は点のようなもので、それらをつなぐ線をまなぶことが必要、みたいなことも言えるかもしれません。それを使って、何を作るかを考えましょう。してこう、しつこいかと言うと私がそうだったからです(笑)。「プログラミングできるようになりたい」と漠然と言っているうちはダメです。「~を作っている、やってるうちにいつのまにかプログラムできるようになってた」じゃないと。「教科書→プログラムできる→何か作れる」じゃなくて「何か作る→プログラムできる」なんですよ!とはいえ今はいいソフトウェアにあふれていて自家製ツールを使うような機会、必要性はないので、自ら手ごろな目標を作りだすことが必要です。今ごろブラウザやメーラーを作りたいと考えてあまりワクワクもしないと思います。テキストエディターを作るのは最高そうですが、難易度は超高そうです。考えると、ゲームはいい目標になると思います。手ごろで、ワクワク感もある。手近に慣れ親しんだお手本がある。何か目標とするゲームを思い浮かべて、それを再現してみましょう。それがなんであろうと、プログラムである以上は再現できるのです!ショボくなるとは思いますが!つまったら、Githubでいろんなゲームのソースを覗いたり、教科書を利用しましょう。あ、Git5の使い方は別で学んでおきましょう。心置きなくいじれるようになりますよ。じつははここまで偉そうに書いた私も...再現している段階です。初心者は脱したと思いますが、まだまだ中の下です。それでは、健闘を祈ります。サブ技術まとめ学習=開発なので実際に開発で使われる技術を利用すると学習も捗ります。Gitデバッガーpythonについてくるpdbとかありますが、なんかよくわかりませんでした。あまりに文字文字しい。統合開発環境のPyCharmには当然デバッガーもついているのですが、すごく使いやすかったです。行をポチポチ押せばブレークポイントを設定できます。設定なしで使えました。デバッガーというか開発環境のおすすめでした。途中にゲームの例(RPGのマップ)があって一石二鳥で参考になります。脚注1秒間に60回ループするというのが標準です。60fpsとか聞いたことあるのではないでしょうか。人間の目が判別できる限界で、これ以上細かくしてもあまり意味がないと言われています。プログラムの座標は、画面の右上が原点。駅で電車に乗っていて、向こうで停車している電車が動いているのに自分の乗っている電車が動いているように感じる現象と同じファミコン『スーパーマリオブラザーズ』の容量節約の話は有名ですね。歩いているように見えますが、実際は画像を左右反転させているだけらしいです。別画像ですらないという、涙ぐましい努力。バージョン管理システム。動かなくなってもいつでも元の状態に戻せるようになる心強い味方。