[KOSTA] javascript 기반 풀스택 과정 - C# .NET 프로젝트

U U·2025년 5월 27일

[ KOSTA ]

목록 보기
7/9
post-thumbnail

이번 프로젝트는 C# .NET 프로젝트이다.

분명 javascript 풀스택 과정이라면서 왠 C#?이라는 생각이 들 수 있다.

취업하기 위해서는 C#을 해야한다.

그렇다. 취업하려면 불모지를 개척해야한다.

왜냐면 JS는 가르쳐주는데도 많고, 할 줄 아는 사람도 많다. 솔직히 지금 JS 인력은 넘쳐나다 못해 과포화라 레드오션인 상태이다.

그러나 C#은 상대적으로 수요에 비해 공급이 적다고 볼 수 있다. 취업에 더 유리한 점을 가지고 있다는 것이다.
게다가 C# 수업은 어디가서 듣기 힘들다.

어차피 완벽하게는 아니지만 얼추 JS를 알고 있던 나는 새로운 걸 배운다는 생각으로 들었고, 한번쯤 데스크탑 앱을 만들어보고 싶었던 욕구가 있었기 때문에 강사님 덕분에 이 과정을 듣길 잘 했다는 생각을 했다.

🧱네모네

이번에 기획한 프로젝트는 네모로직이다.

네모로직은

사각형에 각각 적혀 있는 숫자를 보고 숨어 있는 숫자를 예측해서 지우고 그려 나가면서 그림을 만들어 가는 게임

이라고 한다.

어렸을 때, 네모로직을 너무 좋아했어서 책까지 사다가 풀었던 추억이 있다. 나중에는 냄비 받침이 되어 최후를 맞이했지만

그래서 네모네는 나중에 만들어 볼 프로젝트 목록중에 하나로 기재되어있었다.

🧩구성

🏠메인

실행하자마자 이게 뭐지 하고 당황스러울 것이다.
기능 구현하느라 차마 UI에 신경쓰지 못해서 그런 것이다. 수치스럽다. 흑흑

기존에 플레이 했던 기록을 보여주는 곳이다.
IDE에서 최근 열었던 파일을 생각하면 된다.

🔲네모 만들기


네모 로직을 만들 수 있는 폼이다.

원래는 40x40도 지원 가능하게 했었으나, 네모칸의 크기가 점점 작아져서 35x35로 마무리 했다.

🖼️🔄이미지 변환

이미지를 변환하여 간편하게 네모로직을 만들 수 있는 기능이다.

슬라이드를 통해 조절 할 수 있다.

이 기능에 대한 원리는 영상처리의 표본화와 이진화를 이용하여 만들었고 아래의 과정을 거쳤다.

  1. 이미지를 10x10 ~ 35x35 픽셀로 압축하여 표본화
  2. grayscale로 변환 ➡️ 흑백화
  3. 이미지를 흑, 백만 남기는 이진화

🎮플레이 화면

2차원 배열을 통해 저장해놓았던 네모로직 정보를 불러와 숫자를 생성하는 기능을 만들었다. 이 기능은 바로 다음에 설명 할 PDF 내보내기에도 적용된다.

  • 왼쪽 클릭 : 선택, 취소
  • 오른쪽 클릭 : 제외 취소

플레이 한 정보는 SQLite에 저장되어, 나중에 이어서 플레이 할 수 있도록 해놓았다.

📄📤PDF 내보내기

네모로직을 만들었으면 현실에서도 즐길 수 있어야하는거 아닌가.

그래서 프린트 할 수 있도록 PDF 내보내기를 기능을 만들었다.

다만 PDF를 내보내기 하는데 영 좋은 방법이 떠오르지 않았다.
그래서 기능은 구현하고 싶으니 어쩔 수 없이 무식한 방법을 택했다.

바로 백그라운드에 플레이 화면을 띄우고 캡처해서 PDF로 만드는 것이다.

어차피 숫자가 나오는 기능도 만들었겠다, 이미 플레이한 기록이 있다면 임시적으로 초기화하고 캡처만 하고 닫으면 되는 것이다.

사실 캡처용도로 사용 할 폼을 또 만들기에는 시간이 너무 부족했다.

🙌결과

github: https://github.com/HYK-Nov/nemone

🧵🏁프로젝트를 마무리하며

내가 여태까지 JS, 파이썬은 이미 여러번 경험을 해봐서 그런지 프로젝트 자체는 별 문제가 없었는데, C#은 숙달되기 힘들어 우여곡절이 많았다.

이래서 하는 사람이 별로 없었던건가...

디자인을 하던 몸이다보니, 포토샵 시스템에 익숙해져있던 나머지 왜 WinForm은 그리드와 스냅이 안되고 마땅한 UI 라이브러리도 없어서 UI 커스텀을 하려고 하는데 이 조차 대공사를 해야 한다는 시련을 내려줬는가 하고 절망했다.

게다가 PDF 내보내기에는 버그가 하나 자리잡고 있는데, 바로 덮어쓰기 하면 애플리케이션이 멈춘다는 것이다.

라이브러리 자체의 버그인지 모르겠다만 머릿속에 들어있는 지식이 별로 없어서 그런가 이건 도저히 건드릴 엄두가 안 났다.

이번 프로젝트를 만들면서 버킷 리스트를 이루었다는 기쁨과 겉핥기가 이정도인데, 앞으로 C#을 깊게 파고들었을 때의 걱정이 들었다.

그래도 한창 작업할 때는 재미있었으니 괜찮지 않을까?

profile
언제까지 할 건데

0개의 댓글