스티브코딩

배열과 리스트

여러 값을 한 변수에 담는 배열, 0번째부터 꺼내기, 각 값 반복·랜덤 소환

개념2026-10-20 갱신

한눈에 보기

  • 무엇: 여러 값을 변수 하나에 담는 배열(리스트). 위치 번호로 꺼내고, 잘라내고, 길이를 셈
  • 누구: 변수·반복을 써 본 초등 고학년~중학생 (초급)
  • 몇 분: 배열 기초 1차시 + 활동(동물 낙하 실험 또는 복불복 소환게임) 1~2차시 (제안)
  • 결과물: 색깔 블록 5개 줄 세우기 → 동물을 한꺼번에 떨어뜨리는 실험 → 무작위로 몬스터가 떨어지는 게임
  • 영상은 2017~2019년 Code Connection 화면입니다. 지금은 게임 안에서 C키로 코드작성기를 엽니다(코드작성기 열기 참고). 블록 이름도 버전마다 조금씩 다릅니다
메이크코드 #61 배열 튜토리얼
메이크코드 #61 배열 튜토리얼

배열이란: 여러 값을 변수 하나에

  • 변수는 값을 하나만, 배열은 여러 값을 한 변수에 순서대로 저장
  • 블록 위치: 고급 → 배열. 숫자 배열과 문자(텍스트) 배열 두 가지
  • 숫자 배열 칸에 블록·몹 값을 넣어도 됨(블록·몹 값도 정수). ⊕로 칸을 늘리고 ⊖로 줄임
  • 예: 채팅 명령 1 → 리스트에 [파란색, 주황색, 빨간색, 흰색, 검은색] 블록 5개 저장
  • 개념 팍팍: 배열은 많은 자료를 다룰 때 유용!
① 블록 5개를 담은 배열을 ‘리스트’에 저장 (02:04)
① 블록 5개를 담은 배열을 ‘리스트’에 저장 (02:04)

값 꺼내기: 위치 번호는 0부터

  • 블록 놓기에 리스트를 그대로 넣으면 오류 → 값이 5개라 어느 것을 놓을지 모름
  • 리스트에서 (0)번째 위치의 값 블록으로 위치를 정해 줌
  • 컴퓨터는 0부터 셈: 첫 번째 값 = 0번째
위치 번호 0 1 2 3 4
값 파란색 주황색 빨간색 흰색 검은색
- 배열을 저장한 변수와 꺼내는 블록의 변수 이름(`리스트`)이 같아야 함
① 변수를 그대로 넣으면 오류 (02:35)
① 변수를 그대로 넣으면 오류 (02:35)
② ‘리스트에서 0번째 위치의 값’으로 위치 정하기 (03:04)
② ‘리스트에서 0번째 위치의 값’으로 위치 정하기 (03:04)
③ 0번째 값인 파란색 블록이 놓임 (03:36)
③ 0번째 값인 파란색 블록이 놓임 (03:36)

마지막 값 잘라내기와 리스트 길이

  • 리스트에서 마지막 번째 위치의 값 잘라내기: 마지막 값을 꺼내면서 배열에서 지움 → 길이가 1 줄어듦
  • 같은 블록을 5번 이어 쓰면 검은색 → 흰색 → 빨간색 → 주황색 → 파란색 순서로 놓임
  • 리스트의 길이: 값의 개수. 잘라내기 전 5, 다섯 번 잘라낸 뒤 0 (채팅창에 말하기로 확인)
채팅 명령 "1"
  리스트 에 [파란색, 주황색, 빨간색, 흰색, 검은색] 저장
  (리스트에서 마지막 번째 위치의 값 잘라내기) 를 ~5 ~0 ~0 에 놓기
  (리스트에서 마지막 번째 위치의 값 잘라내기) 를 ~4 ~0 ~0 에 놓기
  … ~3, ~2, ~1 까지 같은 블록 반복
  채팅창에 말하기: (리스트의 길이)
① 마지막 값 잘라내기를 두 번 (05:33)
① 마지막 값 잘라내기를 두 번 (05:33)
② 검은색 다음 흰색이 놓임 (05:52)
② 검은색 다음 흰색이 놓임 (05:52)
③ 다섯 개가 줄지어 놓이고, 잘라내기 전 길이 5 (08:09)
③ 다섯 개가 줄지어 놓이고, 잘라내기 전 길이 5 (08:09)

배열 탭의 주요 블록

하는 일 2018~2019 영상의 블록 2017 영상의 블록
배열 만들기 리스트 에 [ … ] 저장 다음 값을 저장시켜 배열 만들기
n번째 값 꺼내기 리스트에서 (0)번째 위치의 값 list 배열의 (0)번째 위치에 있는 값
마지막 값 꺼내고 지우기 리스트에서 마지막 번째 위치의 값 잘라내기 다음 배열의 마지막 값 가져옴(잘라내기)
값의 개수 리스트의 길이 배열의 길이(크기)
모든 값으로 반복 반복(foreach): (변수) 값을 (리스트)의 각 값으로 바꿔가며 —
- 그 밖에(2017 화면): n번째 값 변경, 마지막에 값 추가, 첫 번째 값 가져옴(잘라내기), n번째 위치에 값 삽입, n번째 위치 데이터 삭제, 값이 처음 나타난 위치 - 지금 코드작성기에서는 블록 이름이 조금 다를 수 있음 → 배열 탭에서 모양이 같은 블록을 찾아 쓰면 됨
2017 영상의 배열 탭 블록 목록 (05:07)
2017 영상의 배열 탭 블록 목록 (05:07)

활동 1: 동물 낙하 실험 — 각 값으로 바꿔가며 반복

  • 학습 문제: 높은 곳에서 떨어져도 살아남는 동물은?
  1. **채팅 명령 1 + 변수 ****높이**: 명령과 함께 숫자를 입력받음 (예: 1 20)
  2. 배열: 리스트에 닭부터 물고기까지 동물 저장(몬스터·나는 동물 제외)
  3. 반복(foreach): 소환동물 값을 리스트의 각 값으로 바꿔가며 → 0번째, 1번째… 차례로 변수에 들어감
  4. 소환: 소환동물 을 ~10 ~높이 ~0 에 → 모든 동물이 한꺼번에 떨어짐
  • 동물마다 소환 블록을 하나씩 붙이지 않아도 됨 → 동물을 바꾸려면 배열만 고치면 됨
① 고급 → 배열, 동물을 담은 리스트 (01:28)
① 고급 → 배열, 동물을 담은 리스트 (01:28)
② 배열의 값으로 바꿔 가며 반복 (02:42)
② 배열의 값으로 바꿔 가며 반복 (02:42)
③ 소환동물 변수를 넣은 소환 블록 (04:13)
③ 소환동물 변수를 넣은 소환 블록 (04:13)

동물 낙하 실험: 정리 명령과 결과

채팅 명령 "2"
  다음 치트키 실행: "kill @e"
채팅 명령 "3" (높이)
  소환 오셀롯 을 ~10 ~높이 ~0 에
  • 2로 떨어진 동물을 정리한 뒤 높이를 바꿔 다시 실험 (영상: 1 20, 1 10, 1 25, 1 30 … 5씩 올려 70 무렵까지)
  • 높이 20부터 죽는 동물이 생기고, 높아질수록 말·노새·라마 등은 살기도 죽기도 함
  • 오셀롯은 계속 살아남음 → 3으로 오셀롯만 100·120·150·300 높이에서 실험(자막 기준) → 결론: 오셀롯
  • 수업: 먼저 살아남을 동물을 예상해 적고, 높이별 생존 동물을 표로 기록 (제안)
① 높이 20에서 떨어진 뒤 (05:40)
① 높이 20에서 떨어진 뒤 (05:40)
② 높이 45: 말·노새·라마가 남음 (07:38)
② 높이 45: 말·노새·라마가 남음 (07:38)
③ 채팅 기록: 1 높이 → 2 정리를 되풀이 (08:51)
③ 채팅 기록: 1 높이 → 2 정리를 되풀이 (08:51)
④ 정리 명령 2(kill @e)와 오셀롯 실험 명령 3 (09:25)
④ 정리 명령 2(kill @e)와 오셀롯 실험 명령 3 (09:25)

활동 2: 복불복 소환게임 — 배열에서 무작위로 꺼내기

  • 채팅에 시작 → 밤이 되고 머리 위에서 몬스터·동물이 무작위로 떨어짐 → 살아남기
채팅 명령 "시작"
  난이도 설정: 쉬움        (평화로움이면 좀비가 안 나옴)
  시간 설정: 밤            (좀비는 밤에 나옴)
  게임 모드 변경: 서바이벌 → 모든 플레이어(@a)
  소환선택번호 에 0 저장
  소환할 것 에 [좀비 피그맨, 스켈레톤, 좀비, 거미, 닭] 저장
  반복 5 회
    일시 중지(ms) 5000
    소환선택번호 에 랜덤 선택(정수) 0 ~ 4 저장
    소환 (소환할 것 배열의 소환선택번호 번째 위치에 있는 값) 을 ~0 ~10 ~0 에
  • 값이 5개 → 위치는 0~4 → 랜덤 범위도 0부터 4까지. 4가 뽑히면 다섯 번째 값(닭)
  • 숫자가 아닌 값을 넣는 배열 블록 사용, ⊕로 칸을 늘려 다른 몬스터 추가 (다듬은 코드 화면 10:11에서는 네 번째 칸이 크리퍼 알(초록 바탕에 검은 점)로 바뀌어 있음)
① ‘시작’ 입력 → 밤, 서바이벌로 바뀜 (01:32)
① ‘시작’ 입력 → 밤, 서바이벌로 바뀜 (01:32)
② 소환 후보 고르기: 좀비 피그맨 (05:53)
② 소환 후보 고르기: 좀비 피그맨 (05:53)
③ 다듬은 전체 코드 (10:11)
③ 다듬은 전체 코드 (10:11)

복불복 코드 다듬기: 함수와 반복 횟수

  • 처음 코드: 시작에서 반복 4회 { 함수 호출 소환명령 }, 함수 소환명령 안에서 반복 5회 { 5초 쉬고 랜덤 소환 } → 모두 20번 소환
  • 함수 호출 = 함수 안의 명령들을 그 자리에 불러오는 것. 함수 없이 명령을 바로 넣어도 됨
  • 20번은 너무 많아서 바깥 반복을 빼고, 함수 안의 명령을 시작에 바로 넣어 5번만 소환
  • 처음 코드 끝에는 채팅창에 말하기 “당신이 이겼습니다. 축하합니다.”가 있었음
  • 확장: 몬스터를 더 넣으면 랜덤 범위도 함께 늘리기 → 디버깅 과제로 (제안)
처음 코드: 반복 4회 × 함수 안 반복 5회 (07:48)
처음 코드: 반복 4회 × 함수 안 반복 5회 (07:48)

수업 팁

  • 예상 → 실행: 위치 번호를 바꾸기 전에 어떤 색이 놓일지 먼저 말하게 하기 (제안)
  • 0부터 세기가 가장 흔한 실수: 값이 N개면 위치는 0N−1. 랜덤 범위를 15로 하면 첫 값(0번째)은 안 나오고, 없는 위치(5)를 꺼내려 함
  • 잘라내기는 배열을 바꿈: 실행할 때마다 길이가 줄어드는 것을 ‘리스트의 길이’로 기록 (제안)
  • 변수 이름 맞추기: 배열을 저장한 변수와 꺼내는 블록의 변수가 다르면 다른 배열을 읽음
  • 몹 소환 실습은 난이도 쉬움 이상(평화로움이면 몬스터가 안 나옴)
  • 변수는 한 칸짜리 상자, 배열은 번호 붙은 칸이 여러 개인 상자로 비유

관련 영상

관련 공식 자료

함께 보기

출처

  • 유튜브 「여러 개의 자료를 한번에 저장하는 방법! / 마인크래프트 메이크코드 #61 배열 튜토리얼」(2018-12-16)
  • 유튜브 「높은 곳에서 떨어져도 살아남는 동물은? / 메이크코드 #67 동물 낙하 실험」(2019-02-10)
  • 유튜브 「마인크래프트 에듀케이션 에디션 메이크코드 #28 복불복 소환게임」(2017-12-10)