FIT2第06回:オブジェクトとメソッド
前回授業の振り返り
リストとは?
複数の値を、順序を維持したまま1つの変数に格納するための手段
ゲームの「ボールを複数同時に扱う」際に前回は利用した
for文と組み合わせることで、要素を順番にすべて取り出すことができるのが味噌
リストの書き方
code:list.py
a.append(5) # append = 末尾追加
print(a0) # 1が出てくる => 1つ目の値を取り出したいときは a0 で0から数える 解説
https://gyazo.com/6339bd7d6c11bafeccc66a3711b45014
赤 … 1つめのボールの値
橙 … 2つめのボールの値
青 … 3つめのボールの値
紫 … 4つめのボールの値
https://gyazo.com/8c9d5145832cc33bfe6f59003058b8a9
len(xs) → xsというリストの要素数を返す (=4)
0以上4未満の数字、要は0~3 を返すので、ボールの個数だけ繰り返してくれる
前回の書き方のデメリット
例えば「ボールを削除する」処理を実装する場合
全ての関連配列から1つずつ削除していく必要がある
削除漏れが起こると→異なるボールのデータが混ざってしまう
これを解決するために今日は「オブジェクト」を教える
ballというオブジェクトを定義し、値をballのなかにまとめることを試みます
講義
いずれも見たほうがわかりやすいと思うので、前回授業の成果物をライブコーディングでオブジェクト化します
「パッと見てわかりにくい処理」はすべて関数に切り出してしまうのがおすすめ
code:if.py
if 195 <= ball.y and pad.x - 20 <= ball.x and ball.x <= pad.x + 20
if ball.did_hit(pad)
class Ball:
def did_hit(self, pad):
if 195 <= self.y and pad.left_edge() <= ball.x and ball.x <= pad.right_edge()
class Pad:
width = 40
def left_edge(self):
return self.x - Pad.width / 2
def right_edge(self):
return self.x + Pad.width / 2
演習と課題
11/22(日) 23:59期限
いつもどおり第06回授業に紐付けられている演習一式の提出
11/20(金) 23:59期限
第05回授業課題の「企画書の提出」
上記提出をもって、次回授業までに講師が企画内容にコメントをしていきます
技術的な実現可能性や方向性のアドバイスをする