목록Software Projects/C# (7)
펑션과 코딩의 행방불명

전에 나는 중력 시뮬레이터를 만든적이 있었다. 하지만 내가 만든건 지들끼리 빙빙 돌면서 춤을 추거나 스윙바이가 엄청 심하게 일어나는 현상이 매우 많았다. 그래서 나는 아는 지인의 블로그를 보고 내가 실패한 원인을 알게돼서 다시 만들어보았다. 먼저 행성(물체)의 데이터를 파악하기 위해 사용자 지정 컨트롤로 이렇게 만들었다. 바탕이 반투명한 이유는 겹쳐있을때 뒤에있는 애들을 보기 위함이다. 보면 알겠지만 확인해야할 값들은 질량, 속도, 위치이다. void UpdateDebugData() { DebugViewer.Text = "[ mass ]\n"; DebugViewer.Text += $"{mass}\n"; DebugViewer.Text += "[ velocity ]\n"; DebugViewer.Text +=..

난 옛날에 어떤 유튜버의 포트폴리오를 구경하던중, 어떤 사진을 원으로 쪼개서 모자이크하는 영상을 보았다. 그걸 보고 예뻐서 무작정 C#으로 따라 만들어 봤다. 알고리즘, 유저가 입력한 묶을 픽셀의 갯수가 있는데, 거기서 정사각형 모양으로 묶고 그 픽셀들의 평균 RGB값을 구할것이다. 이렇게 가로 6픽셀, 세로 3픽셀인 사진이 있다. 만약 묶을 픽셀의 갯수를 3개로 잡는다면 저 검은색의 3x3 사각형 안에 있는 픽셀들의 RGB값들을 평균으로 해서 한가지 생상으로 나타낸다. 그렇다면 이 사진은 이렇게 초록색 박스와 노란색 박스로 묶이는것이다. 이런식으로 알고리즘을 구현했다. 내가 설명을 잘 못하기 때문에 코드로 봐보자. 어쨋든 나는 그 영상에 나와있는 사진중에 고흐의 작품을 모자이크 해봤다. 좀 하예졌지만 ..

오늘은 내 바탕화면을 담당하는 주기율표를 만들었다. 이 주기율표는 WallPaper이라는 앱에서 웹으로 제작돼었다. 해당 원소를 클릭하면 그 원소의 전자 배치를 보여주고 전자들이 원자핵을 중심으로 회전한다. 먼저 모든 하나의 원소 블록은 이름, 원소 기호, 원소 번호로 구성되어 있다. 하나 하나씩 가져오기 귀찮으니까 파이썬으로 웹 소스에서 값들을 추출해준다. 너무 힘들었다. 이렇게까지 만들었다. 그 다음으로 전자 배치를 만들어야하는데 누르면 나오게하는건 귀찮아서 걍 상단에다가 고정할거다. 이런식으로 말이다. (Na) 이런식으로 원자 번호만큼 전자가 생기고 색깔이 바뀐다. (Al) 발로란트하면서 만들다보니까 한 10시간동안 재밌게 만들었다. Rotate를 값을 변환하는걸 학습하는 좋은 계기가 되었다. ht..

어제 할게 없어서 걍 물리엔진을 만들어봤다. 지금은 5개의 객체가 있지만 처음은 빨강이와 파랑이 두 객체로 테스트를 시작했다. 각 객체에 질량, 속도 값을 넣어주었다. Move함수는 현재 x,y 좌표에 속도값을 더하는 방식으로 하였다. 0.1초마다 다음 프레임 변화를 주기위해 Move함수는 DispatcherTimer로 실행하게 하였다. 사각형의 최소, 최대점으로 충돌을 감지하여 반환하는 함수이다. Crush함수를 통해 충돌이 감지되면 운동에너지 서로 전해지는 방식으로 충돌을 계산하였다. 렉이 좀 걸릴줄 알았는데 생각보다 안 걸려서 신기했다. 앞으로 액체의 파동과 같은 시뮬레이션을 만들어 볼 생각이다.

2021년 6월 21일쯤 나는 유니티를 배우고 있었다. 그러다가 나의 첫번재 프로젝트를 만들게 되었다. 포토샵에서 총을 간단하게 만들었다. 내가 처음으로 만든 총이지만 잘만들어져서 자랑하려고 한번 써본다. 먼저 이 게임은 플레이어(파란 사각형)를 W,A,S,D로 움직이게 하고 마우스 커서가있는곳으로 총구를 향하게 한다. 좌클릭은 일반 총알, 우클릭은 샷건이다. 대부분의 슈팅게임이 그렇듯이 적을 죽이면 점수를 얻고 적에게 맞으면 피가 닳는다. 빨강이는 나를 잡으러 쫓아오고 분홍이는 멈춰서 총만 쏜다. 총알 끼리 만나면 총알이 터진다(?). 생각 보다 쉬워보여도 응근 난이도 있다. 적을 죽이면서 총알을 피하는게 쉽지만은 않다. 학교로 가져가서 친구들한테 보여줬는데 인기가 꽤 높아서 뿌듯했다. 사운드가 없다는..

2021년 4월 18일 코로나19로 학교를 안갔다. 매일 온라인 수업을 들으면서 깜빡하고 수업을 안들은게 일주일에 한두번 있었다. 그래서 그런걸 확인하기 위해 시간표를 만들어봤다. 이런식이다. 세로줄로 첫번째부터 월,화,수,목,금 요일이다. 현재 요일에는 노란색으로 표시되고 매주 월요일 마다 색깔이 리셋되게 만들었다. 좌클릭은 파란색, 우클릭은 빨간색, 마우스 휠은 과목 수정이다. 나는 주로 파란색은 '다 들었.'로 썼고 빨간색은 '듣다 말았다'로 사용했다. 내 컴퓨터가 블루스크린이 자주 떠서 위치 이동, 색깔 변경, 과목 변경, 프로그램 종료 시 자동저장되게 만들었다. 확실히 이걸 만들고 깜빡하는 일이 없어졌다. 내가 만들었지만 실용적이다. https://github.com/Function1790/Ch..