Udemy講座の100 Days of codeを進めていきます。今回は11-20daysです。
- day11 Black Jack
- day12 Scope & Number guessing game
- day13 How to Find and Fix erros in your Code
- day14 Higher Lower Game Project
- day15 Local Development Set up & the Coffee Machine
- day16 Object Oriented Programming
- day17 The Quiz Project & the Benefits of OOP
- day18 Turtle & the Graphical User Interface (GUI)
- day19 Instances, State and Higher Order Functions
- day20 Build the Snake Game Part1
day11 Black Jack
これまで学んだことを使用して、ブラックジャックをするプログラムを作成しよう。というセクションでした。
ヒントがあるので、このヒントに従ってプログラムを作成していきます。
こういうゲームを作成する際には、ゲームの流れがあるので、フローチャートを作成するとよりプログラミングがやりやすくなると思います。
day12 Scope & Number guessing game
名前空間の話です。関数の外にある変数と内にある変数それぞれを呼び出すとどうなるか、を学びます。最後に1-100のランダムな数字を10回で当てられるか(1回の解答で答えより高いか低いか教えてくれる)ゲームを作成します。
この課題では、関数を使用して、進めていきますが、自分はとりあえず動くものを作るか、と関数を使わずにコードを書いていました。動作はとりあえずOKですが、明らかに見にくくなるので関数をそれぞれの処理にまとめてやるべきと反省し、自分はまだまだだなあと思う次第でした。
day13 How to Find and Fix erros in your Code
用意されたコードのエラー修正を行います。
基本的にIDE等を使用していればエラーをアクセント付きで表示してくれるのでどこが間違えているのかわかるのですが、時にはエラーは出ないが、自分が思った通りの結果を表示してくれないときがあります。
コードが長くなり、自分がやたらめったらに書いているとこうなったときにどこを直せばいいのかもわからず、人に聞こうにもその人も何がなんやらとなってしまうので要注意と思います。
day14 Higher Lower Game Project
用意されたデータから2名選出され、どちらのフォロワーが多いかを当てるゲームを作る課題です。
こちらもどのようなゲームを作るかデモをプレイし、1からコードを作成していきます。
毎度のことですが、いきなり全部を作ろうとするのではなく、一つ一つの機能に着目してそれを組み合わせる、バグが起きたら都度修正という風に地道に行っていく必要があると思います。
この辺りまでくれば関数の使い方などにはなれてくるのではないでしょうか。
day15 Local Development Set up & the Coffee Machine
これまで使用してきたrepl.itではなく自身のローカルにてpythonを実行できる環境を作っていきます。使用IDEはPyCharmです。以前PyCharmのインストールをしたことがあったのですが、新しいバージョンのものがでていたので改めてインストールしなおしました。
PyCharm上でコーヒーマシーンの実装を行います。今まで習ったことを使うのですが、要件からその実装を実際にするのは中々難しく感じます。どこまでを関数にすべきか、変数名はこれでいいか。感覚ですが、bool値を格納する変数はis_continueのようにisをつけて書いていることが多いような気がします。
day16 Object Oriented Programming
ここから何回かにわたってオブジェクト指向について学んでいきます。
クラスの作成を学んだ後に前回作成したコーヒーマシーンをオブジェクト指向を用いて作成するとどのようになるかの学習を行います。
day17 The Quiz Project & the Benefits of OOP
クイズプログラムの作成を行います。
10問ほどの問題文と答え(yes or no)が格納されているデータが与えられ、その問題を取得するクラス、問題を出すクラスをそれぞれ作成していきます。
問題をすべて出し切るために今何問目か、出題しながらカウントしていき、これが総問題数を超えたら終了するプログラムです。
1から作るのは中々骨が折れますが、大枠と、ところどころヒントはもらえるので講師からここを作成してみてください。と指示が出ても一応まだサクサク進めることができます。
day18 Turtle & the Graphical User Interface (GUI)
ここからオブジェクト指向を学ぶに加えて、公式リファレンスを読み進める技術を学んでいきます。使うモジュールはturtleとpythonに元々入っているものです。これを用いてDamien Hirstのspot painting(色々な色を用いた点のみの高い絵)を作成します。
公式リファレンスを読むと、点(dot)を作成する方法、点を書く場所を移動させる方法、色を変える方法等等が書かれており、これらを読み進めて作成します。公式リファレンスを読んでもなんだかわからないときにはstack over flowで検索することで同様のお困りごとをしている人が発見でき、結果的に解決につながります。
turtleは非常にシンプルなモジュールでリファレンスの量も1ページのみで量が少ないので苦も無く読み進めることができました。しかも講師が課題の前に「この辺りを見るといいかもねえ~」みたいな感じで教えてくれるので、特に躓くこともなく進めることができたと思います。
day19 Instances, State and Higher Order Functions
前回のturtleを用いて線を描くプログラムを作成します。listen()関数を用いることでキーボードからの入力待ち状態にすることができ、キーボードを押した際に、前進、後退、右回転、左回転できるようにします。
Turtleクラスを複数作成して亀レース、どの亀が1位か当てるプログラムの実装を行いますが、作成した亀を同じオブジェクト名でリストに格納していくのを知り、オブジェクト名が同じでも問題ないのか。と気づきました。
画面サイズの設定、及びカメが画面端に到達した際にプログラムがストップするように設計。
day20 Build the Snake Game Part1
同様にTurtleを用いてsnakeゲームを作成します。
Part1では
- スネークのbody作成
- スネークの動きを作成
- スネークのコントロール
を行います。
body作成は初期位置を設定するだけでいいのですが、動きを作成する際には各bodyに対してdelayをかけて滑らかに動くようtracer()を使用。
コントロールする際には、スネークのbodyを前から動かすプログラミングにすると、スネークの頭が曲がった際に、1つ後ろのbodyが追従できなくなってしまいます。
そこでスネークの尻尾から頭にかけてbodyの位置を更新していきます。こうすることで頭が曲がった際にもbodyがその曲がりに対応できるようになります。このスネークゲームのミソはここにあると思います。
またTurtleには頭がどちらを向いているか取得するメソッドがあるので、現在向いている方向から真反対に方向転換できないように実装することが簡単にできます。
コメント