지도를 나타내는 데는 두 가지 방법이 있습니다.
한 가지 방법은 각 사각형이 행성/시스템을 가질 수있는 사각형의 그리드를 나타내는 것입니다. 그런 다음 8 방향 (NW, N, NE, W, E, SW, S, SE) 중 하나에 이웃 한 칸이있을 경우 그 이웃과의 연결이 있음을 지정할 수 있습니다. 그러나 샘플 맵에서 센터 시스템은 북쪽/동쪽 시스템에 연결되어 있지 않으므로 원하는 표현이 아닐 수 있습니다. 그러나 다른 표현을 만드는 데 사용할 수 있습니다.
두 번째 방법은 각 8 각 방향을 따라 이웃에 대한 연결이 있는지 여부를 정의하는 8 비트를 갖는 것으로 각 사각형을 나타내는 것입니다. 아마도 심지어 하나의 연결이 있다면 그 사각형은 그 안에 시스템을 가지고 있습니다. 그렇지 않으면 연결이없는 경우 빈 상태입니다.
은 그래서 예를 들어, 3 × 3 격자, 데이터는 다음과 같습니다
Tile Connections
nw n ne w e sw s se
nw 0 0 0 0 0 0 0 0
n 0 0 0 0 1 0 1 0
ne 0 0 0 1 0 0 0 0
w 0 0 0 0 0 0 0 0
center 0 1 0 0 0 0 1 1
e 0 0 0 0 0 0 0 0
se 0 0 0 0 0 0 0 0
s 0 1 0 0 1 0 0 0
sw 1 0 0 1 0 0 0 0
당신은 훨씬 더 컴팩트 여덟 비트 정수 8 개 개의 부울 값, 또는 배열로 이러한 연결을 나타낼 수 있습니다.
그러면 8 개의 부울 값 (또는 8 비트 정수)을 사용하여 해당 격자 사각형에로드 할 비트 맵의 파일 이름을 쉽게 만들 수 있습니다. 예를 들어,이 체계를 사용하는 가운데 타일은 "부울 값만 사용하는"Bitmap01000011.png 또는 조금 더 짧은 파일 이름을 나타내는 이진 패턴을 나타내는 8 비트 정수의 16 진수 값을 사용하여 "Bitmap43.png").
256 가지 가능한 조합이 있으므로 256 비트 맵이 필요합니다.
"북쪽"연결은 북쪽 타일에 "남쪽"연결이 있음을 의미하지만 비트 맵을 조금 더 세게 선택하기 때문에 타일 당 네 부울/비트로 데이터를 줄일 수 있습니다. 그러나 원한다면 당신은 그것을 해결할 수 있습니다.
또는 각 제곱에서 영 (공백)과 9 개 (완전히 연결된 시스템 원) 사이의 비트 맵을 결합 할 수 있습니다. 투명 .png를 사용해야 만 서로 결합 할 수 있습니다. 단점은 브라우저가 각 사각형 (특히 완전히 연결된 사각형)을 그리는 속도가 느릴 수 있습니다. 이점은 만들 데이터가 적고 웹 사이트에서로드 할 데이터가 적을 것입니다.
지도 자체를 표로 표현하고 필요에 따라 각 셀에 이미지 링크로 비트 맵을 추가합니다.
될지도하는 의사 코드 :
draw_map(connection_map):
For each grid_square in connection_map
connection_data = connection_map[grid_square]
filenames = bitmap_filenames_from(connection_data)
insert_image_references_into_table(grid_square,filenames)
# For each square having one of 256 bitmaps:
bitmap_filenames_from(connection_data):
filename="Bitmap"
for each bit in connection_data:
filename += bit ? "1" : 0
return [filename,]
# For each square having zero through nine bitmaps:
bitmap_filename_from(connection_data):
# Special case - square is empty
if 1 not in connection_data:
return []
filenames=[]
for i in 0..7:
if connection_data[i]:
filenames.append("Bitmap"+i)
filenames.append("BitmapSystem");
return filenames
혹시이 게임을 완료 했습니까? 어딘가에서 찾을 수 있을까요? – LarsH