2014-11-13 8 views
0

C#을 사용하여 브레이크 아웃 게임을 시뮬레이트하는 프로그램을 만들고 있습니다.하나의 그림 상자에서 여러 개의 브레이크 아웃 객체가 있습니다.

저는 벽돌, 패들 및 공을 게임용으로 만드는 방법에 대한 다양한 기술을 배우고 있었지만 Visual Studio의 한 그림 상자에 모든 것을 추가하는 방법에 대해서는 해결할 수 없습니다.

내가 직면 한 가장 큰 문제는 예를 들어 볼을 움직이려면 다음 코드 섹션을 사용하여 '캔버스'를 지워야한다는 것입니다. paper.Clear(Color.White); 기본적으로 그림 상자를 흰색으로 지 웁니다. 그림 상자 안에 새 좌표 (예 : 공의)가 새벽으로 나타나고 이것이 내 문제가 시작되는 곳입니다.

브레이크 아웃 게임의 각 구성 요소는 모두 paper.Clear(Color.White); 코드를 사용합니다. 즉, 예를 들어 패들을 이동하고 벽돌을 표시하고 동시에 공을 튀기려면 프로그램에서 한 번에 하나의 기능 만 수행하기로 결정합니다. 내 자산 중 하나에서 paper.Clear(Color.White);을 제거하면 프로그램이 원하는 방식으로 작동하지 않습니다.

게임 내에서 모든 구성 요소가 완전히 누락되지 않고 동시에 실행되는 방법이 있습니까?

답변

0

간단히 말해서 '레이아웃'또는 '그림'을 중앙 집중식으로 제어하거나 타이머 또는 이와 유사한 방식으로 제어하고 단일 '삭제'작업을 수행 한 다음 모든 구성 요소를 다시 그려야하는 방식을 변경해야합니다. 즉, 각 구성 요소가 캔버스를 지우지 않도록하고, 자체 렌더링에만 관심을 가져야합니다.

위의 방법이 가장 간단합니다. 그 너머에서 한 프레임에서 다른 프레임으로 바뀐 것을 다시 그리는 접근법을 취할 수 있습니다. 특히 게임 캔버스가 크거나 많은 구성 요소가있는 경우 훨씬 더 최적화 된 성능을 낼 수 있습니다. 그러나 그것은 완전히 다른, 그리고 어떤면에서는 더 복잡한 디자인을 필요로합니다. 이전 프레임에서 '이동'또는 다른 수정을 가한 직사각형/사각형을 결정하고 그 직사각형 만 지우고이 사각형의 전체 또는 일부가 다시 그려 지도록 요청해야합니다.

+0

답장을 보내 주셔서 감사합니다. 각 구성 요소보다는 타이머에서 단일 정리를 수행하는 것이 더 합리적입니다. 나는 그것을 시도하고 내가 어떻게 일어나는지 볼 것이다. –

관련 문제