본문 바로가기

Python

파이썬 GUI, 넘파이 연습

반응형

 1. 움직이는  애니메이션 공 프로그램을 작성하시오.

'''
움직이는  애니메이션 공 프로그램을 작성하시오.
'''

from tkinter import*
import random
import time

window = Tk()

canvas = Canvas(window, width=600, height=400)
canvas.pack()

class Ball():
    def __init__(self, color, size):
        self.id = canvas.create_oval(0, 0, size, size, fill=color)
        self.dy = random.randint(1,10)
        self.dx = random.randint(1, 10)
        self.dz = random.randint(1, 10)

ball1 = Ball("red", 60)
ball2 = Ball("green", 100)
ball3 = Ball("blue", 80)

window.mainloop()

canvas.create_oval()     #캔버스 위에 타원을 그려주는 method

결과 : 아직 움직이지 않음.

 

 

2. 움직이는 메서드 추가 

'''
움직이는  애니메이션 공 프로그램을 작성하시오.
'''

from tkinter import*
import random
import time

window = Tk()

canvas = Canvas(window, width=600, height=400)
canvas.pack()

class Ball():
    def __init__(self, color, size):
        self.id = canvas.create_oval(0, 0, size, size, fill=color)
        self.dy = random.randint(1,10)
        self.dx = 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                   # dy의 부호를 반전시킴
        if x1 > canvas.winfo_width() or x0 < 0: #원이 왼쪽이나 오른쪽으로 벗어났으면
            self.dx = -self.dx                   # dx의 부호를 반전시킴

ball1 = Ball("red", 60)
ball2 = Ball("green", 100)
ball3 = Ball("blue", 80)

while True:
    ball1.move()
    ball2.move()
    ball3.move()
    window.update()
    time.sleep(0.05)

window.mainloop()

 

공이 움직임

 

3. 공 갯수 증가

 

'''
움직이는 애니메이션 공 30개를 만드는 프로그램을 작성하시오
리스트를 생성하고 리스트에 객체를 저장하시오.
'''



from tkinter import*
import random
import time

window = Tk()

canvas = Canvas(window, width=600, height=400)
canvas.pack()

class Ball():
    def __init__(self, color, size):
        self.id = canvas.create_oval(0, 0, size, size, fill=color)
        self.dy = random.randint(1,10)
        self.dx = 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                   # dy의 부호를 반전시킴
        if x1 > canvas.winfo_width() or x0 < 0: #원이 왼쪽이나 오른쪽으로 벗어났으면
            self.dx = -self.dx                   # dx의 부호를 반전시킴

colors = ["red", "orange", "yellow", "green", "blue", "violet", "indigo"]
ballList = []
for i in range(30):
    ballList.append(Ball(random.choice(colors),random.randint(1,60)))
while True:
    for i in range(30):
        ballList[i].move()
    window.update()
    time.sleep(0.5)
ball1 = Ball("red", 60)
ball2 = Ball("green", 100)
ball3 = Ball("blue", 80)

while True:
    ball1.move()
    ball2.move()
    ball3.move()
    window.update()
    time.sleep(0.05)

window.mainloop()

 

 

4. numpy 연습

import numpy as np

print(np.zeros(3)) # 0이 3개 들어있는 배열 생성
print(np.ones(3))

print(np.zeros((2,2)))     # 요소의 값이 모두 0인 2*2 배열생성

print(np.ones((3, 2)))     # 요소의 값이 모두 1인 3 * 2

a = np.array([-1, 3, 2, -6])
print(a,type(a))

b = np.array([3, 6, 1, 2])
print(b,type(b))

A = np.reshape(a, [2,2])
print(A)

B = np.reshape(b, [2,2])
print(B)
반응형

'Python' 카테고리의 다른 글

파이썬 pandas  (0) 2023.04.26
파이썬 넘파이 연습  (1) 2023.04.20
Python 클래스, 객체, GUI  (0) 2023.04.18
Python set, 객체 개념 정리  (4) 2023.04.12
파이썬 statistics 모듈 활용, set, 가위바위보 게임 프로그램  (1) 2023.04.11