전복과 같은 게임을위한 6 각형 보드 로직을 표현하는 효율적인 방법


11

Abalone 게임용 AI를 구현해야하며 관련된 모든 확인 및 업데이트 루틴에 너무 많은 리소스를 낭비하지 않고 Java를 사용하여 보드 로직을 나타내는 가장 좋은 방법이 무엇인지 궁금합니다.

다양한 목록을 더 잘 사용합니까? Cell 객체의 행렬? 어떠한 제안?

여기에 이미지 설명을 입력하십시오


1
redblobgames.com 에는 6 각형 그리드에 대한 훌륭한 자료가 있습니다. 6 각형 그리드, 좌표계 및 계산 방법에 대해 알아야 할 모든 것이 있습니다.
Roman Reiner

답변:


7

1) 보드에는 고정 크기의 크기가있어 AI에 공급할 것이므로 올바른 수의 셀이있는 1 차원 배열로 나타낼 수 있습니다. 여기서 각 셀은 판. 프레젠테이션을 위해 1 차원 배열을 화면에 매핑하는 것은 약간 이상 할 수 있지만 한 번만 해결하면되는 문제입니다.

이동 확인에도 동일하게 적용됩니다. 어떤 셀이 다른 셀에 인접 해 있는지 알려주는 인접 행렬을 만들거나 인접성을 결정하는 논리를 생각해 낼 수 있습니다. 어느 쪽이든, 그것은 일회성 비용입니다.

2) X와 Y가 수직 인 그리드와 같이 90 도가 아니라 축이 서로 60 또는 120도 떨어져 있다는 점을 제외하고 모든 육각 그리드도 2 축 그리드입니다. (오래된 육각 타일 게임은 한 방향으로 헥스 1, 2, 3, 다른 방향으로 비스듬히 AA, BB, CC로 레이블을 지정하는 데이 트릭을 사용했습니다.)

나는 (2)를 사용하는 보드 게임의 컴퓨터 구현을위한 소스 코드를 살펴 봤고, "헥스 사이의 라인을 찾는다"또는 "헥스 사이의 거리를 찾는다"와 같은 루틴을 제공했다. 그것은 오래 전에 일어났기 때문에 세부 사항은 때때로 잃어 버렸지 만 너무 힘들지는 않았다는 것을 기억합니다.

(피타고라스보다는 정수 수학이었습니다.;))


1
몇 년 전 인공 지능을 위해 AI에는 19x19 배열의 셀과 192x5 배열의 셀에 대한 포인터가 있었고 AI가 그 움직임을 알아내는 데 사용했습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.