چند نکته هست اول اینکه فقط سطر و ستون بعد کافی نیست. سطر جلویی یه ستون قبل و یه ستون بعد را باید بررسی کنید. چون هر مهره میتونه به صورت اریب به چپ و یا راست حرکت کنه. البته باید حالت های استثنا هم در نظر بگیرید مثلا وقتی که مهره در ستون 0 هست دیگه به سمت چپ نمیتونه بره. بنابراین فقط مهره مهم نیست بلکه شما باید حرکت های مجاز را در نظر بگیرید و برای هر کدام v را محاسبه و بررسی کنید. بنابراین بجای اینکه تنها موقعیت مهره را ذخیره کنید بهتر است موقعیت خانه هدف را نیز همان موقع ذخیره کنید. متاسفانه درس یادگیری ماشین نداشتم وگرنه بیشتر کمکتان می کردم.
// مهره ما در خانه ij قرار دارد.
$data = $a[$i][$j]
//یک بار برای خانه جلو سمت راست بررسی کنید.
$target = $a[$i+1][$j+1];
$find->value = $v;
$find->i = $i;
$find->j = $j;
find->target_i = $i+1;
$find->target_j = $j+1;
//یک بار هم برای خانه جلو سمت چپ بررسی کنید.
$target = $a[$i+1][$j-1];
$find->value = $v;
$find->i = $i;
$find->j = $j;
find->target_i = $i+1;
$find->target_j = $j-1;
(به آی و جی خودتان دقت کنید من نمیدونم کدام سطر کدام ستون است. در ضمن برای یک بازیکن اگر سطر جلو i+1 باشد برای حریف او سطر جلو باید i-1 در نظر گرفته شود)
قبلا به دنبال یک مهره بود ولی الان به دنبال یافتن حرکت مناسب هستیم بنابراین بجای $find از نام $move استفاده کنیم با معنی تر است.





پاسخ با نقل قول