2011-12-06 3 views
1

SDL에서 보드 게임을 제작하고 있으며 현재 내가 겪고있는 문제가 있습니다.SDL을 사용하는 보드 게임

저는 1면에 폰이 있고 저는 주사위를 굴립니다. 주사위를 타면서 얻은 가치에 따라 폰은 다른 사각형으로 이동합니다. 저는 온라인에서 SDL 튜토리얼을 읽은 후 폰을 움직일 수 없습니다. 그러나 내가 직면하고있는 문제는 폰을 새로운 위치로 이동시킨 후 오래된 폰이 여전히 이전 위치에 머물러 있다는 것입니다. 인터넷에서 찾은 자습서는 점을 움직이게하지만 이전 점을 덮기 위해 배경을 새로 고칩니다. 하지만 내 게임 보드가 복잡하고 거기에 앉아있는 다른 플레이어의 졸이 있기 때문에 나는 그것을 할 수 없습니다.

SDL에서 새로운 위치에 새 폰을 만들고 이전 폰을 덮지 않고 실제로 폰을 이동할 수있는 방법이 있습니까?

답변

3

스프라이트의 기본 개념 : 스프라이트를 삽입하기 전에 원본 화면 내용의 복사본을 저장합니다. 스프라이트를 제거해야하는 경우 저장된 이전 컨텐츠를 다시 붙여 넣기 만하면됩니다.

올바른 순서 (LIFO)로 모든 객체를 처리해야 작동합니다. 일반적으로 더블 버퍼링되므로 추운 버퍼에서 발생하므로 문제가되지 않습니다.

1

아니요, 코드는 폰이없는 보드 위치를 다시 그릴 수 있어야합니다. 컴퓨터가 폰이없는 모습을 자동으로 재구성 할 방법은 없습니다.

1

게임 코드와 렌더링 코드가 섞여있는 것처럼 들립니다. 하나의 함수 호출로 전체 게임 장면을 다시 그릴 수 있도록 렌더링을 분리해야합니다.이 함수 호출은 게임 상태가 눈에 띄게 변경 될 때마다 사용할 수 있습니다.

+0

네가 맞아.이 프로젝트가 SDL을 사용하는 첫 번째 프로젝트이기 때문에 결코 그런 식으로 생각하지 않았다. 렌더링을 수정하기에는 너무 앞서 갔기 때문에 이전 폰 위치를 사각형으로 은폐하고 새로운 위치에 새 폰을 만들 계획입니다. –

관련 문제