배움터
  •  [ETRI와함께하는코딩 놀이터]먹이 먹으면 몸이 쑥쑥
  • 어린이동아 취재팀
  • 2017-05-30 21:58:26
  • 인쇄프린트
  • 글자 크기 키우기
  • 글자 크기 줄이기
  • 공유하기 공유하기
  • URL복사

뱀 먹이주기 게임 ②

《 소프트웨어(SW) 과목이 내년에는 중학교, 2019년에는 초등학교 필수 교육과정이 됩니다. 소프트웨어 수업에서는 ‘코딩’을 주로 배우지요. ‘ETRI(한국전자통신연구원) 지식이러닝연구그룹과 함께하는 코딩 놀이터’에서 게임을 만들어 보면서 코딩과 친해져 봅시다. ETRI는 정보, 통신, 전자, 방송 기술 등 ICT를 연구하는 국책기관이며, 지식이러닝연구그룹은 소프트웨어 교육, e-러닝 교육 시스템을 연구·개발하는 부서. 》

 

이번 시간에는 ‘뱀 먹이주기 게임’을 완성해보겠습니다.

 

 
 

게임이 시작될 때 상황부터 코딩하겠습니다. 이벤트 스크립트의 ‘깃발 클릭했을 때’ 블록을 가져옵니다. 뱀의 처음 위치를 정해보도록 하지요. 스크립트 화면의 가운데가 되도록 동작 스크립트의 ‘x: ㉠, y: ㉡로 이동하기’ 블록을 쌓고 ㉠과 ㉡에는 숫자 0을 적습니다.

 

이번 게임에서 중요한 변수와 리스트를 만들 차례. 코딩에서 변수는 특정한 값들을 저장하는 공간을, 리스트는 그 변수들의 집합체를 말합니다. 변수 2개 ‘득점’, ‘복제수’와 리스트 2개 ‘X_좌표리스트’, ‘Y_좌표리스트’를 만들어줍니다.

 

이제 복제수라는 변수의 리스트를 코딩해보겠습니다. 데이터 스크립트의 ‘모두 번째 항목을 X_좌표리스트에서 삭제하기’와 ‘모두 번째 항목을 Y_좌표리스트에서 삭제하기’ 블록을 만들어줍니다. 삭제하기 블록이 없으면 리스트에 값이 계속 추가되면서 게임이 제대로 진행되지 못하고 멈추게 된답니다.

 

그 아래에는 변수 블록을 이용해 게임의 초기 상황을 설정해보겠습니다. ‘득점을 ㉢으로 정하기’와 ‘복제수를 ㉣로 정하기’ 블록을 차례로 쌓고 ㉢과 ㉣에 숫자 0을 적습니다. 형태 스크립트의 ‘모양을 뱀_머리로 바꾸기’ 블록을 쌓아주면 필요한 초기값이 모두 설정되지요.

 

 
 

게임이 진행되는 동안 뱀이 끊임없이 움직이도록 제어 스크립트의 ‘무한 반복하기’ 블록을 가져옵니다. 아래에 동작 스크립트의 ‘㉠만큼 움직이기’ 블록을 넣어주세요. ㉠에는 숫자 10을 적습니다. 제어 스크립트의 ‘㉡초 기다리기’ 블록을 쌓고 ㉡에는 0.2를 적어줍시다. 뱀이 0.2초 간격을 두고 계속 이동하도록 말이지요.

 

①에서 만들어둔 복제수 리스트 블록을 또 활용할 차례입니다. ‘㉢을 ㉣번째 Y_좌표리스트에 넣기’ 블록을 만들고 ㉢에는 동작 스크립트의 ‘y좌표’ 블록을, ㉣에는 숫자 1을 넣습니다. 아래에도 ‘㉤을 ㉥번째 X_좌표리스트에 넣기’ 블록을 가져오고 ㉤에는 동작 스크립트의 ‘x좌표’ 블록을, ㉥에는 숫자 1을 넣습니다. 뱀이 움직이는 값을 리스트로 계속 기록하는 데 필요한 과정이지요.

또 제어 스크립트의 ‘만약 ㉦(이)라면’ 블록을 가져와 ㉦에는 관찰 스크립트의 ‘벽에 닿았는가?’ 블록을 넣습니다. 뱀이 벽에 부딪치게 되면 게임이 끝나도록 제어 스크립트의 ‘모두 멈추기’ 블록을 쌓아주면 됩니다.

 

 
 

뱀이 먹이를 먹었을 때 몸이 늘어나도록 만들어볼까요? 먼저 제어 스크립트의 ‘복제되었을 때’ 블록을 가져오고 아래에는 형태 스크립트의 ‘모양을 뱀_몸통으로 바꾸기’ 블록을 쌓습니다. 원래 뱀에서 몸이 늘어나게 해주는 것이지요. 아래에 형태 스크립트의 ‘보이기’ 블록을 가져오고 게임 점수가 올라가도록 해볼까요? 데이터 스크립트에서 ‘복제수를 ㉠만큼 바꾸기’ 블록을 쌓아줍니다. ㉠에는 연산 스크립트의 ‘㉡ + ㉢’ 블록을 넣으세요. ㉡에는 변수인 득점 블록을, ㉢에는 숫자 1을 넣습니다.

 

형태 스크립트에서 ‘복제수 번째로 물러나기’ 블록과 제어 스크립트의 ‘무한 반복하기’ 블록을 차례로 쌓습니다. ‘무한 반복하기’ 블록 안에 연산 스크립트인 ‘x: ㉣, y: ㉤으로 이동하기’ 블록을 넣으세요. ㉣과 ㉤ 모두에 데이터 스크립트의 ‘㉥ 번째 ㉦ 항목’을 넣어줍니다. ㉥에는 변수인 복제수 블록을, ㉦에는 왼쪽은 X_좌표리스트, 오른쪽은 Y_좌표리스트를 넣으세요.

 

 
 

마지막으로 게임이 진행되는 동안 뱀의 길이가 길어졌을 때, 뱀이 자기 자신과 부딪힐 경우 게임이 끝나도록 만들어보겠습니다. 제어 스크립트의 ‘복제되었을 때’ 블록을 가져옵니다. 역시 제어 스크립트의 ‘1초 기다리기’ 블록과 ‘무한 반복하기’, ‘만약 ㉠(이)라면’, ‘모두 멈추기’ 블록을 차례로 쌓아줍니다.

 

㉠에는 연산 스크립트의 ‘㉡ 그리고 ㉢’ 블록을 넣어주세요. 다음으로 ㉡과 ㉢에 각각 ‘㉣ = ㉤’ 블록을 쌓습니다. 그림과 같이 ㉣에 차례로 x좌표, y좌표를, ㉤에 ‘1번째 X_좌표리스트 항목’, ‘1번째 Y_좌표리스트 항목을 넣으면 됩니다. 뱀의 머리를 뜻하는 1번째 좌표리스트가 뱀의 몸 위치(x좌표, y좌표)와 같을 경우 게임이 종료되도록 하는 것이지요.

 

이제 키보드의 화살표 키를 이용해 뱀이 먹이를 먹고 몸이 길어지도록 게임을 해봅시다.

 

▶김민경 기자 min79@donga.com

자료=ETRI 지식이러닝연구그룹 김희권 선임기술원

 

 

어린이동아 취재팀 kids@donga.com

위 기사의 법적인 책임과 권한은 어린이동아에 있습니다.

< 저작권자 ⓒ 어린이동아, 무단 전재 및 재배포 금지 >

한국지역난방공사 권지단
  • 댓글쓰기
  • 로그인
    • 어동1
    • 어동2
    • 어동3
    • 어동4
    • 어솜1
    • 어솜2
    • 어솜3

※ 상업적인 댓글 및 도배성 댓글, 욕설이나 비방하는 댓글을 올릴 경우 임의 삭제 조치됩니다.

더보기

NIE 예시 답안
시사원정대
  • 단비교육