This is a fully Korean-localized version of Colossal Cave Adventure, which Donald Knuth ported from CWEB to Go. The original game was Adventure 1.0, a FORTRAN game created by Will Crowther (1975โ76) and significantly expanded by Don Woods (1977), which Knuth rewrote in CWEB in 1998.
Donald Knuth๊ฐ CWEB์ผ๋ก ์ด Colossal Cave Adventure๋ฅผ Go๋ก ์ฎ๊ธด ๋ค, ํ๊ตญ์ด๋ก ์์ ํ๊ธํํ ๊ฒ์ ๋๋ค. ์์์ Will Crowther(1975โ76)๊ฐ ๋ง๋ค๊ณ Don Woods(1977)๊ฐ ํฌ๊ฒ ํ์ฅํ FORTRAN ๊ฒ์ Adventure 1.0์ด๋ฉฐ, Knuth๊ฐ 1998๋ ์ CWEB์ผ๋ก ๋ค์ ์ผ์ต๋๋ค.
์ถ๋ ฅ(์ฅ์ ์ค๋ช
ยท๋ฉ์์ง)๊ณผ ๋ช
๋ น์ด ๋ชจ๋ ํ๊ตญ์ด์ด๋ฉฐ, ๋งํฌ๋ ์น๊ทผํ ๋ฐ๋ง์
๋๋ค.
๋ง๋ฒ ์ฃผ๋ฌธ xyzzy, plugh, plover, fee/fie/foe/foo/fum๋ง ์์ ๊ทธ๋๋ก
์์ด๋ก ์
๋ ฅํฉ๋๋ค.
$ go run .
์ด๋๋ฒค์ฒ์ ์จ ๊ฑธ ํ์ํด!! ์ค๋ช
์ ๋ค์ด๋ณผ๋?
** ์๋
๋ ์์ ๋ฒฝ๋ ๊ฑด๋ฌผ ์, ๊ธธ ๋์ ์ ์์ด. ์ฃผ์๋ ์จํต ์ฒ์ด์ผ. ๊ฑด๋ฌผ์์
์์ ์๋๋ฌผ์ด ํ๋ฌ๋์ ๋๋์ ๋ฐ๋ผ ๋ด๋ ค๊ฐ.
* _Go 1.26 ์ด์์ด ํ์ํฉ๋๋ค.
go build -o advent . # ๋น๋
./advent # ํ๋ ์ด (๋งค๋ฒ ๋ค๋ฅธ ๋ชจํ โ ํ์ฌ ์๊ฐ์ ๋์ ์๋๋ก)
# ๋๋ ๊ณง์ฅ ์คํ
go run .--seed ํ๋๊ทธ๋ก ๋์๋ฅผ ๊ณ ์ ํ ์ ์์ต๋๋ค(ํ
์คํธยท๋น๊ต์ฉ). ์๋๋ฅผ ๊ณ ์ ํ๋ฉด
๊ฒ์ ์ ์ฒด๊ฐ ์์ ํ ๊ฒฐ์ ๋ก ์ ์ด ๋ฉ๋๋ค.
go run . --seed=42ํ๋ ๋จ์ด์ง๋ฆฌ ํ๊ธ ๋ช ๋ น์ ์ ๋ ฅํฉ๋๋ค.
- ์ด๋:
๋ถ๋จ๋์๋ถ๋๋จ์์์๋์๋ฐ๋ค์ด๊ฐ๋๊ฐ๋์๊ฐ๋ดโฆ - ๋ง๋ฒ ์ฃผ๋ฌธ(์์ด):
xyzzyplughplover - ๋์:
๊ฐ์ ธ๊ฐ(์ง์ด)๋ฒ๋ ค(๋ด๋ ค๋)์ด์ด๋ซ์์ผ๊บผ์ฝ์ด๋จน์ด๋ง์ ์ฑ์๋ถ์ด๋์ ธํ๋ค์ด๊นจ์๋จน์ฌ๊ณต๊ฒฉโฆ - ์ฌ๋ฌผ:
์ด์๋จํ๋ง๋์์์ฅ๋ณ๋ฌผ๊ธฐ๋ฆ์ฐฝ์ด๊ธ๋ณด์์๋ฉ๋๋์ผ์ง์ฐฝโฆ - ๊ธฐํ:
๋ด(๋๋ฌ๋ณด๊ธฐ)์์งํ์ ์๋์๋ง์ ๋ณด๊ฐ๋ต๊ทธ๋ง - ์ ์ฅ/๋ถ๋ฌ์ค๊ธฐ:
์ ์ฅ/๋ถ๋ฌ์ค๊ธฐ(advent.saveํ์ผ์ ํ ํ ๋ณด๊ด) - ์/์๋์ค:
์(์) /์๋(์)
๋ ๋จ์ด๋ ์์๊ฐ ์์ ๋กญ์ต๋๋ค โ ๊ฐ์ ธ๊ฐ ์ด์ ์ ์ด์ ๊ฐ์ ธ๊ฐ ๋ ๋ค ๋ฉ๋๋ค.
์์:
๋จํ ๊ฐ์ ธ๊ฐ ๋จํ๋ฅผ ์ง๋๋ค
์ผ ๋จํ๋ฅผ ์ผ ๋ค
์ฐฝ์ด ์ด์ด (์ด์ ๊ฐ ์์ผ๋ฉด) ์ฐฝ์ด์ ์ฐ๋ค
๋ฌผ ๋ถ์ด ๋ณ์ ๋ฌผ์ ๋ถ๋๋ค
์ฒ์์ ์ง์ ํค๋งค ๋ณด๋ ๊ฒ ์ ๋ง์ด์ง๋ง, ๋งํ๊ฑฐ๋ ๋๊น์ง ๊นจ๊ณ ์ถ๋ค๋ฉด ๊ณต๋ต ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์์ C๋ "๋ค์ํ ์์คํ
"์ด๋ผ goto๊ฐ ๋ง์ต๋๋ค. ์ด ํฌํ
์ ๊ทธ ์ ์ด ํ๋ฆ์
๊ฐ์ผ๋ก ํ์ด goto๋ฅผ ๋ฉ์ธ ๋ฃจํ์ ๋ณธ์ง์ ์ธ ๋ถ๊ธฐ ๋ช ๊ณณ์๋ง ๋จ๊ฒผ์ต๋๋ค.
- ๋ชจ๋ ๊ฐ๋ณ ์ํ๋ ํ๋์
Game๊ตฌ์กฐ์ฒด์ ๋ชจ์(์ ์ญ๋ณ์ ์์) - C ๋งคํฌ๋ก๋ ๋ฉ์๋๋ก(
dark(),toting(),closing()โฆ) - ์ ์ด ํ๋ฆ์ ๋ช
์์ ๊ฐ์ผ๋ก:
simulate()/minorCycle(), ํ์์inputResult, ๋์์actResult
์ฝ๋๋ฅผ ์ง์ ์ฝ์ผ๋ฉฐ ์ดํดํ๋ ค๋ฉด ์ฝ๋ ์ฝ๊ธฐ ์๋ด(ARCHITECTURE.md)๋ฅผ ์ฐธ๊ณ ํ์ธ์ โ ํ์ผ ์ง๋, ์ฝ๋ ์์, ๋ ๊ฒน ์ํ๊ณผ ์ ์ด ํ๋ฆ, ์์ ๋์ํ๊ฐ ์ ๋ฆฌ๋ผ ์์ต๋๋ค.
๋ฐฉ๋ํ ๋๊ตด ๋ฐ์ดํฐ(์ด๋ ๋ช
๋ น 740๊ฐ, ์ฅ์ 144๊ณณ, ๊ฐ์ฒด 67๊ฐ)๋ ๊ฒ์ฆ๋ C ์๋ณธ์
์คํํด ๋คํํ ๊ตฌ์กฐ(cavedata.go, objdata.go โ ์์ฑ ํ์ผ)์, ์ฌ๋์ด
๊ด๋ฆฌํ๋ ํ๊ธ ํ
์คํธ๋ก ๋๋ฉ๋๋ค.
| ํ์ผ | ๋ด์ฉ |
|---|---|
cave_text.go |
์ฅ์ ์ค๋ช ยท์งง์ ์ค๋ช ยทremark (ํ๊ธ) |
obj_text.go |
๊ฐ์ฒด ์ด๋ฆยท๋ฌ์ฌ (ํ๊ธ) |
messages.go |
ํ์/์๋ด๋ฌธยทํํธยท๊ณ ์ ๋ฉ์์ง (ํ๊ธ) |
vocab.go |
ํ๊ธ ๋ช ๋ น์ด ์ฌ์ + ๊ธฐ๋ณธ ๋ฉ์์ง |
cavedata.go objdata.go |
๋๊ตด/๊ฐ์ฒด ๊ตฌ์กฐ (์์ฑ ํ์ผ, ์๋์ง ์์) |
์ด ๋์ ๋๊ตด ๊ตฌ์กฐ์ ์ ํ์ฑ์ ์์ฑ์ผ๋ก ๋ณด์ฅํ๋ฉด์, ๋ฒ์ญ์ ํ ์คํธ ํ์ผ์์๋ง ์ด๋ค์ง๋๋ค.
์์์ ๋ช
๋ น์ "์ 5๊ธ์"๋ก ์๋ผ ์ธ์ํ์ง๋ง, ํ๊ธ์ UTF-8 ๋ฉํฐ๋ฐ์ดํธ๋ผ ๋ฐ์ดํธ
์ ๋จ ์ ๊ธ์๊ฐ ๊นจ์ง๋๋ค. ๊ทธ๋์ lookup์ ๋จ์ด ์ ์ฒด๋ก ๋งค์นญํ๊ณ , ์/์๋์ค๋
์ฒซ ๊ธ์(์/์/์/์)๋ก ๊ฐ๋ฆฝ๋๋ค.
์์์ ๋จ์ํ ์ ํ ํฉ๋ ๋์ ์์ฑ๊ธฐ๋ฅผ ์ฐ๊ณ ์๋๊ฐ ํ๋๋ฟ์ด๋ผ, ์๋๋ฅผ ๊ณ ์ ํ๋ฉด ๊ฒ์์ด ์์ ํ ๊ฒฐ์ ๋ก ์ ์ ๋๋ค. ํ๊ธํ๋ ์ด ์ฑ์ง์ ๊ทธ๋๋ก ๊ฐ์ง๋ฏ๋ก, ์๋๋ฅผ ๊ณ ์ ํ ์ถ๋ ฅ์ golden์ผ๋ก ์บก์ฒํด ํ๊ท๋ฅผ ๋ง์ต๋๋ค.
go test ./...testdata/ko_*.in(ํ๊ธ ์
๋ ฅ)๊ณผ *.golden(์๋ ๊ณ ์ ์ถ๋ ฅ)์ผ๋ก ๊ฑท๊ธฐยท๋ณด๋ฌผ์์งยท
๋ฌผ/๊ธฐ๋ฆยท๊ฒฉ์๋ฌธยท์ฃฝ์ ์๋๋ฆฌ์ค๋ฅผ ๊ฒ์ฆํฉ๋๋ค. ์ดํยทenumยท๋๊ตด/๊ฐ์ฒด ๊ตฌ์กฐ์ ๋ํ
๋จ์ ํ
์คํธ๋ ํจ๊ป ๋๋๋ค.
์ฐธ๊ณ : ์์ด ์ํ(C ์๋ณธ๊ณผ byte-identical)์ git ์ด๋ ฅ์ ๋ณด์กด๋์ด ์์ด ์ธ์ ๋ ๋ณต์ยท๋น๊ตํ ์ ์์ต๋๋ค.
์์ advent.w์ ์ ์๊ถ์ Don Woods์ Don Knuth์๊ฒ ์์ต๋๋ค
(ยฉ 1998, all rights reserved). ์ด ์ ์ฅ์์ Go ์ฝ๋์ ํ๊ธ ๋ฒ์ญ์ ๊ทธ ๋์์
์ถฉ์คํ ์ฎ๊ธด ๋ฒ์ญ๋ฌผ์
๋๋ค. ์๋ณธ๊ณผ ๊ด๋ จ ์ ๋ณด:
http://www.rickadams.org/adventure/