반응형
공(Ball) 클래스를 정의하고, 공을 움직이는 코드를 작성합니다.
공(Ball) 클래스는 색상(color), 크기(size) 속성이 있으며, 공을 움직이는 move() 메소드가 있습니다.
공의 개수는 N=40으로 정의하였으며, 공을 움직이는 속도는 main 루프에서 time.sleep() 함수를 이용해서 조정합니다.
from tkinter import *
import random
import time
win = Tk()
canvas=Canvas(win, width=400,height=400)
canvas.pack()
class Ball():
# 생성자
def __init__(self, color, size):
self.id=canvas.create_oval(0, 0, size, size,fill=color)
self.dx=random.randint(1,10)
self.dy=random.randint(1,10)
def move(self):
canvas.move(self.id,self.dx,self.dy)
x0, y0, x1, y1 = canvas.coords(self.id)
# 위쪽, 아래쪽 범위
if y1 > canvas.winfo_height() or y0 < 0:
self.dy = -self.dy
# 왼쪽, 오른쪽 범위
if x1 > canvas.winfo_width() or x0 < 0:
self.dx = -self.dx
colors = ["red", "green", "blue", "greenyellow", "magenta", "aqua", "pink","yellow","black", "white"]
ballList = []
N = 40 #볼 개수
for i in range(N):
ballList.append(Ball(random.choice(colors), random.randint(1, 60)))
while True:
for i in range(N):
ballList[i].move()
win.update()
time.sleep(0.1)
win.mainloop()
반응형
'Python' 카테고리의 다른 글
(파이썬) Label 위젯: 이미지 출력하기 (88) | 2023.12.13 |
---|---|
(파이썬) 난수 생성하기, 로또복권 자동 번호 생성에 사용됩니다 (25) | 2023.12.12 |
(파이썬) zip(), dict(): 두 개의 리스트(list)를 딕셔너리(dictionary)로 만들기 (0) | 2023.10.24 |
(파이썬) 가위바위보 게임: 컴퓨터와 사용자 입력 (0) | 2023.10.22 |
(파이썬) 엑셀 파일 읽어오기 pandas DataFrame (0) | 2023.10.18 |