별건 아니고, 할짓이 없더라.
게다가 바로 요 몇일 전에 (그저께였나 어제였나) 세그먼트 설계 끝낸 기념으로 엔밥 맵에 장난 치고 놀거 없나 싶었는데
그냥 로켓 카운터 구현해서 장식해놔야지 싶더라.
근데 생각해보면 로켓이 몇발 날아갔는지 낸들 알 도리가 있냐 하는건데
필요할 사람 있을까 싶어서 설명들어간다. 필요 없음 말던가.
벨트에 물류량을 읽어서, 다른거 말고 '우주팩 다 빠졌는가'만 체크하려고 전선 땡겼다.
우주팩이 다 빠지면, 투입기는 인공위성을 집어넣어서 사일로가 우주팩을 싸게 만든다.
여기가 중요함 ㅇㅇ
인공위성을 당연히 한번에 한개 줍는데, 로켓 한발당 인공위성을 한개씩 넣는거다.
그러니까 로켓 날리기전에 반드시 인공위성을 줍게되겠지. 오토 런치 걸어놔서 사팩 딸리면 알아서 우주팩 싸제끼니까, 여기에 대해서는 막힘이 없다.
그리고 바로 이 인공위성의 개수를 '읽는다'.
한개 주웠다 떨구고, 한개 주웠다 떨구고 하는게 뭐 대단하냐 하겠지만, 핵심은 여기서부터.
미분기 설계를 응용하면 '상승 엣지 트리거'로 쓸수있다는 부분이다.
그러니까, 정확히 '집었을때'1을 출력하고, 내릴때는 -1을 출력한다.
변화량이 양일경우, 그러니까 타이밍상으로는 '투입기가 위성을 집었을때'에 적분기를 사용해서 델타함수 출력을 단위계단형태로 적분할거다.
하지만 입력값 중 음의 값은 걸러야 되므로 필터 기능을 겸한 버퍼를 하나 둔다. 조건은 단순히 '양일때 입력값을 출력'으로 설정한다.
피드백을 걸어둔 적분기이다. 델타 함수는 적분하면 단위 계단 함수가 되고, 이 값이 보존되어서 임펄스 입력을 계속 누적한다.
이걸로 기본적인 설계는 끝이다.
프리셋 넣기 귀찮아서 바로 조금전까지는 그냥 신호 입력기가지고 숫자 때려 박아 넣었었는데, 좀 등신같아 보여서 미리 카운터에 프리셋을 먹여놨다.
숫자를 넣는 방법이 지금 한 설계와 거의 똑같다. 단지, 클럭을 손으로 먹이기 전에 대충 어림잡아 가까운 값 정도까지 적분기만 돌려서 카운트 시키고, 미세조정할 부분에서 엣지 카운터를 이용하여 한클럭씩 손으로 먹여주면 숫자를 때러넣을수 있다.
이 맵에서 날린 인공위성이 160개 정도다. 목표는 9999개 숫자 다채운뒤에 한발 더날려서 오버플로우 시키는것.
보다시피 사팩이 벨트에서 다 빠지고 나서, 먼저 인공위성을 하나 카운트 하고, 그다음에 로켓이 발사된다. 실제 로켓 카운터가 인공위성 개수를 집계하는 타이밍은 로켓이 맵에서 사라졌을때부터. 즉, 시스템에서 로켓을 세는것보다 먼저 인공위성 개수를 센다.
암튼 이러면 로켓 몇발 날렸는지 전광판에 표시하는게 된다.
씨발 테스트 하는데 시간 존나 잡아먹었네 이제 그냥 냅두고 방치플레이 해야겠다.
처음 보이는 사진 몇장은 처음에 테스트하다 설계가 망한건데, 파일 잘못올리는 바람에 뭐가 뭔지 몰라서 지우지를 못하겠네 옘병...
그냥 투입기 펄스 읽기 하지 않을까 했는데 엣지 디텍터를 만들었네 우와아? 나는 엣지디텍터 그거 예전에 자력으로 구현해보려다가 머리딸려서 찾아서 만들었었는데
ㄴ 가끔 느끼는 거지만 가장 유용한 도구는 수학인거 같더라 ㅇㅇ