Saya telah mengerjakan boardgame yang memiliki hex grid seperti board ini:
Karena papan tidak akan pernah berubah dan ruang di papan akan selalu ditautkan ke ruang lain yang sama di sekitarnya, haruskah saya hanya mengkode setiap ruang dengan nilai yang saya butuhkan? Atau haruskah saya menggunakan berbagai algoritma untuk menghitung tautan dan lintasan?
Untuk lebih spesifik, permainan papan saya adalah permainan 4 pemain di mana setiap pemain memiliki kisi hex 5x5x5x5x5x5 (sekali lagi, gambar di atas). Tujuannya adalah untuk mendapatkan dari bawah grid ke atas, dengan berbagai rintangan di jalan, dan masing-masing pemain dapat menyerang satu sama lain dari tepi grid mereka ke pemain lain berdasarkan pengali jangkauan.
Karena kisi pemain tidak akan pernah berubah dan jarak ruang sembarang dari tepi kisi akan selalu sama, haruskah saya memasukkan kode ini ke setiap spasi, atau saya masih harus menggunakan algoritma pencarian pertama yang luas saat pemain menyerang?
Satu-satunya con saya dapat memikirkan untuk pengkodean keras semuanya adalah bahwa saya akan kode 9+ 2 (5 + 6 + 7 + 8) = 61 sel individu. Apakah ada hal lain yang saya lewatkan sehingga saya harus mempertimbangkan untuk menggunakan algoritma yang lebih kompleks?
int numberOfHexagonsInArea(int rows) { int area = 1; while(rows>0) { area += (rows-1)*6; rows--; } return area; }
{X,Y}
Anda jelas dapat pergi ke {X-1, Y}
dan {X+1, Y}
di baris yang sama. Di baris di bawah dan di atas Anda dapat pergi ke {X, Y-1}
dan {X, Y+1}
. Akhirnya, tergantung pada keseragaman Y
, Anda dapat pergi ke {X-1, Y-1}
dan {X-1, Y+1}
atau {X + 1, Y-1} `dan{X+1, Y+1}