목표 : I은 이미 존재하는 라이브러리 (미로 발생기)에 추가하고 있어요[X] [Y]
. 내가 뭘 하려는지 미로를 (메모리에 부분적으로 하드 디스크에) 저장하는 새로운 방법을 정의하는 것입니다.
질문을 보려면 질문 단락을 건너 뛰십시오. 완전히 다른 접근법을 제안 할 수도 있기 때문에 몇 가지 추가 정보를 추가했습니다.
현재 상황 : (메모리) 미로 생성기를 저장 미로는지도 함께
현재의 방법. 맵에는 미로의 픽셀 행이 각각 포함 된 InnerMapArrays가 포함되어 있습니다. 상의 올바른 배열이어서 (X)
public override InnerMapArray this[int x]
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get
{
return innerData[x];
}
}
는 [y]가 호출을 반환하는 방법이있을지도 클래스
… //Code that creates maze map
map[x][y] = true;
: 승점이 같은 미로에 기입/판독 할 수있다 innerData는 궁극적으로 올바른 픽셀을 반환하는 유사한 메서드도 포함합니다.
문제 :
내가 메모리와 디스크에 미로의 부분에 미로의 일부를 저장하는 새로운지도 유형을 생성한다 수행 할 작업으로 돌아 간다. 예를 들어 라인이 아닌 100x100 픽셀 세트로 미로 영역을로드하려고합니다.
지도/InnerMapArray 구조의 현재의 구현이 허용되지 않음을 (픽셀 X = 50, Y 50는, 예를 들어 변경 = 때 적색 부분 아래 이미지에로드한다). 내가 원했던 것은 한 가지 방법으로 전달 된 X와 Y를 실제로 얻는 방법입니다. 나는 그 가능성이 일할 수있는 생각은 무엇 는 다음 (하지 작업 코드)입니다 :
public override InnerMapArray this[int x][int y] { get { //load a certain 100x100 part of the maze in memory and set it as current //so while generating the maze pixels near the currently generated/read pixel //can be read really fast while others far away won't use any memory } }
는 슬프게도 C# 컴파일러가이를 허용하지 않습니다. 누구든지이 문제를 '좋은'방식으로 해결할 수있는 단서가 있습니까? 당신이 원하는 것을 달성하기 위해
이것은 해결책이 될 수도, 그것은 여전히 기존의 코드의 기본 클래스를 편집해야 의미합니다. 원래 내가하지 않기로 계획 한 것. 이것이 유일한 방법이라면 나는 그것이 내가해야 할 일이라고 생각한다. – Devedse
나는 당신의 솔루션을 사용하기로 결정했고, 현재의 솔루션에 비해 실제로 성능이 향상되었다. 도와 주셔서 감사합니다 :). – Devedse
언제든지 환영합니다. P. – ecampver