ฉันต้องติดตั้งเกม AI สำหรับAbaloneและฉันสงสัยว่าอะไรคือวิธีที่ดีที่สุดในการแสดงตรรกะบอร์ดโดยใช้ Java โดยไม่ต้องสิ้นเปลืองทรัพยากรมากเกินไปในการตรวจสอบและอัพเดทตามปกติ
ใช้รายการต่าง ๆ ดีกว่าไหม? เมทริกซ์ของวัตถุเซลล์? ข้อเสนอแนะใด ๆ
ฉันต้องติดตั้งเกม AI สำหรับAbaloneและฉันสงสัยว่าอะไรคือวิธีที่ดีที่สุดในการแสดงตรรกะบอร์ดโดยใช้ Java โดยไม่ต้องสิ้นเปลืองทรัพยากรมากเกินไปในการตรวจสอบและอัพเดทตามปกติ
ใช้รายการต่าง ๆ ดีกว่าไหม? เมทริกซ์ของวัตถุเซลล์? ข้อเสนอแนะใด ๆ
คำตอบ:
1) เนื่องจากบอร์ดมีขนาดคงที่ที่คุณเพิ่งจะป้อนเข้าสู่ AI อย่างไรก็ตามคุณสามารถแทนมันเป็นอาเรย์หนึ่งมิติที่มีจำนวนเซลล์ที่เหมาะสมโดยที่แต่ละเซลล์แสดงพื้นที่บน คณะกรรมการ. การทำแผนที่อาเรย์แบบหนึ่งมิติไปที่หน้าจอเพื่อนำเสนออาจเป็นเรื่องแปลก แต่ก็เป็นปัญหาที่คุณต้องแก้ไขเพียงครั้งเดียว
เช่นเดียวกับการตรวจสอบความเคลื่อนไหว; คุณสามารถสร้างเมทริกซ์ adjacency ที่บอกว่าเซลล์ใดติดกับเซลล์อื่นหรือเกิดขึ้นกับตรรกะในการกำหนด adjacency ไม่ว่าจะด้วยวิธีใดก็จะเป็นค่าใช้จ่ายครั้งเดียว
2) ขอให้สังเกตว่าทุก ๆ ตารางเลขฐานสิบหกนั้นยังเป็นตารางสองแกนยกเว้นว่าแกนเป็น 60 หรือ 120 degress จากกันและกันแทนที่จะเป็น 90 องศาเหมือนกริดที่ X และ Y ตั้งฉาก (บอร์ดเกมแผ่นฐานสิบหกเก่าใช้เคล็ดลับนี้เพื่อติดป้ายฐานสิบหก 1, 2, 3 ในทิศทางเดียวและ AA, BB, CC ในอีกทิศทางหนึ่งเอียงทิศทาง)
ฉันได้ดูซอร์สโค้ดสำหรับการใช้งานคอมพิวเตอร์ของเกมกระดานที่ใช้ (2) และพวกเขาให้รูทีนเช่น "ค้นหาเส้นแบ่งระหว่าง hexes" หรือ "ค้นหาระยะห่างระหว่าง hexes" เมื่อนานมาแล้วดังนั้นรายละเอียดจึงสูญหายไปตามเวลา แต่ฉันจำได้ว่ามันไม่ยากเกินไป
(มันเป็นเลขจำนวนเต็มมากกว่าคณิตศาสตร์แบบพีทาโกรัส;))