스티브코딩

에이전트 알고리즘·게임

길 따라가기·미로 탈출·랜덤 그림·구구단 게임을 에이전트로 만들기

활동2026-10-19 갱신

한눈에 보기

  • 무엇: 에이전트가 스스로 판단해 길을 따라가고 미로를 빠져나오게 하고, 랜덤으로 그림을 그리고, 인벤토리를 캔버스·공책으로 쓰고, 에이전트로 게임을 만들기
  • 누구: 에이전트 기본 명령과 반복을 익히고 조건문·변수를 배우는 초등 고학년~중학생
  • 몇 분: 활동 하나가 1차시 안팎(게임 만들기는 2차시)
  • 배우는 개념: 블록 탐지와 조건문, 알고리즘(오른손 법칙), 랜덤, 인덱스와 슬롯 번호, 나머지 연산, 변수와 문자열 연결
  • 기초 명령은 ‘에이전트 실습’ 페이지
메이크코드 #36 미로 탈출
메이크코드 #36 미로 탈출

길 따라가기: 탐지하고 다시 실행하기

  • 스크래치 수업의 햄스터 로봇처럼, 블록으로 만든 길을 에이전트가 스스로 판단하며 따라감. 채팅 명령 시작, 끝나면 ‘이동 종료’
  • 앞 → 뒤 → 왼쪽 → 오른쪽 차례로 블록 탐지. 블록이 있는 쪽으로 1칸 가고 **‘다음 채팅명령어를 실행: 시작’**으로 자기 자신을 다시 실행
  • 장애물을 파괴하기 참이라 에이전트가 길 블록을 부수며 지나감. 네 방향 모두 없으면 길 끝
다음 채팅명령어를 입력하면: "시작"
  에이전트가 장애물을 파괴하기 참(true)
  만약 에이전트가 블록 탐지: 블록 방향 앞으로 → 앞으로 1, 다음 채팅명령어를 실행 "시작"
  아니면서 만약 … 뒤로 → 뒤로 1, "시작" 실행
  아니면서 만약 … 왼쪽 → 왼쪽 1, "시작" 실행
  아니면서 만약 … 오른쪽 → 오른쪽 1, "시작" 실행
  아니면 → 채팅창에 말하기 "이동 종료"
  • 반복문으로 바꿔 만들어 보고 두 방법 비교. 레드스톤을 감지해 따라가는 ‘자율 주행 에이전트’(숏츠)는 신호가 끊기지 않게 중간중간 레드스톤 횃불
① 목재 길을 따라가는 에이전트 (01:38)
① 목재 길을 따라가는 에이전트 (01:38)
② 네 방향 블록 탐지 + 자기 자신 다시 실행 (02:12)
② 네 방향 블록 탐지 + 자기 자신 다시 실행 (02:12)

미로 탈출: 오른손 법칙

  • 이야기 도입: 미궁의 미노타우로스와 테세우스, 아리아드네의 실. 에이전트를 테세우스로
  • 오른손 법칙: 오른쪽 벽만 짚고 따라가면 결국 나감
  • 주변이 막혔는지에 따라 8가지 경우 → 행동은 3가지로 정리
  1. 오른쪽이 뚫림 → 오른쪽 회전, 앞으로 1
  2. 오른쪽은 막히고 앞이 뚫림 → 앞으로 1
  3. 나머지 → 왼쪽 회전
다음 채팅명령어를 입력하면: "미로"
  반복 1000회
    만약 반대로(not) 에이전트가 블록 탐지: 블록 방향 오른쪽 → 회전 오른쪽, 앞으로 1
    아니면서 만약 (오른쪽 탐지) 그리고(and) 반대로(not)(앞쪽 탐지) → 앞으로 1
    아니면 → 회전 왼쪽
① 위에서 본 미로 (03:04)
① 위에서 본 미로 (03:04)
② 오른손 법칙 코드: 반복 1000회 (04:48)
② 오른손 법칙 코드: 반복 1000회 (04:48)

추상화 그리기: 랜덤으로 움직이기

  • 준비: 인벤토리 1~5번 슬롯에 색 블록. 이동한 곳에 블록 놓기 참 + 장애물을 파괴하기 참
  • 랜덤블록(#34): 30번 반복 { 랜덤 15 슬롯 활성화 → 앞으로 랜덤 −55칸 → 왼쪽 회전 }. 회전이 없으면 한 줄만 그려짐
  • 시작(무따기 15장): 100번 반복 { item에 랜덤 17 저장 → 랜덤 15 슬롯 활성화 → item=1 왼쪽 회전 / item=2 오른쪽 회전 / 나머지 앞으로 1 }
  • 바꿔 보기: 이동을 3칸으로(넓게), 슬롯 범위 줄이기(색 단순), 오른쪽 회전 대신 위로 이동(입체)
① 랜덤블록: 슬롯·거리 모두 랜덤 (01:44)
① 랜덤블록: 슬롯·거리 모두 랜덤 (01:44)
② 시작: 랜덤 1–7로 행동 고르기 (02:48)
② 시작: 랜덤 1–7로 행동 고르기 (02:48)
③ 위로 이동을 넣어 그린 입체 추상화 (05:28)
③ 위로 이동을 넣어 그린 입체 추상화 (05:28)

인벤토리로 그림 그리기

  • 에이전트 인벤토리 3줄(27칸)에 블록으로 그림을 그리면 그대로 바닥에 블록 그림이 생김(영상: 금 블록·청금석 블록)
  • 색 콘크리트·양털은 대표 블록(흰색) 하나로 인식 → 광석 블록·목재처럼 종류가 하나인 블록을 씀. 빈 슬롯이 있으면 멈춤
  • 줄마다 반복 하나: index 0~8(9번). 슬롯 번호는 1부터, index는 0부터 → 1 + index
반복(for): index 값을 0 부터 8 까지 1씩 증가시키며
  블록 채우기: 에이전트가 슬롯 (1 + index) 에서 물건의 이름을 가져오기
    시작 ~(1 + index) ~0 ~1   끝 ~(1 + index) ~0 ~1   교체하기
(둘째 줄: 슬롯 10 + index, z ~2 / 셋째 줄: 슬롯 19 + index, z ~3)
  • 플레이어 기준 상대 좌표라 실행 중에는 움직이지 않기
① 인벤토리에 그린 그림 (01:47)
① 인벤토리에 그린 그림 (01:47)
② 세 줄 반복: 슬롯 1·10·19 + index, z 1·2·3 (07:10)
② 세 줄 반복: 슬롯 1·10·19 + index, z 1·2·3 (07:10)
③ 바닥에 옮겨진 블록 그림 (02:12)
③ 바닥에 옮겨진 블록 그림 (02:12)

인벤토리를 공책으로: 배수 검사

  • 슬롯마다 아이템 개수로 수를 적음(예: 3, 6, 9, 12, 15) → 1 3처럼 입력하면 3의 배수인지 슬롯마다 알려 줌
  • 원리: 나눈 나머지가 0이면 배수. 계산의 ‘~를 ~로 나눈 나머지(mod)’ + 논리의 비교(=)
다음 채팅명령어를 입력하면: "1" 나누는 수
  반복(for): index 값을 0 부터 4 까지
    만약 (에이전트가 슬롯 (index + 1) 에서 블록의 갯수를 가져오기) 을 나누는 수 로 나눈 나머지 = 0 이면
      채팅창에 말하기: 연결(개수, "는 ", 나누는 수, "의 배수가 맞습니다…")
    아니면
      채팅창에 말하기: 연결(개수, "는 ", 나누는 수, "의 배수가 아닙니다…")
  • 처음엔 ‘○번째는’으로 말하다가 슬롯 개수 블록으로 바꿔 “7은 3의 배수가 아닙니다”처럼 더 정확하게
① 나머지가 0인지 검사하는 코드 (08:16)
① 나머지가 0인지 검사하는 코드 (08:16)
② 1 3 입력 결과: 7은 3의 배수가 아닙니다 (09:26)
② 1 3 입력 결과: 7은 3의 배수가 아닙니다 (09:26)

에이전트야 달려라: 구구단 달리기 게임

  • 게임판: 카펫 트랙, 결승점에 감압판 → 레드스톤 → 레드스톤 램프(도착하면 불이 켜짐)
  • 변수 3개: 수1, 수2, 입력값. 시작 → 수1·수2에 랜덤 1~9 저장, 채팅창에 ‘수1 곱하기 수2’
  • 답 입력값 → 만약 수1 × 수2 = 입력값: “정답입니다.”, 앞으로 / 아니면 “틀렸습니다.”, 뒤로 → 두 경우 모두 ‘다음 채팅명령어를 실행: 시작’으로 바로 다음 문제
  • 플레이: 시작 → 답 12처럼 입력
  • 변형: 이동 거리를 1 대신 입력값(답만큼 이동), 랜덤 범위를 1~19로(19단까지)
① 카펫 트랙과 출발선의 에이전트 (07:14)
① 카펫 트랙과 출발선의 에이전트 (07:14)
② 시작·답 코드(이동 거리 = 입력값) (08:45)
② 시작·답 코드(이동 거리 = 입력값) (08:45)
③ 결승점에 도착해 램프가 켜짐 (10:28)
③ 결승점에 도착해 램프가 켜짐 (10:28)

여럿이 구구달리기

  • 선생님 여러 명이 함께 한 ‘에이전트 구구달리기’: 문제를 맞히면 앞으로, 틀리면 뒤로
  • 가는 길에 장애물이 생겼다 없어지기를 반복 → 맞혀도 못 갈 수 있어 순발력도 필요
  • 문제는 랜덤, 답은 채팅으로 입력(타이핑 속도도 중요). 라운드마다 순위
  • 게임 코드는 영상에 나오지 않음. 위 ‘달려라’ 코드에 장애물을 더해 만들어 보기(제안)
출발선에 늘어선 에이전트와 트랙 (00:26)
출발선에 늘어선 에이전트와 트랙 (00:26)

에이전트 전투 게임 만들기

  • 플레이어 대신 에이전트가 몬스터와 싸우는 게임(라이브 방송에서 즉석 제작). 지형 높낮이가 있으면 조종이 어려워 원 모양 평지 경기장을 만듦
  • 아이템을 사용하면(on item used) 에이전트 동작(아이콘으로 보아 갑옷 네 부위): 투구 → 앞으로 1 / 흉갑 → 왼쪽 회전 / 레깅스 → 오른쪽 회전 / 부츠 → 오른쪽 회전 두 번(뒤로 돌기)
  • 검 → 앞·뒤·왼쪽·오른쪽 사방 공격, 다이아몬드 → 이동하며 공격
  • 0 → 에이전트를 플레이어에게 텔레포트, 1 → 몬스터를 반복 소환(월드 822 72 180). 몬스터는 공격성이 강한 좀비 피그맨, 시간은 밤
  • ‘게임 시작’ 입력 → 30초 제한 시간(일시 정지로 측정, 실제로는 조금 길어짐 → 타이머를 따로 분리)
아이템마다 에이전트 동작을 연결한 코드 (20:45)
아이템마다 에이전트 동작을 연결한 코드 (20:45)

수업 팁

  • 길 따라가기·미로는 학생이 길과 미로를 직접 만들고 서로 바꿔 시험하면 재미있음
  • 미로 코드는 경우의 수를 먼저 종이에 그려 3가지 행동으로 줄이는 과정이 핵심(알고리즘)
  • 인벤토리 활동은 빈 슬롯과 슬롯 번호(1부터) vs index(0부터) 차이에서 가장 많이 막힘
  • 구구단 게임은 수학 시간과 연결. 답만큼 이동하는 변형은 큰 수일수록 위험해 전략이 생김
  • 더 해 보기(숏츠): 팬케이크 정렬을 에이전트로(코드 공개), 벽과 오르막을 따라 올라가는 에이전트

관련 영상

관련 공식 자료

함께 보기

출처

  • 유튜브 「마인크래프트 메이크코드 #49 에이전트
  • 유튜브 「마인크래프트 메이크코드 #36 미로통과하기」(2018-02-11)
  • 유튜브 「마인크래프트 메이크코드 #34 추상화그리기」(2018-02-03)
  • 유튜브 「[마크게임제작무따기] 15장. 에이전트로 추상화 그리기」(2018-07-12)
  • 유튜브 「에이전트 인벤토리를 캔버스로 활용! / 메이크코드 #71 인벤토리로 그림그리기」(2019-03-17)
  • 유튜브 「에이전트 인벤토리를 공책으로 쓰자. / 메이크코드 #73 구구단 쓰기」(2019-03-31)
  • 유튜브 「[마크게임제작무따기] 13장. 에이전트야 달려라 달려」(2018-07-12)
  • 유튜브 「장애물을 넘어 곱셈을 연습하자! 에이전트 구구달리기! #마크게임제작실험실」(2019-12-15)
  • 유튜브 「에이전트를 이용한 게임을 만들어 보자. / 스티브 코딩 라이브 스트리밍 두 번째!」(2019-07-13)
  • 유튜브 「레드스톤을 감지해서 에이전트가 따라갑니다! #마인크래프트에듀프로젝트40」(2024-08-18)
  • 유튜브 「에이전트가 지형을 따라 이동합니다. #마인크래프트에듀프로젝트40」(2024-08-17)
  • 유튜브 「에이전트로 구현하는 팬케이크 정렬」(2025-01-31)