2012-01-26 4 views
6

비즈니스 환경에서 일하기 때문에 더 이상 좋은 콘솔을 코딩하거나 사용하지 않아도됩니다. 내 일은 반복적이어서 정말 도전적이지 않습니다.어레이 할당 스네이크

C# 콘솔에서 뱀 게임을 작성하여 직접 도전하기로 결정했습니다. 소년이 내 두뇌 활동을 했어. 하루 하루를 열심히 생각할 필요는 없지만 프로그래밍 기술이 좋아지지 않는다고 느꼈습니다.

그래도 문제가 있습니다. 내가 취한 기본 접근법은 뱀 클래스와 음식 클래스를 만드는 것이 었습니다. 뱀 클래스는 배열을 사용하여 모든 좌표를 저장 한 다음 드로잉 클래스가 화면에 그리는 좌표를 결정합니다.

문제는 여러분이 뱀을 움직이면 배열이 채워집니다 (성능면에서 최대 250). 배열의 끝에 도달하면 마지막 몇 개의 좌표를 임시 배열에 복사하고 원래의 어레이로 옮기고 temp coords를 주 어레이로 다시 복사하십시오.

문제는 원래 배열에 x 좌표를 다시 복사하는 것입니다. 필자는 수동으로 테스트하기로 결정했으나,이 솔루션을 사용하면 화면에 나타나는 불쌍한 뱀이 화면에 표시되지 않게되었습니다.

프로그래밍 방식으로이 작업을 수행하려면 어떻게해야합니까?

spoints[4, 0] = stemp[249, 0]; 
spoints[4, 1] = stemp[249, 1]; 
spoints[4, 2] = stemp[249, 2]; 

spoints[3, 0] = stemp[248, 0]; 
spoints[3, 1] = stemp[248, 1]; 
spoints[3, 2] = stemp[248, 2]; 

spoints[2, 0] = stemp[247, 0]; 
spoints[2, 1] = stemp[247, 1]; 
spoints[2, 2] = stemp[247, 2]; 

spoints[1, 0] = stemp[246, 0]; 
spoints[1, 1] = stemp[246, 1]; 
spoints[1, 2] = stemp[246, 2]; 

spoints[0, 0] = stemp[245, 0]; 
spoints[0, 1] = stemp[245, 1]; 
spoints[0, 2] = stemp[245, 2]; 

누군가가 정말로 코드를 파고 드는 경우 여기에 전체 게임을 게시하는 데 정말로 신경 쓰지 않아도됩니다.

+3

입력 된 컬렉션/사전 대신 배열을 사용하면 훨씬 어려워집니다. –

답변

1

점을 그리지 않는 '일반 점'에 배열을 사용할 것을 고려하면 Snake 클래스에 관리 가능한 부분이 있으므로 SnakePart과 같은 다른 클래스를 만들어야합니다.

사용자 정의 배열 클래스를 만들 수도 있으므로 그리드의 각 부분에 값이 hasSnakePart이고 조작 할 수 있습니다.

+0

Hyp : 내 뇌를 상하게하고있다. 지난 7 년 전에 고등학교에서 프로그래밍 한 마지막 시간 이었기 때문에 나는 그것을 아주 기본적인 LOL이되기를 원했다. – Batista

+0

아,하지만 재미있는 부분이 아니야! 뇌 활동을 만들고 흥미롭게 만드십시오! – hyp

+0

사실,하지만 아기 단계 :) 다음은 AI 뱀을 만들어 게임이 재미 있고 뱀이 다른 뱀을 내리는 등 독을 쏘게하는 것입니다 – Batista

3

배열에 잘못된 데이터 형식이있는 것 같습니다. 대신 엔트리를 이동할 때 더 많은 유연성을 허용하므로 List을 사용하는 것이 좋습니다.

+0

감사! 목록을 사용 하겠지만 당분간은 프로그래밍 방식으로 그 방법을 알고 싶습니다. – Batista

+3

더 좋음 : 큐를 사용합니다. –

1

배열의 '앞'에 새 좌표를 추가 할 때 '뒤로'에있는 좌표를 제거하면됩니다. 그래서 기본적으로, 일종의 FIFO 타입 콜렉션입니까? 당신은 C#에서 대기열을 사용할 수 있습니다. 이 기사를보고 어떤 도움이되는지 확인하십시오! http://www.dotnetperls.com/queue.

건배,
Chris.

+0

CHris, 모든 점을 플로팅하고 있지만 모든 드로잉 클래스는 모든 점을 제외하고 모두 드로잉합니다. iteration.I는이 뱀이 아무 꼬리도 가지지 않을 것이기 때문에 나는이 길로 가지 않았다. 그리고 lol - edit - 미안 나는 당신의 논리를 지금 본다, 나는 단지 양을 추적하는 var를 가져야 할 것이다. 뱀이 가지고있는 부분. – Batista