Coding for KidsCoding for Kids
창의적인 레벨도전 과제교사 가이드
기능 투표
고급 파이썬 개발 과정
챕터
>
레벨

고급 클래스
연산자 오버로딩

목표

벡터와 연산자 오버로딩을 사용하여 얼마나 많은 와인이 정제되는지 집계하십시오.

와인이 압착된 후에는 필터링과 정제가 필요합니다. 여러 개의 배럴에서 와인을 필터링하며, 이 모든 배럴을 플러시해야 합니다. 생성되는 와인의 양을 정확히 집계하여 배럴을 봉인하고 숙성할 수 있도록 하는 것이 중요합니다.

이를 위해 벡터를 생성하고 이들을 더해야 합니다. 벡터는 리스트와 유사하지만, 유연성은 떨어지지만 메모리 효율성은 더 높습니다. 벡터는 보통 좌표 처리를 위해 사용되며, 이 경우 여러 값을 저장할 수 있는 변수처럼 사용됩니다. 벡터를 더하는 작업은 연산자 오버로딩을 사용하여 클래스 객체에 연산자 기능을 확장함으로써 일반 값에 대해 연산자를 사용하는 것과 유사하게 수행됩니다.

우선, 방 상단에 위치한 금속 물통을 찾아 수집하세요. 이 물통들은 배럴에서 필터링 중인 와인을 플러시하는 데 사용됩니다. 수집 후, 붉은 카펫 위의 어두운 X 표시가 있는 곳으로 이동한 후 배럴을 향해 각각의 배럴에 있는 내용을 벡터화하기 시작하세요.

X 표시는 각 색상의 카펫마다 3개씩 배치되어 있습니다: 황금색 X, 밝은색 X, 그리고 어두운 X입니다. 모든 어두운 X와 밝은 X 표시에 대해 water() 함수를 사용하여 배럴을 플러시하세요. 또한, 모든 어두운 X와 밝은 X 표시에 대해 read() 함수를 사용하여 해당 배럴 열에서 처리 중인 와인의 양을 확인하세요. 황금색 X 표시에서는 write() 함수를 사용하여 각 벡터 집합의 총합을 기록합니다.

코드 에디터에는 vector라는 클래스가 있습니다. 이 클래스는 벡터를 생성할 수 있을 뿐만 아니라 서로 더할 수 있게 해줍니다. 예를 들어 red 카펫에서는 빨간 와인이 필터링되므로, 어두운 X와 밝은 X 표시에 의해 파악된 데이터를 저장할 vector 객체를 생성합니다:

# Create object using data from dark X mark red_wine_dark = vector(345, 272) # Create object using data from light X mark red_wine_light = vector(248, 432) # Add together vectors for totals red_wine_total = red_wine_dark + red_wine_light

벡터에서는 첫 번째 위치를 x라고 하고 두 번째 위치를 y라고 합니다. 공식은 object_name = vector(x,y)와 같이 작성됩니다. 이는 read() 함수를 통해 획득한 정보를 벡터에 채워 넣는데 사용됩니다.

황금색 X 표시에서는 write() 함수를 사용하여 각 벡터 집합의 총합을 기록합니다. 예를 들어, 빨간 카펫 X 표시의 경우 다음과 같이 작성됩니다:

await player.write( "There is a total of %s pounds on the left barrels and %s pounds on the right barrels" % (red_wine_total.x, red_wine_total.y)

총합의 각 값을 식별하기 위해 반드시 총량 뒤에 .x와 .y를 추가하는 것을 잊지 마세요.

각 색상의 카펫 집합마다 필터링되는 와인의 종류가 다릅니다. 앞서 언급한 red 카펫에서는 red_wine이 필터링되고, yellow 카펫에서는 sparkling_wine, green 카펫에서는 white_wine, 그리고 orange 카펫에서는 orange_wine이 필터링됩니다.

모든 어두운 X와 밝은 X 표시에 대해 water() 함수를 사용하여 플러시를 완료하고, 모든 황금색 X 표시에 총합이 기록되면 레벨을 완료하게 됩니다.

코드북