Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 26.12.2014, 21:56   #1
tdsotm
 
Регистрация: 30.10.2014
Сообщений: 9
По умолчанию Помогите разобраться с программой Js

Есть скрипт кода игры в пятнашки. change - меняет местами 2 изображения, а reset- перемешивает числа.

Код:
function change(number){         
            for (var i = 0; i < 16; i++) 
            {
                if (document.images[i].name == "16") 
                {
                    emptynumber = i;
                }
            }
            if ((number - emptynumber === 4) || (emptynumber - number === 4) || ((number - emptynumber === 1) && (Math.floor(number / 4) == Math.floor(emptynumber / 4))) ||
                ((emptynumber - number == 1) && (Math.floor(number / 4) == Math.floor(emptynumber / 4))))
            {
                document.images[emptynumber].src = document.images[number].name + ".gif";
                document.images[number].src = "16.gif";
                document.images[emptynumber].name = document.images[number].name; 
                document.images[number].name = "16";
            }
          
        }


        function reset()
        {
            var p1 = new Image();var p2 = new Image();var imgs = new Image();var name;
            for (var i = 1; i < 16 ; i++)
            {
                p1 = Math.floor(Math.random() * 16); 
                p2 = Math.floor(Math.random() * 16);
                imgs = document.images[p1].src; 
                document.images[p1].src = document.images[p2].src;
                document.images[p2].src = imgs;
                name = document.images[p1].name;
                document.images[p1].name = document.images[p2].name;
                document.images[p2].name = name;
            }
        }
Не могу разобраться с этим моментом, я так понял, что он проверяет, можно ли менять 2 числа. К чему тут math.floor?
Код:
if ((number - emptynumber === 4) || (emptynumber - number === 4) || ((number - emptynumber === 1) && (Math.floor(number / 4) == Math.floor(emptynumber / 4))) ||
                ((emptynumber - number == 1) && (Math.floor(number / 4) == Math.floor(emptynumber / 4))))
И по какому принципу работает reset? Я понял только что он берет 2 рандомные картинки
tdsotm вне форума Ответить с цитированием
Старый 27.12.2014, 04:04   #2
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Функция reset 15 раз меняет местами два случайных объекта в массиве document.images. Кстати, вызов конструктора new Image() везде не нужен.

Math.floor отбрасывает всю дробную часть у числа (весь хвост, который находится после запятой).
^-.-^ Клавогонки.ру - набирай скорость!
Fenex вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться с программой С++ Builder spectrum988 C++ Builder 10 25.10.2013 00:15
Помогите разобраться с программой Bercut48rus Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 11.12.2009 02:40
Помогите разобраться с программой IrinaPetrova Фриланс 3 01.12.2009 13:03
Помогите разобраться с программой Svetlyachok Общие вопросы C/C++ 7 06.06.2009 16:55
Помогите разобраться с программой First90_19 Паскаль, Turbo Pascal, PascalABC.NET 0 23.12.2008 01:58


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840