I단원 확장 — 게임 시스템 실습과제

학습한 자료·진법·리스트를 구체적인 게임 시스템으로 확장하기 (추가 강의)

← 전체 목차 I단원 목차

이 페이지는 강의 외 추가 강의예요. I단원에서 배운 진법·리스트를 게임에서 실제로 쓰는 방식(비트 플래그, 인벤토리, 세이브 데이터)으로 확장합니다. 각 주제마다 자료구조 복기 → 사용 API → 실제 구현 활용 순으로 짚어요.

1. 진법 — 게임 시스템에서의 실제 활용

단순히 "10진수를 2진수로 표기한다"는 것만으로는 자료구조와의 연결이 약해요. 게임에서는 한 숫자에 여러 상태를 비트로 담는 플래그, 슬롯 개수가 2^n일 때 인덱스 표현, 세이브/네트워크에서 숫자 압축 등에 진법·비트가 쓰입니다.

📌 복기: 진법·비트

📌 사용하는 파이썬 API

bin(정수), hex(정수)
정수를 2진·16진 문자열로 바꿔요. 디버깅·확인용.
int("11001", 2)
2진수 문자열을 10진 정수로 변환. 두 번째 인자가 밑(2, 8, 16 등).
1 << n
1을 왼쪽으로 n비트 시프트 → n번 비트만 1인 값. 예: 1 << 2 → 4 (0b100).
a | b (OR), a & b (AND)
비트 OR로 "해당 비트 켜기", AND로 "해당 비트가 켜져 있는지 확인".

🎮 실제 구현에서 쓰는 곳

🐍 실습: 비트 플래그

2. 리스트 — 인벤토리·퀘스트 목록

리스트는 순서가 있는 자료라서 게임의 인벤토리(몇 번째 슬롯에 뭐가 있는지), 퀘스트 목록, 대사 줄 등에 그대로 대응해요.

RPG 인벤토리 슬롯. 검, 물약, 방패 등 — 리스트 인덱스가 슬롯 번호.
언더테일 스타일 인벤토리. 슬롯 = 리스트 한 칸, append·pop으로 넣고 뺀다.

📌 복기: 리스트(배열)

📌 사용하는 파이썬 API

리스트.append(값)
맨 뒤에 한 칸 추가. 아이템 획득 시 인벤에 넣는 것에 대응.
리스트.pop(인덱스)
해당 인덱스 값을 제거하고 반환. "n번 슬롯 아이템 사용 후 제거"에 대응.
리스트[i], len(리스트)
i번째 슬롯 접근, 슬롯 개수(길이).

🎮 실제 구현에서 쓰는 곳

🐍 실습: 인벤토리

3. 세이브 데이터처럼 묶기

HP, 골드, 인벤토리 리스트를 한 덩어리로 묶으면 "세이브 스냅샷"처럼 다룰 수 있어요. 파이썬에서는 dict(딕셔너리)로 키–값 쌍을 저장합니다.

📌 복기

자료구조는 "어떤 순서·형태로 담을지"를 정하는 것. 게임 세이브는 "HP, 골드, 인벤, 플래그" 등을 이름(키)으로 구분해 묶는 구조예요.

📌 사용하는 파이썬 API

{"키": 값, ...}
딕셔너리: 키로 값을 찾음. save["hp"], save["inv"]처럼 접근.
🐍 실습: 세이브 흉내