ぺーぱーの日々

上機嫌でいること、夢中でいることを目標に、今日も色んなことに手を出します。

MENU

以下のサイトを参考に、ブロック崩しをつくってみました。

Python(Bingoゲーム) | ジョイタスネット

 

実装したコード

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')

>>>ボールだけが軌道を消すようになって、ほかのウィジェットは軌道が消えないで表示される。

 

まとめ

今回も多くのことを学んだ。ゲームとなると、表示のための細かいピクセル設定が必要で、それは本当に苦手だと感じた。おかげで、引数にサイズを指定しないといけないケースの多くは、お手本のコピペに頼った。簡単な計算だとはわかっているが、脳と手がぴたりと止まってしまう自分の数字アレルギーを発症させる事案となった。