지뢰찾기 연구

요즘 팔자에도 없던 지뢰찾기에 살짝 재미가 붙었다.
본인은 비슷한 학력· 경력으로 IT 업계에 종사하는 여느 사람들과는 달리, 머리 싸움을 즐기는 스타일이 전혀 아니었으며 복잡한 퍼즐 게임 따위와도 담을 쌓고 지내는 편이었다. 이런 점에서 본인은 완전 퍼즐 게임 매니아인 T모 님과는 성향이 다르다.

그래도 지뢰찾기 정도면 요령을 알고 나니까 은근히 재미있다. 초보 레벨로는(9*9, 지뢰 10개) 40초~1분 남짓한 시간 동안 대략 60~70%대의 승률로 깨겠다. 처음엔 초보 레벨조차도 5분이 넘게 끙끙대기도 했으나, 마치 경부선 서울-부산 열차의 운행 시간이 17시간에서 6시간대~4시간대로 줄어들듯이 시간이 단축되었다.

사용자 삽입 이미지
지뢰찾기는 소련에서 개발된 테트리스와 더불어 시간 죽이기용으로 상당히 적절한 컴퓨터용 퍼즐인 거 같다. 여느 보드 게임과는 달리, 물건이 먼저 존재하다가 컴퓨터로 옮겨진 게 아니라 처음부터 컴퓨터용으로 만들어진 게임이라는 차이가 있다.

맥북의 터치패드 격인 트랙패드로는 도저히 게임을 할 수 없는 듯했다.
두 손가락을 동시에 누르거나 패드 우측 하단을 지그시 누르면 우클릭이 되긴 하는데, 이게 생각보다 정확하게 인식되지가 않는 듯하기 때문이었다.

지뢰가 있다는 깃발만 꽂으려고 우클릭을 했는데, 그게 좌클릭으로 인식되어 지뢰를 밟고 장렬히 죽는 참사가 한두 번 발생하는 게 아니어서 말이다. 단, Windows Vista 이후부터 새로 개발된 지뢰찾기는 Shift+클릭으로 우클릭, 더블클릭으로 좌우 클릭도 돼서 조작이 훨씬 더 편해졌다.

키보드로는 Space는 셀 개봉(좌클릭)이고, Shift+Space가 깃발(우클릭)이다.
그런데 이번엔 깃발이 꽂힌 것을 제외한 모든 인접 셀들을 한꺼번에 개봉하는 건 키보드로 어떻게 하는지 모르겠다. 게임에 익숙해지고 나면 셀 개봉은 하나씩 클릭하는 것보다 저렇게 개봉을 훨씬 더 즐겨 하게 되는데 말이다.

지뢰찾기라는 게임은 풀이 순서를 논리적으로 명확하게 유추 가능한 상황이 대부분이지만, 가끔은 주어진 정보만으로는 정확한 지뢰 배치를 알 수 없어서 찍기(guessing)를 해야 하는 경우도 있다. 지뢰가 정확하게 어떤 조건으로 배치되어 있을 때 그런 상황이 생기는지는 잘 모르겠다.

숫자 정보로부터 유추 가능한 지뢰 배치 가짓수는 기본적으로 폭발적으로 증가할 수 있으며, 어떻게 될 수 있는지 백트래킹으로 일일이 하나하나 때려박아 넣으며 추적을 하는 수밖에 없다. 뭔가 네모네모 로직을 푸는 것 같은 느낌이 들기도 한다. 이 때문인지 이 문제는 전산학적으로 봤을 때 NP 완전 문제라는 것까지 증명되었다.

그리고 찍기가 필요 없는 명확한 상황일 때 사람이 지뢰를 찾는 절차는 의외로 아주 명료하고 기계적이다.
딱 이 정도 영역이 개봉되고 인접 셀의 지뢰 정보가 이렇게 주어졌을 때, '명백한 해법' 하나만 동원해서라도 컴퓨터가 게임 진행을 충분히 도와 줄 수 있겠다는 생각이 들었다.

그래서, 막간을 이용해 지뢰찾기를 푸는 프로그램을 짜 봤다.
초-중급 수준의 간단한 클래스 설계와 알고리즘 구현이 동원되니 심심풀이 땅콩 코딩용으로 꽤 적절한 거 같다!
'명백한 해법'을 적용할 수 없어서 '찍기'를 해야 할 때, 지뢰가 있을 만한 위치를 가장 유력하게 유추하는 것 정도까지 구현해야 비로소 중급-고급 사이를 넘볼 수 있지 싶다.

대략의 코딩 내역은 이러하다.
지뢰 답을 알고 있는 MineSource 클래스(각 칸마다 지뢰 여부를 실제로 담고 있는 2차원 배열),
그리고 그 MineSource에다가 쿼리를 해 가며 1~8 숫자와 자기가 찾아낸 지뢰 위치 정보만을 알고 있는 MineSolver 클래스를 만들었다.
이들은 다 2차원 배열과 배열의 크기는 공통 정보로 갖고 있으므로 MapData라는 동일 기반 클래스를 설정했다.

MineSource는 특정 위치 x,y에 대한 쿼리가 온 경우, MineSolver에다가 인접 셀들의 지뢰 개수를 써 준다. 인접 셀에 지뢰가 하나도 없다면 여느 지뢰찾기 프로그램이 그러는 것처럼 인접 셀 8개도 한꺼번에 개봉하면서 flood fill을 한다.
곧바로 지뢰를 찍었다면 당연히 곧바로 게임 오버라고 알려 준다. 그리고 요즘 지뢰찾기 게임 구현체들이 그런 것처럼, 첫 턴에서는 절대로 지뢰를 찍는 일이 없게 내부 보정을 하는 것도 이 클래스에서 하는 일이다.

지뢰찾기의 '명백한 해법'은 딱 두 가지이다.

  1. 열리지 않은(지뢰 마크가 있는 놈 포함) 인접 셀의 개수와 자기 숫자가 '같은' 셀은 주변 미개봉 셀이 다 지뢰임이 100% 확실하므로 그것들을 전부 지뢰 마크(깃발)로 표시한다.
  2. 깃발이 꽂힌 주변 셀의 개수와 자기 숫자가 같은 셀의 경우, 지뢰 마크가 없는 나머지 열리지 않은 인접 셀은 지뢰가 아닌 게 100% 확실하다. 따라서 전부 개봉한다.
  3. (위의 명백한 해법만으로 개봉할 만한 셀이 존재하지 않는 건 운이 나쁜 케이스다. 패턴을 기반으로 랜덤 추측을 해야 하는데, 이건 일단 보류.)

텍스트 모드에서 자기 스스로 무작위하게 지뢰밭을 만들고 지뢰찾기를 풀기도 하는 자문자답 프로그램을 만드니, 200줄이 좀 안 되는 코드가 완성되었다.
이 프로그램은 인접 셀에 대해서 뭔가 조건을 만족하는 셀의 개수를 세거나, (getCount) 일괄적으로 동일한 조치를 취하는(doAction) 패턴이 많다.

이걸 그냥 for(j=y-1; j<=y+1; j++) for(i=x-1; i<=x+1; i++)이라는 2중 for문만으로 돌리기에는 i나 j가 boundary 밖인 경우도 고려해야 하고, (i,j)가 (x,y)와 같은 위치인 경우도 피해 가야 하기 때문에 loop 자체가 생각보다 복잡하다.
그러니, 그 loop 자체만 하나만 짜 놓고 loop 안에서 하는 일을 그때 그때 달리 지정하는 것은 템플릿-람다로 깔끔하게 설계했다.

다음은 프로그램의 간단한 실행 결과이다.

after the first turn:
+ + 1 . . . . . .
+ + 1 . 1 1 1 . .
+ + 1 . 1 + 2 1 .
+ + 1 . 1 2 + 1 .
1 1 1 . . 1 + 2 1
. . . . 1 1 + + +
. . . . 1 + + + +
. 1 1 2 2 + + + +
. 1 + + + + + + +

(중간 과정 생략)

picking 7 9
@ @ 1 . . . . . .
2 2 1 . 1 1 1 . .
1 1 1 . 1 @ 2 1 .
1 @ 1 . 1 2 @ 1 .
1 1 1 . . 1 2 2 1
. . . . 1 1 3 @ 2
. . . . 1 @ 3 @ 2
. 1 1 2 2 2 2 1 1
. 1 @ 2 @ 1 . . .
You Won!


이 정도 초보적인 지뢰 찾기 풀이 프로그램은 이미 다 개발되고도 남았으니,
유튜브를 뒤지면 신의 경지 수준의 속도를 자랑하는 지뢰찾기 TAS (매크로 프로그램 내지 역공학을 동원한 게임 스피드런) 동영상들이 나돌고 있다.

여담이다만, 지뢰찾기를 하다가 지뢰를 밟아서 게임 오버가 될 때 본인은 깜짝 깜짝 잘 놀란다. =_= 마치 옛날에 페르시아의 왕자를 하는데 타이밍을 잘못 잡아서 왕자가 쇠톱날(chopper)에 두 동강 나서 죽는 것 같은 그런 느낌이다.

Posted by 사무엘

2013/09/26 08:32 2013/09/26 08:32
, , , ,
Response
No Trackback , 4 Comments
RSS :
http://moogi.new21.org/tc/rss/response/881

여러분 중에 혹시 옛날에 Alley Cat이라는 아래의 완전 구석기 시대 게임을 해 보신 분이 있는가?

사용자 삽입 이미지

난 해 봤다.
전설의 카세트테이프까지 접하지는 못했지만, 그래도 1990년대의 16비트 IBM 호환 PC의 발전은 다 지켜본 세대이기 때문이다.

저 게임의 제목은 우리말로는 딱 ‘도둑고양이’라는 뜻이다.
내가 갓난아기이던 1984년에 만들어진 게임이요, (PC용이 1984년. 8비트 Atari용 원판은 1983년에!)
6만 바이트가 채 안 되는 실행 파일 하나에 게임에 필요한 모든 코드와 데이터가 다 들어있다.
실행하면, 도.도. 시.시. 라~시라솔... 로 시작하는 그 중독성 있는 음악이 나온다.

실행 파일을 들여다보면,

This program requires a color graphics adapter.

라는 문자열이 있다.
This program requires Microsoft Windows도 아니고(과거에 윈도우 3.x용 프로그램이 도스에서 실행되었을 때 뜨던 실행 거부 메시지), VGA도 아니고.. 컴에 CGA가 없을 때 출력해 줄 에러 메시지가 들어있다니 도대체 얼마나 옛날 게임인 걸까? 320*200 4색짜리 그래픽 ㅋㅋ

이 게임을 만든 사람은 Bill Williams (1960-1998)라는 분이다. 정확히 말하면, John Harris라는 다른 프로그래머가 만들다 만 것을 이어받아서 자기 식으로 완수한 거라고 함.

사용자 삽입 이미지
(사진 출처: 영문 위키백과)

아주 흔하고 동명이인이 많은 이름이긴 한데, William의 애칭이 Bill 아니던가? 그럼 동일 이름 중복?

그야말로 20대 초중반의 나이에 그 열악한 하드웨어에서 어셈블리 코딩만으로 저렇게 고양이가 뛰어다니는 세계를 창조했다는 게 심히 놀랍지 않을 수 없다.
참고로 존 카맥(John Carmack)이 Doom 엔진을 만들어 낸 나이도 저 때와 비슷하다. 다들 25세가 채 되기 전이다! 천재들은 다 그 나이 때 이미 세상에 이름을 남긴다.

저 게임은 솔직히 내 취향은 아니었다. 나는 아케이드· 플랫폼 게임을 좋아하는 편이지만, HP가 없이 즉사하는 시스템을 별로 안 좋아했다. (사람을 조마조마하게 만들고 놀라게 해서-_-) 그리고 맨날 빗자루에 걷어 채여 날아가는 고양이가 좀 불쌍했다. 드럼통에서 창문 빨랫줄로 올라가려고 하는데 그때 딱 창문에서 떨어지는 물건에 이따금씩 맞는 게 싫기도 했고.

하지만 게임의 세계관이 심히 창의적이고 독특한 건 사실이다. 게임은 몰입도가 상당히 높다. 게임 속의 고양이는 끊임없이 움직이지 않으면 안 된다. 길바닥에서 고양이가 좀 지체하고 있으면 개가 달려와서 고양이를 죽인다. 드럼통에도 너무 오래 있으면 밑에서 괴물 머리가 툭 튀어나오면서 고양이를 밑으로 쫓아낸다. 방에 들어가서도 안심할 수 없다. 빗자루의 방해를 안 받고 미션을 완수하려면, 주기적으로 계속 바닥을 돌아다니면서 흙먼지를 묻혀 줘야 한다. 고양이가 좀 발 붙이고 쉴 틈이라곤 없다.

보글보글만큼이나 게임에 갑툭튀하는 랜덤한 요소가 많다. 화살표 키도 어떻게 조작하냐에 따라 고양이의 이동 속도와 점프 방향이 생각보다 다양하게 바뀐다. 나름 머리를 써서 만들었다는 흔적을 느낄 수 있다. PC 스피커만으로 상당히 정교하게 합성해 낸 효과음도 일품.

이 게임은 딱히 엔딩이 없어서, 퀘스트를 달성해서 암고양이를 만난 뒤에도, 진행 속도와 난이도만 더 올라간 채 게임은 한없이 반복되었다. 또한 원래 PC가 아닌 게임기용으로 만들어져서 그런지 PC 버전도 종료 기능이 없었기 때문에, 나중에는 컴퓨터를 그냥 끄거나 Game Wizard 같은 유틸리티의 Crash back to DOS 기능을 사용해서 빠져나가야 했다.

난 Bill Williams의 작품이라고는 Alley Cat밖에 알지 못하지만, 외국에 있는 어느 고전 게임 개발자 열전 사이트에서는 그를 1980년대를 풍미한 천재 게임 개발자라면서 게임 디자인계의 ‘스탠리 큐브릭’이라고 칭송하고 있다. “His games are completely original and stunning.”

그는 1990년대에는 게임 개발을 완전히 접고, 뜻밖의 진로를 선택했다.
기독교 신자였던 그는 목회를 할 의향으로 시카고에 있는 루터 신학교에 돌연 입학하여, 1994년에는 신학 석사 학위를 받았다.
재학 중에도 성경 탐구에 대한 열의가 남다른 우수한 학생이었다고 한다.

(下에서 계속됨)

Posted by 사무엘

2012/02/07 08:18 2012/02/07 08:18
, , ,
Response
No Trackback , 17 Comments
RSS :
http://moogi.new21.org/tc/rss/response/638

1990년대에 id 소프트웨어는 PC 환경에서 궁극의 최적화 기술을 선보이며, 1인칭 3차원 FPS 장르를 개척한 선두주자였다. 둠(Doom)은 두말 할 나위도 없이 불멸의 명작으로 기록되었고 수많은 매니아· 폐인들을 양산했다. id의 기술력은 그 후에도 Quake 시리즈로 이어지며 발전을 거듭했다. 후속작인 퀘이크는 이 장르에서 스프라이트가 아닌 100% 3D 폴리곤을 실현한 첫 작품이기도 하다.

음침한 던전과 곳곳에서 들려오는 몬스터들의 살벌한 울음 소리. 피떡이 된 몬스터 시체들;;
둠은 잔인성과 폭력성 면에서 논란의 대상이 되었으며, 특히 SF에다가 오각형, 염소 머리 등 지극히 오컬트· 사탄주의-_-를 가미한 세계관은 기독교 진영으로부터도 풍부한 까임거리를 제공했다.
“미국에서 총기 사고를 내고 자살한 어느 비행 청소년은 평소에도 Doom 중독자였으며, 게임을 하듯 사람을 죽이고 싶어했던 것으로 경찰 조사 결과 밝혀졌습니다”처럼. ㄲㄲㄲㄲ

그랬는데 일대일 대전 격투 게임 분야에도 Doom과 비슷한 위상을 차지하는 명작이 있다. 바로 모탈 컴뱃(Mortal Kombat).
그 장르의 게임으로는 의외로 미국산 게임이 별로 없다. 본인이 아는 건 삼국지 무장쟁패, 스트리트 파이터, 철권, 버추어 파이터 따위가 고작인데, 어느 것도 미국산이 아니다.

그에 반해 모탈 컴뱃은 미국산이다. 하지만 게임 로고에서부터 용의 그림이 등장하고 좀 동양스러운 느낌이 난다.
모탈 컴뱃은 1992년, 그러니까 울펜슈타인과 버추어 파이터 1하고 비슷한 시기에 첫 편이 나온 후, 오늘날까지 꾸준히 후속편이 출시되어 왔다. 제목에서 느껴지듯이 K 발음이 나는 C에 일부러 K를 집어넣었다. 코브라도 Kobra. 그렇게 적으니까 꼭 한국스러운 느낌이 나는구나(Korea? Corea?).

모탈 컴뱃이라는 말 자체는 격투 룰을 가리킨다고 한다. 마치 배틀 로얄(Battle Royale)처럼 말이다.
본인이 중딩 꼬꼬마이던 시절에, 주인공의 그래픽이 실사처럼 아주 큼직하고 정교하고, 마지막에 Finish him/her!이 나오는 격투 게임을 잠깐 본 적이 있었는데 그 게임이 바로 저 게임이었다.

그리고 스프라이트는 '실사처럼'이 아니고 '실사'가 맞다. 모탈 컴뱃은 1995년에 출시된 3편까지는, 비록 2D 도트이지만 액션 배우의 움직임을 그대로 촬영한 스프라이트를 써서 상당히 획기적인 그래픽을 선보였다. 실사 이미지로부터 잘 편집된 256색용 스프라이트를 얻는 게 보통일이 아니었을 텐데, 대단하다. 그야말로 엄청난 노가다였을 것이다.
(무려 1989년에 페르시아의 왕자의 스프라이트를 만들 생각을 했던 조던 메크너만큼이나 획기적인 시도이다. ^^)

말이 나왔으니 말인데, 본인은 옛날에 256색 모드에서 궁극의 팔레트 최적화도 엔지니어들의 어지간한 덕력과 근성이 아니었으면 엄두도 못 냈을 작업이라고 생각한다. 스타크래프트를 생각해 보라. 어떻게 그 그래픽에서 8종족 색깔별로 클록킹 유닛(알파 블렌딩)을 구현했으며, 퀘이크는 동적 광원을 구현했겠는가!

이 게임의 백미는 격투 말미에 다 죽고 헤롱헤롱하고 있는 상대편을 필살기로 끔살하는 일명 Fatality 기술이다.
퀘이크 3 아레나에 레일건이 있고, 카트라이더에 드리프트가 있으며, 스타크래프트에 스팀팩과 사이오닉 스톰이 있다면...
모탈 컴뱃에는 Fatality가 있다.

이게 정말 성경에 나오는 '인간의 상상하는 바가 원천적으로 악하다'(창 6:5, 8:21)는 걸 입증하는 것 같다. 사지를 각을 뜬다거나, 전기로 지지거나 산 채로 불태우거나 뭐 기타 등등...;;
주인공별로 가히 기상천외한 엽기적인 방법으로 상대편 캐릭을 작살을 낼 수 있다. 저런 현란한 비주얼을 어떻게 만들 생각을 다 했는지 모르겠다.
그런데 나도 그런 거 보면 쾌감이 느껴진다. 아담의 본성이다. -_-

그 후 모탈 컴뱃 4는 당대의 게임계의 추세에 따라 드디어 주인공이 3D 폴리곤으로 바뀌었다. 비록 그때는 현란한 각도 회전을 대가로, 예전의 2D 스프라이트가 뽐내던 도트 단위의 화려한 비주얼은 어느 정도 희생해야만 했다. 하지만 지금 3D 그래픽은 가히 실사나 다름없다. full 3D 게임이 처음으로 나오던 때는 버추어 파이터도 주인공이 가히 목각 인형에 불과했고, 퀘이크도 파티클은 그냥 사각형 픽셀로 처리될 정도로 허접했다.

동양스러운 느낌 하니까 생각나는데, 퀘이크 3 아레나도 싱글 플레이의 최종 보스인 Xaero는 사이보그 로봇이 아니고, 오크나 저그 같은 괴물도 아니다. 대머리에 중국 내지 티벳 승려 차림을 한 아저씨이다. 예전의 FPS 게임들의 최종 보스가 무식하게 높은 HP + 물량전 컨셉이었다면, 퀘3은 우리와 똑같은 인간이 마치 결투를 하듯 정밀도가 높은 레일건으로 플레이어와 승부한다. 이런 모습을 보고 본인은 퀘3을 처음 하던 시절에 무척 놀랐었다. FPS에다가 격투 게임 비슷한 디자인을 도입한 셈이다.

모탈 컴뱃은 툼레이더나 둠처럼 영화화도 되었다. 동양을 배경으로 말이다. 퀘이크에 매니아 계층인 '퀘이커'(개신교 교파인 퀘이커 말고-_-)가 있다면, 모탈 컴뱃도 '모탈리안'이라고 불리는 매니아 계층이 서양에는 굉장히 많다고 한다.
유튜브에 스타크래프트 실사판이 나돈 적이 있었는데-_- 이 양덕후 모탈리안들은 모탈 컴뱃 실사판도 만들어서 UCC랍시고 올린다. ^^;;

대전 액션 게임의 내레이션은 톤이 극도로 낮고 좀 사악한(?) 느낌이 나는 남자 목소리로 만들어지는 경향이 있다. “Fight one. Ready, go” / “Round one. Fight!” / “You win” 등. -_-

이렇게 본인이 갑자기 모탈 컴뱃에 대해서 글을 쓴 이유는...
고등학교 시절에 본인이 만들었던 오목 게임의 이름도 아마 모탈 컴뱃으로부터 알게 모르게 영향을 받은 것 같아서이다. ㅋㅋㅋㅋㅋ

Posted by 사무엘

2011/05/05 09:03 2011/05/05 09:03
,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/506

개인적으로 1995-6년 사이는 PC 게임 환경의 역사상 굉장히 의미심장한 과도기였다고 생각한다.
플랫폼이 도스에서 윈도우로 넘어가고 있었고, 그래픽 역시 VGA 320*200 256색 모드를 탈피하여 2D 게임을 기점으로 고해상도화하기 시작했다. 사실, 그래픽 가속기라는 개념이 등장한 것도 이 무렵부터이고, 비록 아직 듣보잡 지위이긴 하나 DirectX란 것도 그때 개발되어 나왔다. 빌 게이츠는 윈도우 95를 게임용 엔터테이먼트 플랫폼으로 만들려고 안간힘을 다하는 중이었다.

패키지 게임의 경우, 저장 매체도 CD롬이 슬슬 플로피 디스크를 대체하기 시작했다. 하지만 그 당시 게임은 650MB 공간을 꽉 채울 정도로 대용량은 아니었다. 97~98년 사이에 출시된 스타크래프트도 음악과 동영상을 제외한 립버전이 200MB 안팎이었고, 윈도우 95 역시 실제 운영체제 파일 용량은 100MB도 채 하지 않던 시절이다.

이때 몇몇 게임은 CD롬을 아주 재미있게 활용했다. 디스크를 오디오 CD 겸 CD롬 겸용으로 만들어서 파일은 50-100MB 정도의 공간만 차지하고, 나머지 공간에다가는 게임 배경 음악을 집어넣은 것이다. 대표적인 예가 퀘이크 1이다. 옛날에 무슨 팝송 영어 교재 CD도 그렇게 겸용 형태였다. 공간 활용을 잘 한 경우라 하겠다.

게임 내부에서 사용하는 음악을 일반 CD 플레이어로 간단히 들을 수 있을 정도로 노출한 것이긴 하지만, 개인적으로 그건 굉장히 기발한 방법이라고 생각했다. 또한 그때는 그 CD를 정품 인증 수단으로 활용하기도 했다. 비록 가상 CD 기술 때문에 완전히 무력화됐지만 말이다.

그 당시에 오디오 CD는 CPU와는 완전히 별도로 동작했기 때문에 CPU에 부담을 전혀 주지 않았다. 요즘이야 MP3 틀어 놓고 온라인 게임도 마음대로 할 정도로 하드웨어 환경이 좋지만, 486이나 펜티엄급 컴퓨터만 해도 MP3 하나 트는 것만으로 CPU 사용률이 10~20% 정도 치솟던 시절이었다.

미디보다 음질 좋지, CD롬의 남는 용량을 활용하지, CPU 부담 안 주지, 40분 남짓한 정도의 시간이면 게임 사운드 트랙을 모두 담는 데 별 무리도 없지(게임 음악은 은근히 짧으며, 나머지는 전부 반복이다. ^^), 허접하게나마 정품 체크도 간단히 할 수 있지.. 일석이조가 아닐 수 없었다.
요즘은 온라인 게임 클라이언트가 최하 기가바이트급이다. 배경 음악은 미디도 아니고 그냥 내부적으로 mp3/wma/ogg 같은 걸 그대로 재상한다. 불과 15년 남짓 전인데 세상이 이렇게 달라졌다니 참 격세지감이다.

Posted by 사무엘

2010/03/20 17:53 2010/03/20 17:53
, ,
Response
No Trackback , 6 Comments
RSS :
http://moogi.new21.org/tc/rss/response/217


블로그 이미지

그런즉 이제 애호박, 단호박, 늙은호박 이 셋은 항상 있으나, 그 중에 제일은 늙은호박이니라.

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2024/11   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Site Stats

Total hits:
2991471
Today:
482
Yesterday:
2549