테트리스와 비슷한 게임을 배우는 유전 알고리즘을 코딩하고 싶습니다. 게임 자체는 비교적 간단합니다. 나는 그것의 모든 행동을 아래에 적었다.이 유전 알고리즘을 코딩하는 방법은 무엇입니까?
게임 : 기반
- 그리드, 12x16.
- 그리드에서 블록을 지워야합니다.
- 새로운 블록 행이 5 틱마다 하단에 추가되어 블록을 밀어 올립니다.
- 동일한 유형 블록의 클러스터 만 지울 수 있습니다.
- 게임이 진행됨에 따라 블록 유형의 수가 증가합니다.
- 3 이상의 클러스터 만 지울 수 있습니다.
- 모든 클러스터가 지워짐에 따라
(CLUSTER_SIZE - 3)^2
이 BLOCK_SCORE에 추가됩니다. - 클러스터를 그리드에서 제거한 후 위의 블록이 틈을 메꾸기 위해 아래로 슬라이드하고이 다음에 수평 간격 (맨 아래 줄에)이 있으면 틈의 왼쪽이 이동하여 채 웁니다.
- 이 게임의 목표는 가능한 오래 살아남는 것입니다. 시간은 진드기 또는 당신이 만든 움직임의 수로 측정됩니다.
- 점수 (또는 피트니스)는
(TIME_ALIVE * BLOCK_SCORE)
에 의해 결정됩니다. - 블록이 그리드 상단에 도달하면 게임이 끝납니다.
이 게임의 점수는 수명과 효율성 모두를 포함합니다. 선택을 취소 한 클러스터가 클수록 적합도가 높아집니다.
나는 지금 몇몇 GA를 코딩했지만 지역 경쟁, 수집 목표와 같은 것, 다른 VS 개인을 기반으로했습니다. 내 문제는이 문제에 접근하는 방법을 모른다는 것입니다. 이 새로운 GA의 각기 다른 개인은 입력으로 작업 할 현재 그리드 만 가져야합니다. (적어도 그것이 내가 필요하다고 생각하는 것입니다)
어떻게 이것을 위해 GA를 코딩 할 수 있습니까? 나는 내 인생이 그것을 해결할 수는 없다.
.
모두 감사합니다,
는 스테판 'Ruirize'제임스
귀하의 행동에서 각 개인이 게임을하고 다른 개인과 비교할 수있는 점수를 얻습니다. 문제가 무엇인지 모르겠습니다. –
문제는 코드에서이를 설정하는 것입니다. 어떤 종류의 특성이 필요할 지 등 –
'이동'이란 무엇입니까? 어떤 종류의 블록이 추가되는지 또는 방금 추가 된 블록을 이동할 수 있는지, 또는 무엇을 선택할 수 있습니까? –