일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
- 확산 모델
- PYTHON
- Stable Diffusion
- 우분투
- 휴머노이드 로봇
- 강화 학습
- 티스토리챌린지
- OpenAI
- 멀티모달
- LLM
- 인공지능
- 딥러닝
- ChatGPT
- 자연어 처리
- 이미지 생성
- 다국어 지원
- 강화학습
- tts
- XAI
- 오픈소스
- 감정 표현
- AI
- 메타
- 실시간 렌더링
- 일론 머스크
- AI 기술
- 오블완
- 생성형AI
- 트랜스포머
- 오픈AI
- Today
- Total
AI 탐구노트
[바이브코딩] 크로스워드 퍼즐 생성기 만들어보기 본문
이번에는 바이브코딩으로 크로스워드 퍼즐 생성기를 만들어 봤습니다. 물론 다른 사례와 비슷하게 컨텐츠 만들 때 써먹기 위한 용도입니다. 기억을 되살려보면, 작년 11월에 수작업으로 십자말풀이 게임이라는 이름으로 만들어 보긴 했었습니다. 아래는 당시 글의 링크입니다.
2024.11.15 - [DIY 테스트] - 십자말풀이 게임 생성 테스트
2024.11.15 - [DIY 테스트] - 한글 십자말풀이 게임 도구 만들기
이때는 틀을 자동으로 만들려다가 어려울 것 같아서 단어를 틀에 직접 입력해서 레이아웃을 만들고 여기에 사용된 단어들을 AI가 문제로 만들어서 입력하는 방식으로 개발했었습니다. 실무에서 사용하기에는 이게 더 나을 수도 있겠다 싶었거든요.
이번에는 처음부터 끝까지 AI를 활용해서 자동화하도록 합니다. 그래서, 문제도 주제를 던져주면 AI가 생성해 주고, 그걸 그대로 입력으로 이용해서 십자말풀이 레이아웃을 만들도록 말이죠. 그렇게 된다면 컨텐츠 생성할 때 사용할 수 있는 '빵틀'이 나올 것 같습니다. ^ ^;
제가 크로스워드 퍼즐을 생성하기 위해 진행한 과정은 다음과 같습니다.
1️⃣ 크로스워드 퍼즐 요구사항 🤔
- 입력 데이터
- 퀴즈 문제들 (json 파일 형태)
- 정답 (키워드)는 2글자~7글자로 길이 제한
- 크로스되는 단어들이 많으려면 문항수가 많아야 함
- 출력 결과물
- 퍼즐판과 문제를 가진 한글 크로스워드 퍼즐
- 직접 글자 입력해서 퀴즈 게임을 할 수 있음
- 컨텐츠 제작용 이미지 추출 용도도 지원
- 퍼즐 모양은 자동으로 생성되도록 함
- HTML + CSS + Javascript (tailwind css 이용)
- 생성 로직
- json 파일에서 정답 단어들을 분석해서 자동으로 크로스워드 퍼즐을 생성
- 교차하는 글자가 하나 이상은 있어야 하고, 단어 간에는 1개 이상의 교차는 불가, 교차 외의 단어들은 인접 불가 조건
- 교차되는 단어가 최대한 많도록 알고리즘 적용 (근사적 Backtracking 방식 도입)
- 화면
- 퍼즐판과 문제판으로 구분. 각각을 화면 저장할 수 있도록 함
- 컨트롤 영역 (기능 버튼들, 데이터 입력 부분들)도 별도 있어야 함
- 퍼즐판
- 퍼즐판에서 좌->우, 위->아래의 순서로 번호 지정
- 문제판
- 문제판은 가로, 세로 문제를 각각 구분해서 자동 배치해야 함
- 번호와 나머지 설명 부분은 색상으로 구분되어야 하고 줄바꿈은 자동
- 컨트롤 영역
- 퍼즐문제 화면, 퍼즐 정답 화면, 가로/세로 설명 화면 개별 저장 기능
- 퍼즐판은 canvas 좌우, 아래 위의 여백 조절 가능
2️⃣ 개발 중 시행착오들 😭
- 단어 교차 부분 : 로직을 설명할 때 제가 설명을 잘못하는 바람에 시행 착오가 좀 있었음
- 문제 설명 부분 : 텍스트박스를 생각해서 길이가 넘어가면 자연스레 줄바꿈이 될거라 생각했음
→ Canvas에 그려지는 것이라 처리하는 방식도 달랐고 이에 대한 처리 고생함 - 정답 입력 부분 : 초기에 입력해도 결과가 보이지 않는 버그 때문에 고생함
- 키보드 타이핑을 하려면 먼저 포커스를 가져와야 하는데 그러지 못하는 버그 발생
- 우회 방법으로 hidden input을 생성해 두고 focus를 이쪽으로 오게 한 다음 입력되는 내용을 Canvas 상의 해당 셀에 들어가는 방식으로 처리함
- 글자 입력 후 Tab 이면 가로 방향, Enter면 세로 방향으로 진행
- 입력은 모든 셀에서 가능하도록 설정
- 채점 부분 : 입력된 전체 값을 비교해서 다 맞으면 축하 메시지를 보여주도록 함. 의외로 문제없이 넘어감
- 기타사항
레이아웃을 고칠 수 있도록 seed 개념 도입해서 재생성 진행 (최종은 버그 때문에 보류)
3️⃣ 생성된 한글 크로스워드(가로/세로퀴즈)
최종적으로 생성된 결과물은 다음과 같습니다. 아주 디테일한 부분들을 손볼 곳이 남았습니다. 글자 간격이나 줄 간격 등등...
그리고, 다양한 데이터로 테스트를 해 보지 않아서 사용 중에 예상치 못한 버그가 나올지 모르는 상황이긴 하지만 여기까지 나온 것만으로도 활용할 수 있는 영역은 많을 것 같습니다.
'DIY 테스트' 카테고리의 다른 글
자작 노래방 프로그램 - 가사보며 노래 따라 부르기 (2) | 2025.07.25 |
---|---|
AI를 이용한 이모지 팩 이미지 생성, Python으로 이모지 이미지 분리 (1) | 2025.07.15 |
매직아이(오토스테레오그램) 생성기 만들기 (2) | 2025.06.25 |
국가 별 지도 상 위치를 보여주는 코드 생성하기 (3) | 2025.06.18 |
바이브코딩을 이용한 미로퍼즐 게임 만들기 (0) | 2025.06.17 |