Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопросы по скрипту для игры в 15 
:(
    Опции темы
DeadButHappy
Дата 10.5.2011, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 9.8.2010
Где: Russia

Репутация: нет
Всего: нет



Есть некоторые вопросы по скрипту..
Например для чего строчку 
Код

var arr = [], box, ei,ej; 

пишут отдельно, а не в функциях?
и зачем в цикле функции строка 
Код

arr[i] = []
 ?
Код

function newGame(){            
    for(i = 0; i < 4; ++i){
        arr[i] = []
        for(j = 0; j < 4; ++j){
            if(i + j != 6)
                arr[i][j] = i*4 + j + 1;
            else
                arr[i][j] = "";
        }
    }




Вот весь код:
Код

var arr = [], box, ei,ej;                        
function swap(arr,i1,j1,i2,j2){                
    t = arr[i1][j1];
    arr[i1][j1] = arr[i2][j2];
    arr[i2][j2] = t;
}
window.onload = function() {                
    box = document.getElementById("box");
    newGame();                
    document.getElementById("reset").onclick = newGame;                        
}
function cellClick(event) {
    var event = event || window.event,
        el = event.srcElement || event.target,
        i = el.id.charAt(0),
        j = el.id.charAt(2);
    if((i == ei && Math.abs(j - ej) == 1) || (j == ej && Math.abs(i - ei) == 1)){                    
        document.getElementById(ei + " " + ej).innerHTML = el.innerHTML;
        el.innerHTML = "";
        ei = i;
        ej = j;
        var q = true;
        for(i = 0; i < 4; ++i)
            for(j = 0; j < 4; ++j)
                if(i + j != 6 && document.getElementById(i + " " + j).innerHTML != i*4 + j + 1){
                    q = false;
                    break;
                }
                if(q) alert("Victory!");
            }
}
function newGame(){            
    for(i = 0; i < 4; ++i){
        arr[i] = []
        for(j = 0; j < 4; ++j){
            if(i + j != 6)
                arr[i][j] = i*4 + j + 1;
            else
                arr[i][j] = "";
        }
    }
    ei = 3;
    ej = 3;
    for(i = 0; i < 1600; ++i)
        switch(Math.round(3*Math.random())){
            case 0: if(ei != 0) swap(arr,ei,ej,--ei,ej); break; // up
            case 1: if(ej != 3) swap(arr,ei,ej,ei, ++ej); break; // right
            case 2: if(ei != 3) swap(arr,ei,ej,++ei,ej); break; // down
            case 3: if(ej != 0) swap(arr,ei,ej,ei,--ej); // left
        }
    var table = document.createElement("table"),
        tbody = document.createElement("tbody");                    
    table.appendChild(tbody);
    for(i = 0; i < 4; ++i){
        var row = document.createElement("tr");
        for(j = 0; j < 4; ++j){
            var cell = document.createElement("td");
                cell.id = i + " " + j;
                cell.onclick = cellClick;
                cell.innerHTML = arr[i][j];
                row.appendChild(cell);
        }
        tbody.appendChild(row);                    
    }
    if(box.childNodes.length == 1)
        box.removeChild(box.firstChild);    
    box.appendChild(table);    
}

PM MAIL WWW Skype   Вверх
нуп
Дата 10.5.2011, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 12
Всего: 33



Цитата(DeadButHappy @  10.5.2011,  21:59 Найти цитируемый пост)
пишут отдельно, а не в функциях?

Видимо глобальные переменные
Цитата(DeadButHappy @  10.5.2011,  21:59 Найти цитируемый пост)
arr[i] = []

Создание массива, тоже самое что и arr[i] = new Array()
PM MAIL   Вверх
memba
Дата 10.5.2011, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 10.5.2011

Репутация: нет
Всего: нет



var arr = [], box, ei,ej;  

что бы значения сохранялись. Потому что они используются в нескольких функциях.

Конечно это не красиво, с точки зрения эстетики )
PM MAIL   Вверх
DeadButHappy
Дата 10.5.2011, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 9.8.2010
Где: Russia

Репутация: нет
Всего: нет



Цитата(нуп @ 10.5.2011,  22:18)
Цитата(DeadButHappy @  10.5.2011,  21:59 Найти цитируемый пост)
пишут отдельно, а не в функциях?

Видимо глобальные переменные
Цитата(DeadButHappy @  10.5.2011,  21:59 Найти цитируемый пост)
arr[i] = []

Создание массива, тоже самое что и arr[i] = new Array()

А разве не 
Код

arr = new Array()
 надо писать?

просто не совсем пому почему 
Код

arr[i] = new Array()

Тоесть зачем после переменной надо [i]  ..

Это сообщение отредактировал(а) DeadButHappy - 10.5.2011, 22:40
PM MAIL WWW Skype   Вверх
нуп
Дата 10.5.2011, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 12
Всего: 33



Сокращенная запись
PM MAIL   Вверх
DeadButHappy
Дата 11.5.2011, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 9.8.2010
Где: Russia

Репутация: нет
Всего: нет



Код

function newGame(){            
    for(i = 0; i < 4; ++i){
        arr[i] = []
        for(j = 0; j < 4; ++j){
            if(i + j != 6)
                arr[i][j] = i*4 + j + 1;
            else
                arr[i][j] = "";
        }
    }


Так никто не в курсе? почему arr[i] = [] ?
а в начале всего файла скрипта тоже обьявлено var arr = [], box, ei,ej; ..
а потом пишется arr[i][j] = i*4 + j + 1...
Но допустим  var arr = [] это сокращенное обьявление глобального массива.. неизвестного размера..
А зачем его опять в цикле обьявлять .. arr[i] = []?
а потом к нему еще обращаются arr[i][j]... и тут уже 2 параметра - i  и j... хотя обьявили в начале цикла..arr[i] = []..
никто не может разьяснить? а то я совсем запутался..
PM MAIL WWW Skype   Вверх
нуп
Дата 11.5.2011, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 12
Всего: 33



Это же двумерный массив. Для каждого элемента i создается массив. Вот что получается
Код

[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, ""]]

PM MAIL   Вверх
Гуз
Дата 8.6.2011, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



Я автор этого кода. На все вапросу отвечу в коментах к вот этой статье.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0468 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.