вторник, 3 сентября 2013 г.

Chess on JS, warior class

Всем привет. Продолжаем о шахматах.
Мною был написан класс "пешка" и создано правило движения: - одна клетка вперед. При организации логики, возникла следующая проблема. Нужно было написать универсальный метод/функцию которая бы выполняла ход фигуры. Так же нужна была проверка, можно ли фигуре ходить в заданную клетку, в случае неправильного хода, возвращать фигуру назад.
Рассматривалось несколько вариантов, от создания объекта под каждую фигуру и в свойствах хранить все возможные варианты до создания класса описывающего основные свойства фигуры. Такие как старое местоположение, новое местоположение и метод возвращающий массив с координатами "разрешенных" для хода клеток из старой позиции. На этом варианте я и остановился. Возможно это и ошибочный путь, время покажет.

Вот собственно и код с описанием.

/*

* класс пешка, с методом стандартного хода

*/

var wariorClass = function(old_pos, new_pos) {

    this.old_pos = old_pos;
    this.new_pos = new_pos;

    this.getStdMove = function () {
        var alfa = this.old_pos[0],
            num = this.old_pos[1];

        return [alfa + ( parseInt(num)+1)];
    };
}

Весь код целиком вы как обычно можете посмотреть на https://github.com/Fariah/chess

понедельник, 2 сентября 2013 г.

How I make a chess in JS

Возвращаюсь к написанию постов в блоге. В этот раз я расскажу не о Zend Framework, а том как я пытался воссоздать древнюю игру - шахматы на JS.

Собственно сами шахматы в самой последней версии вы можете найти на https://github.com/Fariah/chess

Здесь же я опишу то новое, что узнал пока создавал эту игру.

1. Это классы в JS. До этого я использовал только функции. Но проектируя приложения понял, что пора делать шаг вперед. Собственно вот так это делается

var myClass = function() { // создаем класс myClass

    return {

        createAlert: function(elem) { // создаем метод createAlert

             alert(elem); // который возвращает параметр elem алертом

        }

    }

}

var obj = new myClass(); // создаем обьект класса

obj.createAlert('someElem');  // вызываем метод класса с параметром