15 — 최고 점수: 작은 프로젝트
지금까지 배운 것이 작은 프로젝트 하나에 담깁니다: 최고 점수를 기억하는
주사위 게임입니다. 랜덤 사용은 주사위를 굴리고, 파일 사용은 기록을
저장합니다.
단계
best.nme파일을 만들고 게임 전체를 한 파일로 저장합니다:
실행해 보기 →랜덤 사용 최신 파일 사용 최신 import os 이름을 물어봐 이름이 뭐예요? 점수는 0 3번: 주사위는 랜덤정수(1, 6) 만약 주사위 >= 4: 점수에 1 더해 말해 f"{이름}: 주사위 {주사위}, 점수 {점수}" if os.path.exists("best.json"): 최고 = json읽기("best.json") 말해 f"지난 최고 점수: {최고['score']}" else: 최고 = {"name": "없음", "score": 0} if 점수 > 최고["score"]: json저장("best.json", {"name": 이름, "score": 점수}) 말해 f"새 최고 점수: {점수}" else: 말해 f"최고 점수는 그대로 {최고['score']}"세 라운드가 주사위를 굴리고, 4 이상이 나올 때마다 점수에 1을 더합니다. 첫
if는 저장된 최고가 있으면 읽고, 둘째if는 점수가 기존 최고를 넘을 때 새 최고를 저장합니다.실행하고 이름을 입력합니다. 한 번의 실행은 이렇게 나올 수 있습니다:
nme 실행 best이름이 뭐예요? 민수: 주사위 1, 점수 0 민수: 주사위 4, 점수 1 민수: 주사위 5, 점수 2 새 최고 점수: 2주사위는 무작위라 숫자는 실행마다 다릅니다. 첫 실행은 저장된 최고가 없으므로 점수가 항상 새 최고가 됩니다.
다시 실행하면 이전 최고가 게임 시작 전에 파일에서 돌아오고,
best.json에는{"name": "민수", "score": 2}가 들어 있습니다. 그 점수를 넘기면 새 최고가 저장되고, 못 넘기면 그대로 남습니다.영어는 같은 프로젝트를
use random latest,use file latest,score add 1과 초급 블록으로 씁니다. 전체 영어 프로그램은 영어 가이드에 있습니다. 이 조각은 저장된 최고를 읽어 보여 줍니다:
실행해 보기 →use file latest best = json_load("best.json") say f"Saved best score: {best['score']}"
직접 해보기
게임을 어렵게 바꿔 보세요: 3번:을 4번:으로 바꾸면 더 긴 게임이 되고,
주사위 >= 4를 주사위 >= 5로 바꾸면 점수를 얻기 더 어려워집니다.
배운 것
- 한 프로젝트에
랜덤 사용,파일 사용,물어봐,3번:,만약, JSON을 한 파일에 담을 수 있습니다. os.path.exists(경로)는 저장된 파일이 이미 있는지 확인합니다.json읽기는 지난 최고를 되살리고,json저장은 새 최고를 씁니다.점수에 1 더해/score add 1는 조건 블록 안에서만 점수를 키웁니다.