이 페이지는 강의 외 추가 강의예요. II단원에서 배운 스택·큐를 게임의 메뉴 뒤로가기, 대사·이벤트 순서라는 구체적인 시스템으로 확장합니다. 각 주제마다 자료구조 복기 → 사용 API → 실제 구현 활용 순으로 짚어요.
1. 스택 — 메뉴 화면 히스토리
게임에서 타이틀 → 메인 → 설정처럼 들어갈 때마다 화면이 쌓이고, "뒤로"를 누르면 가장 최근 화면으로 돌아갑니다. 이게 스택(LIFO)이에요.
📌 복기: 스택
- 연산: push(맨 위에 넣기), pop(맨 위에서 꺼내기). 나중에 넣은 게 먼저 나옴 = LIFO.
- 메뉴 "들어가기" = push(현재 화면 이름), "뒤로" = pop 후 이전 화면 표시.
📌 사용하는 파이썬 API
리스트.append(값)- 맨 뒤에 넣기 → 스택의 push. 리스트의 "맨 뒤"를 스택의 "맨 위(top)"로 봅니다.
리스트.pop()- 괄호 비우면 맨 뒤에서 하나 꺼내 반환 → 스택의 pop.
🎮 실제 구현에서 쓰는 곳
- 메뉴 스택: "타이틀" → "메인" → "설정" 들어갈 때마다 stack.append("설정")처럼 화면 이름을 쌓고, "뒤로" 시 stack.pop()으로 이전 화면 이름을 꺼내서 그 화면을 다시 그립니다.
- 씬 전환·대화 되돌리기: 씬(장면)을 바꿀 때 "이전 씬"을 스택에 push해 두면, "이전으로" 버튼으로 pop해서 복귀할 수 있어요. "이전 대화로 돌아가기"도 같은 방식.
- 파피루스가 나오는 그 게임처럼 메뉴가 겹겹이 쌓이는 구조가 스택이에요.
🐍 실습: 스택 (메뉴)
2. 큐 — 대사·이벤트 순서
대사 한 줄이 나온 순서대로 화면에 띄워지고, "다음"을 누르면 다음 대사가 나옵니다. 먼저 넣은 게 먼저 나오는 FIFO가 큐예요.
📌 복기: 큐
- 연산: enqueue(맨 뒤에 넣기), dequeue(맨 앞에서 꺼내기). 먼저 넣은 게 먼저 나옴 = FIFO.
- 대사 한 줄 추가 = enqueue, "다음 대사 표시" = dequeue로 한 줄 꺼내서 화면에 출력.
📌 사용하는 파이썬 API
from collections import deque- 덱(double-ended queue): 앞·뒤 모두 O(1)로 넣고 뺄 수 있어요. 큐로 쓸 때는 "뒤에 넣고 앞에서 뺌".
덱.append(값),덱.popleft()- append = enqueue, popleft() = dequeue. list의 pop(0)은 비용이 크므로 큐에는 deque를 씁니다.
🎮 실제 구현에서 쓰는 곳
- 대사 큐: 이벤트에서 나올 대사 줄들을 순서대로 q.append("안녕!"), q.append("선택지가 있어요")로 넣고, 플레이어가 "다음"을 누를 때마다 line = q.popleft()로 한 줄 꺼내서 화면에 표시.
- 이벤트 큐: "데미지 적용", "아이템 드롭", "퀘스트 완료" 같은 게임 이벤트를 발생 순서대로 큐에 넣고, 매 프레임(또는 턴)에 하나씩 dequeue해서 처리하면 순서가 보장돼요.
- 선택지 전에 쌓인 대사가 순서대로 재생되는 구조가 큐예요.
🐍 실습: 큐 (대사)