以下のサイトを参考に、ブロック崩しをつくってみました。
実装したコード
https://colab.research.google.com/drive/121zEIUefQGPKWIW3Owhf5onQ6Y4527IA?usp=sharing
今回の難所
1
ball_x = 50; ball_y = 500; bx = 5; by = -5
内容:ボールの座標(動く前と後)
なぜ難所:本来改行して4行で書くところを「;」でつなげることで、1行で収まることを初めて知った。
活用:
a = 1;b = 2;c=3
print(a+b+c)
>>>6
30
global ball_x, ball_y, bx, by
内容:ballの座標(動く前と後)を入れた変数をグローバル宣言
なぜ難所:global変数という概念を知らなかった
活用:
a = 1
def calc(x):
a = 10
print(a)
calc(10)
print(a)
の時、
print(a)の出力結果を、10としたい。
a = 1
def calc(x):
global a
a = 10
print(a)
calc(10)
print(a)
33行目
bx *= -1
内容:ボールのx座標を正負逆転させる
なぜ難所:プラスをマイナスに転換させるやり方を知らなかった
活用:
x = 10
x *= -1
print(x)
56行目
win.bind("<KeyPress-Right>", rightKeyPress)
内容:キーボードの→を押したら、変数rightKeyPressの処理を実行
なぜ難所:bindメソッドを知らなかった
活用:
近いうちに、以下のサイトのような、押したキーを出力するコードを実装予定。
https://denno-sekai.com/tkinter-bind/
72行目
block.append({"x":x*80+5,"y":y*40+10,'st':1})
内容:リストblockに辞書を加える
なぜ難所:辞書をリストに加えることをこれまでしてこなかった
活用:
l = []
d = {'name':'Paul','age':27}
l.append(d)
print(l)
77行目
x = block[i]["x"]
内容:リスト型変数blockのインデックスi番目のKeyが"X"である、Valueを変数Xに代入
なぜ難所:インデックスによるリストのスライスは知っていたが、辞書型のKeyを指定して、Valueを取得するスライスは知らなかった
活用:
l = []
d = {'name':'Paul','age':27}
l.append(d)
x = l[0]['name']
print(x)
>>>Paul
83行目
can.delete('all')
内容:変数canvasの中身のすべてを削除する(←うまく言語化できていない)
なぜ難所:言語化できていないことからご承知の通り
活用:
can.delete('drawBall')
>>>ボールだけが軌道を消すようになって、ほかのウィジェットは軌道が消えないで表示される。
まとめ
今回も多くのことを学んだ。ゲームとなると、表示のための細かいピクセル設定が必要で、それは本当に苦手だと感じた。おかげで、引数にサイズを指定しないといけないケースの多くは、お手本のコピペに頼った。簡単な計算だとはわかっているが、脳と手がぴたりと止まってしまう自分の数字アレルギーを発症させる事案となった。