개발하면서 심심하고 막혔을때 해결법

자경·2024년 10월 15일
0
post-thumbnail

프로젝트 같지도 않은 프로젝트를 하며 정말 막히고 생각이 잘 안나는 경우가 많았는데 너무 좋은 방법인 거 같습니다.

특히 투머치 토커라면 더욱 좋은 방법일듯 싶네요.

그냥 나는 딱 해당 블록에 해당하는 칸에 들어가면 
플레이어가 더 이상 못가게 막히는 거면 좋겠음

이것도 여러 방식이 있을 거 같은 데

후보 1
1. 해당 플레이어가 있는 좌표를 통해 블록의 length값 추출(x,y)
2. 해당 블록 값으로 접근하여 블록이 존재하는지 확인
3. 있을 시 멈추고 갈 수 없게 만듬(개별로 정지하게 한다던가하는 형식)
이점 : gap까지 멈춰지지 않음 정밀함
단점 : 블록이 존재하는지 확인하는 메서드가 만들기 어렵다. 

자 두번째 안건 class내에 위치하는 블록이 정말 존재하는지 확인할 수 있는 메서드를 어떻게 만들까?
해당 메서드의 목적 : 플레이어가 블록과 겹치치 못하게 하는 것(나는 그 방법으로 플레이어가 블록에 근접하면 블록에서 감지를 통해 겹쳐지지 못하도록하는 방법을 택함)
사실 위의 방법으로는 layout 계층을 같은 것으로 써서 접근하지 못하게 하는 것에 대해서도 찾을 수 있음 

but... 일단 원래 목표대로 하자. 할 ㅅㅜ 있다 ㅅ!바거

1. 좌표값을 통한 접근(인자 : player의 좌표)
좌표값을 통해 겹쳤는가? 를 확인. but이러면 Action class에 직접 들어가야할듯(움직이기 전에 판단해야하니까) 실행하는데 오래걸리고 나중에 뜯어고칠 확률도 있어보인다. 

2. 이외 클래스 canvus etc. 
대량 뜯어고치기 예상. 그냥 이 코드 전체의 구조를 바꿔야함. 게다가 난 frame 밖에 모르는 근시안적인 사람이다. ㅂㄱㄴ

3. 그냥 아예 player의 메서드로 만드는 것
근데 이것도 현실성이 없긴하다.^^

메서드 고민임.....
아니 있잖아
하 
ㅠㅠ
사실 좌표값을 통한 접근도 방법이 대따 많음
그냥 x,y값 비교도 가능하고, 아니면 블록의 인덱스를 구해서 가중치를 더해가지고 플레이어의 접근을 막을 수도 있단말야
그래서 xy값 비교를 하려했지? 

그래서 비교를 하려는데 에러사항이 생김
만약에 플레이어 좌표 (284,216) || 벽돌 (230,220) - 왼쪽 첫 벽돌로의 이동, X좌표로 이동했고 Y좌표는 전혀 바뀌지 않음 이런 경우 Y좌표만 비교하면됨
이의 반대의 경우 Y좌표이동(상하이동)을 할 경우 X좌표는 변하지 않음 
즉 Action class에 해당 움직임마다 이를 판별해주면 되겠다 라는 계산이 나옴. but... 시간복잡도 개오진다.(최적화 필요하스무니다.)



음 결국 만들었다. Brick class 속에 있는 메서드는 만듬. 
이 메서드는 어떻게 돌아가냐면 class의 속성인 flag를 확인하는 형식으로 이루어짐. flag가 false이면 brick은 없는 것으로 간주하고 이동해도된다. 이런식의 논리임
그러나 문제 클래스를 사용하는 입장에서는 Brick는 객체참조배열로 되어있으므로 brick[][]형식으로 접근해야함. 그러기에 현재 있는 좌표에 따라 인덱스의 값을 구해야할듯
예를 들어 지금 플레이어가 위치하는 곳은 3열 3행이다. 음 괜찮네 아무것도 없잖아? 형식. 만약 음 이동한 후에 3열 2행이잖아? 가만있어보자 음;  brick[3][2].getflag()가 true네? 그럼 벽돌이 있는거잖아. 벽돌에 박치기 할순없지ㅋㅋ  멈춰애겠다.ㅋㅋ 이런식의 작동을 원한다.


여기서 겁!나 큰 문제1 띠로리ㅠㅠ 

메모장을 통해 혼자서 대화하기ㅎㅎ
정말 신기하게도 생각 정리가 된다... 그래서 너무 재밌다

0개의 댓글