python
라이브러리 및 프레임워크 사용(turtle
,pygame
,tkinter
)
- 쓸만한 예제로 실습자료 만들자(turtle)
turtle
실습1
turtle
실습2
turtle
실습3
- 쓸만한 예제로 실습자료 만들자(pygame)
pygame
실습1
pygame
실습2
pygame
실습3
- 쓸만한 예제로 실습자료 만들자(tkinter)
tkinter
실습1
tkinter
실습2
tkinter
실습3
예제코드들이 각 주제당 3개가 있기 때문에 보고 취향에 맞는 것 골라서 참고하시면 될 것 같습니다.
우선 각 주제들의 첫번째 코드들만 같이 해석하도록 하겠습니다. (다 해석하면 날샙니다..)
import turtle
import math
import random
우선 여기서는 turtle을 쓰기에 turtle묘듈과 math, random묘듈을 가져옵니다.
wn = turtle.Screen()
wn.bgcolor('black')
Albert = turtle.Turtle()
Albert.speed(0)
Albert.color('white')
rotate=int(360)
turtle 클래스의 Screen을 "wn"이라 지정합니다.
(이렇게 하는 이유 : 이렇게 지정한 이후 turtle.Screen()이라고 쓸 것을 wn 한 단어로 쓸 수 있습니다.)
배경색을 검은색으로 지정 후 "Albert"라는 것을 turtle.Turtle로 지정합니다.(위 이유와 마친가지)
Albert를 정지로 해놓고(speed(0)) 색은 흰색으로 지정합니다.
def drawCircles(t,size):
for i in range(10):
t.circle(size)
size=size-4
def drawSpecial(t,size,repeat):
for i in range (repeat):
drawCircles(t,size)
t.right(360/repeat)
drawSpecial(Albert,100,10)
"drawCircles"와 "drawSpecial"함수를 만든 후 함수를 실행합니다.
"drawCircles"함수에서는 원의 크기를 점점 작게 "drawSpecial"함수에서는 "drawCircles"함수가 끝난후 오른쪽으로 얼만큼 회전할지를 지정하여 그립니다.
이후에는 Steve(노란색), Barry(파란색), Terry(주황색), Will(분홍색)을 Albert(하얀색)과 형식을 똑같이 맞춰주면 그림은 완성이 됩니다.
import pygame
pygame묘듈을 가져옵니다.
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
segment_width = 15
segment_height = 15
segment_margin = 3
x_change = segment_width + segment_margin
y_change = 0
전역변수로 BLACK와WHITE를 지정한 후 snake게임의 높이와 너비, 그리고 그 부분 사이의 여백을 지정합니다.
그후 snake의 x축으로의 변화와 y축으로의 변화(속도)를 지정합니다.
class Segment(pygame.sprite.Sprite):
def __init__(self, x, y):
super().__init__()
self.image = pygame.Surface([segment_width, segment_height])
self.image.fill(WHITE)
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
snake게임의 객체들의 일부분을 표현하는 Segment클래스로 객체의 이미지의 높이, 너비, 색, 그리고 객체의 사각형을 만든 후 x축, y축으로를 표현하고 있습니다.
그리고 Sprite의 개념을 이해해야 이 게임을 만들 수 있는데 다른 이미지와 합성하기 위해 사용하는 이미지나 애니메이션을 말합니다. “게임 화면 내에서 움직이는 물체”라고 생각해도 됩니다.
pygame.init()
screen = pygame.display.set_mode([800, 600])
pygame.display.set_caption('Snake Example')
allspriteslist = pygame.sprite.Group()
pygame을 시작하고 창너비 ,높이와 표시될 프로그램이름을 지정한후 pygame.sprite.Group()을 allspriteslist로 지정하고 있습니다.
이후에는 pygame.sprite.Group()의 메소드를 쓸 때 allspriteslist로 더 간편하게 쓸 수 있습니다.
snake_segments = []
for i in range(15):
x = 250 - (segment_width + segment_margin) * i
y = 30
segment = Segment(x, y)
snake_segments.append(segment)
allspriteslist.add(segment)
snake_segments라는 빈 배열을 만든 후 위에서 만든 클래스를 이용하여 만든 값들을 빈 배열과 스프라이트 그룹에 추가하여 snake게임의 초기상태를 만듭니다.
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x_change = (segment_width + segment_margin) * -1
y_change = 0
if event.key == pygame.K_RIGHT:
x_change = (segment_width + segment_margin)
y_change = 0
if event.key == pygame.K_UP:
x_change = 0
y_change = (segment_height + segment_margin) * -1
if event.key == pygame.K_DOWN:
x_change = 0
y_change = (segment_height + segment_margin)
키 누르는 것에 따라 x축으로의 그리고 y축으로의 변화가 어떻게 변하는지 설정합니다.
old_segment = snake_segments.pop()
allspriteslist.remove(old_segment)
x = snake_segments[0].rect.x + x_change
y = snake_segments[0].rect.y + y_change
segment = Segment(x, y)
snake_segments.insert(0, segment)
allspriteslist.add(segment)
마지막 요소를 배열과 스프라이트 그룹에서 제거합니다. 그리고 새로운 요소가 어디있을지 알아낸 뒤 배열과 스프라이트 그룹에 추가합니다.
screen.fill(BLACK)
allspriteslist.draw(screen)
pygame.display.flip()
clock.tick(5)
pygame.quit()
화면이 어두운색으로 바뀌고 스프라이트 그룹에 요소들을 다 보여준후 시간을 멈추고 pygame은 종료됩니다.
from tkinter import*
window=Tk()
sum=100
tkinter에서 묘듈 전체를 가져와주고 윈도우창을 생성한후 전역변수 sum을 생성합니다.
def pocess1():
global sum
sum=sum+float(e1.get())
l2=Label(window,text=sum)
l2.grid(row=0,column=2)
전역변수 sum을 가져와 입력한 값(e1)을 더하여 더한결과를 가로로 0 세로로 2인 곳에 표시합니다.
def process2():
global sum
sum=sum-float(e1.get())
l2=Label(window,text=sum)
l2.grid(row=0,column=2)
전역변수 sum을 가져와 입력한 값(e1)을 빼서 뺀 결과를 가로로 0 세로로 2인 곳에 표시합니다.
def process3():
global sum
sum=100
l2=Label(window,text=sum)
l2.grid(row=0,column=2)
전역변수 sum을 가져와 초기화(다시 100으로)한후 가로로 0 세로로 2인 곳에 표시합니다.
e1=Entry(window)
e1.grid(row=1,column=0,columnspan=3)
숫자를 입력할 곳을 만든 후 배치합니다.
b1=Button(window,text=”더하기(+)”,command=process1)
b2=Button(window,text=”빼기(-)”,command=process2)
b3=Button(window,text=”초기화”,command=process3)
b1.grid(row=2,column=0)
b2.grid(row=2,column=1)
b3.grid(row=2,column=2)
이전에 만든 함수들을 이용하여 더하기, 빼기, 초기화 버튼을 생성한 후 배치합니다.
window.mainloop()
tkinter가 계속 실행할 수 있도록 mainloop를 지정합니다. (지정안하면 꺼집니다.)