Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

コンピュータ演習A 24 : d11(6/24) Python-V(chap 7), 究極のchunking=class

Last updated at Posted at 2023-06-19

リンク

復習

  • 相互評価の観点check
  • Mikatype試験の予行演習(どこ?ハンカチ)

学ぶ項目

今日は「跳ね回るたまたま」を作っていきます.何か大きなものを作るのも,小さなステップの積み重ねです.小さな動く枠組みから初めて,徐々に細かい動作を付け足していく,ゲームやアニメを作るのとよく似た作業です.アーティストになったつもりで,一歩先の動作を思い描きながら,コードを少しずつ改良していってください.

  • 動作がおかしい時は,その前の段階からいじったコードに間違いがあります.
  • その該当するテキスト(教科書)をじっくり読み込むようにしてください.
  • 作業を一つ飛ばしたり,1行飛ばしたり,一文字違ったり.
  • 出力されたエラーを読んでください.
  • まずはエラー行と単語をチェックしてください.

これだけでもコーディング効率は格段に上がります.

課題

提出物

完成版(bouncing_balls.py)をLUNAに提出しなさい.

python code

  1. Lesson7-2を参照して,tkinterで日の丸を作りなさい.
  2. Lesson7-3を参照して,クリックに反応させなさい.
  3. Lesson7-4を参照して,うごく球を作りなさい.
  4. Lesson7-5, 7-6を参照して,跳ねる球を作りなさい.
  5. Lesson7-7を参照して,たくさんの跳ねる球を作りなさい.

Lesson7-7の注意

p.209-10(example07-07-01.py)までできれば一度完成です.修正は一度に頭からするのではなく,細かくステップを切って修正してください.私は,次の項目を一行ずつ変更して行きます.

  1. line:4のballsの一つ目だけを追加.
  2. line:10 globalにballsを追加
  3. line:11 for b in balls:にする
  4. line:12-31インデントを追加
  5. dx,dyをb["dx"], b["dy"]に変更
  6. x, y をb["x"], b["y"]に変更
  7. line:21のfill = 'red'をfill=b["color"]に変更

上手くいったら,ballsを付け足して全ての動作を確認

img

オプション課題

balls:クラスで作るたま

Lesson7-8, 9は任意ですが,プログラミングの最新のコツです.class化できるとコードが読みやすくなります.要はチャンキングですが,じっくり読んでみてください.

./d11_bouncing_balls/bouncing_ball_v5_class.py
 1  import tkinter as tk
 2  from tkinter.constants import MOVETO
 3  
 4  
 5  class Ball:
 6      def __init__(self, x, y, dx, dy, color):
 7          self.x = x
 8          self.y = y
 9          self.dx = dx
10          self.dy = dy
11          self.color = color
12          self.mae = None
13  
14      def move(self, canvas):
15          #    global x, y, dx, dy
16          if self.mae is not None:
17              canvas.delete(self.mae)
18  
19          self.x = self.x+self.dx
20          self.y = self.y+self.dy
21          self.mae = canvas.create_oval(self.x-20, self.y-20, self.x +
22                             20, self.y+20, fill=self.color, width=0)
23          if self.x >= canvas.winfo_width():
24              self.dx = -1
25          if self.x <= 0:
26              self.dx = 1
27          if self.y >= canvas.winfo_height():
28              self.dy = -1
29          if self.y <= 0:
30              self.dy = 1
31  
32  b = Ball(400, 300, 1, 1, "red")
33  
34  def loop():
35      b.move(canvas)
36      root.after(10, loop)
37  
38  
39  root = tk.Tk()
40  root.geometry("600x400")
41  
42  canvas = tk.Canvas(root, width=600, height=400, bg="white")
43  canvas.place(x=0, y=0)
44  
45  # canvas.bind("<Button-1>", click)
46  root.after(10, loop)
47  root.mainloop()

さらに発展 たまたま^8

さらなる発展です.ここまで来ると芸術だ!?


  • source ~/Desktop/lecture_24s/comp_a24/d7_11_python/d11_bouncing_balls.org
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?