지금은 방향키누르면 움직여서 별 먹는겜인데
이걸 발전시켜서 스네이크 게임을만들수있는진 모르겠지만 해보려고하는데
근데 한번 누르면 계속 자동으로 움직이게하고싶은데
구현방법을 잘 모르겠네요..
일정 시간마다 움직이게 하려고해도
일정시간마다 행동을 수행하게하는걸 어떻게하는지 모르겠어요..
time.sleep(1) 이러면 그냥 프로그램 자체가 1초동안 자버리던데
구조자체가 다른걸까요 snake게임은
다시만들어야하나
지금은 방향키누르면 움직여서 별 먹는겜인데
이걸 발전시켜서 스네이크 게임을만들수있는진 모르겠지만 해보려고하는데
근데 한번 누르면 계속 자동으로 움직이게하고싶은데
구현방법을 잘 모르겠네요..
일정 시간마다 움직이게 하려고해도
일정시간마다 행동을 수행하게하는걸 어떻게하는지 모르겠어요..
time.sleep(1) 이러면 그냥 프로그램 자체가 1초동안 자버리던데
구조자체가 다른걸까요 snake게임은
다시만들어야하나
코드는
https://github.com/2inza/Basic_Games
에 있는 스타 폴더에잇어요 사실 깃헙자체가 익숙하지않아서 이렇게올리는게 맞는건지도 모르겠네요
쓰레드 쓰는게 깔끔할걸... 메인에서 타이머 쓰레드를 만들어서 걔는 시계보면서 지정시간이 지났으면(매 1초라 치면 58초에 마지막으로 일한걸 58.2초에 마쳤으면 59초가 지났는질 체크) 할일을 하고 안지났으면 다시 0.1초 잠드는거 반복하게 만들어두고
화살표 누르면 제자리네서 팩맨이 방향만 돌아가고 1초 지나면 그때 팩맨 방향대로 앞으로 한칸 전진하게 하면 될거고.. 물론 데이터 접근할때 lock 쓰는건 빼먹지 말고
데이터접근할때 lock을 쓴다는게 무슨말인가요..?
쓰레드 안써봤으면 구글링해보면 왜 그걸 해야하는지 나올거.. 예를들어 위치에 접근하면, 내가 위치에 접근해서 그리는 사이에 위치가 새 위치로 바뀐다던가 해서 팩맨이 두번 그려진다던가 할수 있으니까 lock을 걸어서 그림을 다 그리는동안 타이머 쓰레드가 위치를 바꾸지 못하게 해야한단거.
감사합니다 검색도해보고 써주신내용도 잘읽어볼게요
제 생각은 스레드 쓰지말고, while(true) 나 아니면 그에 상응하는걸로 while 문 돌려서, 그 안에 Input 받는거, 오브젝 Update 하는거, 그리고 오브젝트들 렌더링하는거 이렇게 세 부분으로 나눈 뒤에 Update 할 때 뱀에 상태 저장한걸로 쭈욱 이동시키게 하면 되지 않을까 생각함.
아직 프로그래밍에 익숙하지않은 2개월차 뉴비라서.. 무슨말인지 모르겠네요.. pygame 이용해서 while True 한뒤에 esc키나 quit 키 입력되면 false로 바꾸게해서 종료시키게 했는데 이 구조에 그걸 넣으시라는 말씀인가요?
ㅇㅇ 넴
코드를 보시면알겠지만 인풋도 받고 오브젝트 업뎃을 하기도하는데 일정 시간마다 오브젝트 업뎃을 하는걸 어떻게하는지 모르겠다는 말이였어요. time.sleep(n) 하면 그냥 n초동안 프로그램이 통째로 자버리더라고요. 그 부분만 잠드는게아니라
음... sleep 말고, while(true) 로 계속 돌 되, 프레임 처리 전에 현재 이전 프레임에서 몇초가 지났는가 (대개 0.016초) 확인하는 걸 루프 구조를 만들어서, 몇초가 지나면 서브 루프 구조에서 빠져나와 Input => Update => Render 하게끔 해보세요.