Abalone benzeri oyunlar için altıgen tahta mantığını temsil etmenin etkili yolu


11

Abalone oyunu için AI uygulamak zorundayım ve dahil tüm kontroller ve güncellemeler rutinleri çok fazla kaynak harcamadan Java kullanarak tahta mantığını temsil etmenin en iyi yolu nedir merak ediyorum.

Çeşitli listeleri kullanmak daha iyi midir? Hücre nesneleri matrisi mi? Herhangi bir öneri?

resim açıklamasını buraya girin


1
Altıgen ızgaralar için büyük bir kaynak var redblobgames.com Altıgen ızgaralar, koordinat sistemleri ve bunlarda nasıl hesaplamalar yapılacağı hakkında bilmeniz gereken her şeye sahiptir.
Roman Reiner

Yanıtlar:


7

1) Anakartın zaten bir AI'ya besleyeceğiniz sabit bir boyuta sahip olması nedeniyle, onu doğru sayıda hücreye sahip tek boyutlu bir dizi olarak gösterebilirsiniz, burada her bir hücre, yazı tahtası. Bu tek boyutlu diziyi sunum için ekrana eşleştirmek biraz garip olabilir, ancak bu sadece bir kez çözmeniz gereken bir sorundur.

Aynı şey hamlelerin doğrulanması için de geçerlidir; hangi hücrelerin başkalarına bitişik olduğunu söyleyen bir bitişiklik matrisi oluşturabilir veya bitişikliği belirlemek için mantık oluşturabilirsiniz. Her iki durumda da, bir kerelik bir maliyet olacaktır.

2) X ve Y'nin dikey olduğu ızgaralar gibi 90 derece yerine eksenlerin birbirinden 60 veya 120 derece olması dışında her altıgen ızgaranın da iki eksenli bir ızgara olduğuna dikkat edin. (Eski altıgen fayans tahta oyunları, bu hileyi 1, 2, 3 altıgenlerini bir yönde ve diğer AA, BB, CC'yi çarpık, etiketlemek için kullandı.)

Ben (2) kullanan masa oyunları bilgisayar uygulamaları için kaynak koduna baktım ve onlar "altıgenler arasında bir çizgi bulmak" veya "altıgenler arasındaki mesafeyi bulmak" gibi rutinleri sağladı. Bu uzun zaman önceydi, bu yüzden detaylar zamanla kayboldu, ama çok zor olmadığını hatırlıyorum.

(Pisagor'dan ziyade tamsayı bir matematikti.))


1
Yıllar önce gitmek için bir yapay zeka için, 19x19 hücre dizisine ve AI'nın hareketini anlamak için kullandığı hücrelere 192x5 işaretçi dizisine sahiptim.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.