지금까지 만들었던 코드를 좀더 간결하고, 명확하게 표현하기 위해
클래스를 생성해보자.
지난 시간 최종 코드는 아래와 같다.
from turtle import Turtle, Screen
import time
color_list = ["yellow", "red", "blue"]
screen = Screen()
screen.setup(height=600, width=600)
screen.bgcolor("black")
screen.title("Snake Game")
# tracer 끄기
screen.tracer(0)
snakes = []
positions =[(0,0), (-20,0), (-40,0)]
for position in positions:
snake = Turtle(shape="square")
snake.color("white")
snake.penup()
snake.goto(position)
snakes.append(snake)
keep_going =True
while keep_going:
screen.update()
time.sleep(0.1)
# 위치 이동
for index in range(len(snakes)-1, 0, -1): #start=2,stop=1, step=-1
x = snakes[index-1].xcor()
y = snakes[index-1].ycor()
snakes[index].goto(x, y)
snakes[0].forward(20)
오늘 미션은 아래와 같다.
1. snake 클래스 선언하기
2. 생성자를 만들기
3. 메소드로는 스네이크 3개를 만드는 것, 스네이크를 이동시키는 것 두 개를 만들기
4. 상수의 변수명은 모두 대문자로 쓴다.
스스로 과제를 해결해보자!!!!
<최종코드>
1. main.py
from turtle import Turtle, Screen
from snake import Snake
import time
color_list = ["yellow", "red", "blue"]
screen = Screen()
screen.setup(height=600, width=600)
screen.bgcolor("black")
screen.title("Snake Game")
screen.tracer(0)
real_snake = Snake()
keep_going =True
while keep_going:
screen.update()
time.sleep(0.1)
real_snake.move_snake()
screen.exitonclick()
2. snake.py
from turtle import Turtle
POSITIONS = [(0, 0), (-20, 0), (-40, 0)]
MOVE_DISTANCE = 20
class Snake:
def __init__(self):
#Snake 클래스를 만들 때마다, 이닛함수에 있는 snakes와 create_snake가 만들어진다.
self.snakes = []
self.create_snake()
pass
def create_snake(self):
# 상수 이름은 모두 대문자로 쓴다.
for position in POSITIONS:
snake = Turtle(shape="square")
snake.color("white")
snake.penup()
snake.goto(position)
self.snakes.append(snake)
def move_snake(self):
for index in range(len(self.snakes)-1, 0, -1): #start=2,stop=1, step=-1
x = self.snakes[index-1].xcor()
y = self.snakes[index-1].ycor()
self.snakes[index].goto(x, y)
self.snakes[0].forward(MOVE_DISTANCE)