переписать функцию ActionScript в php - PullRequest
1 голос
/ 15 сентября 2011

Я пытаюсь написать функцию ActionScript с некоторой математикой для php, она не дает таких же результатов, не могли бы вы мне помочь. Эта функция вычисляет расстояние между двумя координатами для игры с шестнадцатеричной картой.

Функция ActionScript:

function tellDistance(p1:Point,p2:Point,debug:Boolean=false):Number{
    var dx:int=Math.abs(p1.x-p2.x);
    var dy:int=Math.abs(p1.y-p2.y);
    var auxY:int=dy;
    dy=Math.max(dy-Math.ceil(dx*.5),0);
   dy+=(auxY>=dx*.5 && dx%2==1 && ((p1.x%2==1 && p1.y>p2.y) || (p1.x%2==0 && p1.y<p2.y)))?1:0;
    return dx+dy;
}

Моя версия в php (не работает):

function tiles_distance($start_x, $start_y, $dest_x, $dest_y)
    {
    $x_dif = abs($start_x-$dest_x);
    $y_dif = abs($start_y-$dest_y);

    $y_dif_backup = intval($y_dif);

    $y_dif = max($y_dif-ceil($x_dif*0.5),0);
    $y_dif = $y_dif+($y_dif_backup>=$x_dif*.5 && $x_dif%2==1 && (($start_x%2==1 && $start_y>$dest_y) || ($start_x%2==0 && $start_y< $dest_y)))?1:0;

    return $x_dif+$y_dif;
    }

EDIT:

в ActionScript координаты будут выглядеть как 20.80 и 32.81. на php я даю координаты x и y отдельно. Они будут возвращать значение типа int, например 1 или 40.

1 Ответ

2 голосов
/ 15 сентября 2011

Вероятно, потому что в вашем javascript вы сразу приводите к int, тогда как в PHP вы этого не делаете.Код PHP, вероятно, дает вам более точные ответы.

Кроме того, я собираюсь дать вам мою любимую цитату:

"Отладка в два раза сложнее, чем написание кода вВо-первых, если вы пишете код настолько умно, насколько это возможно, вы, по определению, недостаточно умны, чтобы отлаживать его ».- Брайан Керниган

Вырежьте эту троичную if инструкцию, чтобы вы могли видеть, что происходит.

...