TETRIS를 Vector Graphics로, WPF와 Blazor를 이용하여 만들어봤습니다.

이번에 토이 프로젝트로, .NET의 WPF와 Blazor를 이용해 Vector Graphics 기반으로 TETRIS를 만들어보게 되었습니다.

얼마 전에 업무를 하던 중 참고를 위해 과거에 만들었던 옛 소스코드들을 뒤적거리다가 게임 개발 동아리 활동을 막 시작할 무렵에 만든 20년도 넘은 Win32 API 기반 TETRIS 소스코드를 발견했습니다.

Win32 API 기반 TETRIS

당시에 그걸 만들고 난 후, 오락실 버전 TETRIS처럼 블록들이 깔끔하게 연결된 모양으로 예쁘게 만들려면 과연 어떻게 설계해야 할까 고민한 적이 있었습니다. 물론, 당시의 저로서는 조금 고민하다가 어려워서 바로 포기했었네요…

그때 못했던 것을 여가시간에 한번 해볼까 해서 토이 프로젝트로 진행해보게 되었습니다.

진행하다 보니 오락실 버전 TETRIS의 깔끔하게 연결된 조각을 구현하기 위해 Vector Graphics를 이용하게 되었고, Vector Graphics 하면 바로 떠오르는 WPF를 이용해 만들었습니다. 그러다가 Geometry로 정의한 TETRIS의 조각을 Dynamic Resource를 이용해 6가지 테마로 표현해보기도 했네요.

그러고 나서 기왕 해보는 거 TETRIS의 조각을 정의하는 기본 자료구조를 Blazor에도 적용해봤습니다. Blazor 기반으로 구현한 것은 GitHub Pages를 이용해 게시했고, 다음의 링크에서 플레이해볼 수 있습니다.

https://vagabond-k.github.io/VegrarisDemo/

프로젝트 이름은 Vector Graphics 기반으로 만든 TETRIS 라는 의미로 VEGRARIS라고 지었으며, 전체 소스코드는 GitHub에 공유했습니다. 비록 세상에 전혀 도움이 안 될 것 같은 소스코드지만, 그래도 누군가에게는 학습을 위한 자료가 되지 않을까 싶어서 공유를 하게 되었습니다.

Vector Graphics 기반 Geometry 생성 알고리즘 등 쪼끔 더 자세한 구현 과정 설명은 블로그 글에 작성하였습니다. 궁금하신 분은 해당 글을 확인하시면 되겠습니다.

이제 곧 설입니다. 모두들 즐거운 설 명절 되세요~

17 Likes

너무 멋지네요!!

요즘 테트리스는 T-SPIN 등이 들어가서… 로직 구현이 더 어렵더라고요

2 Likes

블로그 까지 찾아 가서 구현 내용 보았습니다.

훈륭 해요… 훈륭해…
창원에 있기 아까운 인재요… 올라 오삼… ㅋㅋㅋ

3 Likes

ㅎㅎ 네, 좀 난해했습니다~
그래도 T-SPIN하고 Mini T-SPIN도 가이드라인 사이트를 참고해서 구현해 놓긴 했습니다.
맞게 되었는지는 잘 모르겠네요 ㅎㅎㅎ

2 Likes

좋게 봐주셔서 감사합니다~ㅎㅎㅎ :smile:

1 Like

지금까지 살면서 받아 본 명절 선물 중 으뜸입니다.

:+1:t3: :+1:t3: :+1:t3:

2 Likes

누군가의 명절 선물이 될 수 있어서 영광입니다!!! :smile:

2 Likes

와 국내에서도 이런 분이 계시는군요 하시는 일은 연구원이신데
작품은 인디 개발자 같은 hip하시네요 클론이라도 할수있다면 좋겠네요

2 Likes

사실 연구원이라기 보다는 주 고객인 연구원님들이 원하시는 것을 만들어 드리는 용역 개발자에 가깝습니다.
거기서 가끔 발생하는 스트레스를 뭐든 재미나게 만들어 보는 것으로 풀어 보려고 노력 중이죠~:slightly_smiling_face:

2 Likes