Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Игра "Пятнашки" (https://javascript.ru/forum/project/12453-igra-pyatnashki.html)

micscr 19.10.2010 08:36

Этот код по праву можно назвать индусским. В обработчиках onclick одно и то же. Тут даже не знание js дико лажает, а в общем умение программировать, проектировать модель и т.д. Что например будешь делать если надо будет поле сделать 5*5? А должно решаться чисто сменой в конфигурации вместо 4 на 5.

MininAS 19.10.2010 15:28

Цитата:

Сообщение от subzey (Сообщение 74865)
Bolo1910,
пожалуйста, воспринимайте конструктивную критику конструктивно.

Ваш код не тот, по которому стоит учиться. Используйте css, разделяйте логику и представление, не делайте кашу из тегов, не исользуйте document.write без необходимости, используйте методы DOM, забудьте про учебники по html, датированные ранее, чем 2005 годом, помните про кроссбраузерность.

Ответ по взрослому, так сказать не обсирающий, а поучающий.
Такой на форумах критики мало.

micscr 19.10.2010 15:51

Цитата:

Сообщение от MininAS (Сообщение 74935)
Ответ по взрослому, так сказать не обсирающий, а поучающий.
Такой на форумах критики мало.

Мир вообще не идеален :) . Вот у тебя в тетрисе фигурки при повороте так и не отскакивают от стенок и друг друга.

Cr@ZyBoY 19.10.2010 18:39

Хм, какое совпадение... http://govnokod.ru/4389

DooMer 19.10.2010 20:58

както вы сильно жестко на парня накинулись...

MininAS 19.10.2010 21:35

Цитата:

Сообщение от micscr (Сообщение 74944)
Мир вообще не идеален :) . Вот у тебя в тетрисе фигурки при повороте так и не отскакивают от стенок и друг друга.

ННуууууууу я сначала и не планировал, для меня это как то не сущесственно.
Но если надо то по скрипту эту функцию добавить просто (могу сделать).

рони 20.10.2010 03:41

Пятнашки )))
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
 <title>15</title>
<style type="text/css">
td{
   height: 40px; width: 40px; text-align: center; color: #FFFFF0;  font-weight: bold; font-size: large;
}
</style>
</head>
<body>
 <script language="JavaScript" type="text/javascript">
for (var m = [], l = 4, k = 1, z = [l - 1, l - 1], // l--размер поля
 b = ["background-color: #4169E1;", "background-color: #C0C0C0;color: #C0C0C0;"],
 t = document.createElement("table"), c = 0; c < l; c++) {
    var tr = t.insertRow(c);
    m[c] = [];
    for (var s = 0; s < l; s++) {
        var td = tr.insertCell(s);
        td.style.cssText = b[0];
        td.onclick = function (a, e) {
            return function () {
                cl_go(a, e)
            }
        }(c, s);
        m[c][s] = k;
        td.innerHTML = k++
    }
}
t.rows[l - 1].cells[l - 1].style.cssText = b[1];
t.rows[l - 1].cells[l - 1].innerHTML='';
m[l - 1][l - 1] = 0;
document.body.appendChild(t);
var end = m.toString().split(",").join(""),
    v = l * l * 2;

function go() {
    for (var a = [
        [-1, 0],
        [0, -1],
        [1, 0],
        [0, 1]
    ]; a.length;) {
        var e = Math.floor(Math.random() * a.length),
            d = a[e];
        a.splice(e, 1);
        if (m[z[0] + d[0]] && m[z[0] + d[0]][z[1] + d[1]]) break
    }
    m[z[0]][z[1]] = m[z[0] + d[0]][z[1] + d[1]];
    t.rows[z[0]].cells[z[1]].style.cssText = b[0];
    t.rows[z[0]].cells[z[1]].innerHTML = m[z[0]][z[1]];
    t.rows[z[0] + d[0]].cells[z[1] + d[1]].style.cssText = b[1];
    t.rows[z[0] + d[0]].cells[z[1] + d[1]].innerHTML = '';
    m[z[0] + d[0]][z[1] + d[1]] = 0;
    z = [z[0] + d[0], z[1] + d[1]];
    if (m[l - 1][l - 1] || v > 0) {
        v--;
        setTimeout(arguments.callee, 100)
    } else {
        alert("Please play!!!");
        v = l * l * 2
    }
}
function cl_go(a, e) {
    for (var d = [
        [-1, 0],
        [0, -1],
        [1, 0],
        [0, 1]
    ]; d.length;) {
        var g = Math.floor(Math.random() * d.length),
            f = d[g];
        d.splice(g, 1);
        if (m[a + f[0]] && m[a + f[0]][e + f[1]] == 0) {
            m[a + f[0]][e + f[1]] = m[a][e];
            m[a][e] = 0;
            t.rows[a].cells[e].style.cssText = b[1];
            t.rows[a].cells[e].innerHTML = '';
            t.rows[a + f[0]].cells[e + f[1]].style.cssText = b[0];
            t.rows[a + f[0]].cells[e + f[1]].innerHTML = m[a + f[0]][e + f[1]];
            z = [a, e];
            break
        }
    }
    end == m.toString().split(",").join("") && alert("Game over")
};
</script>
<input type="button" name="" value="Mix"  onclick="go()"/>
</body>
</html>

Gozar 20.10.2010 11:31

рони,
а почему время прохождения не выдает? Это же самое интересное :)

рони 20.10.2010 14:01

Gozar,
Будет Вам и дудка, будет и свисток )))
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
 <title>15</title>
<style type="text/css">
td{
   height: 40px; width: 40px; text-align: center; color: #FFFFF0;  font-weight: bold; font-size: large;
}
</style>
</head>
<body>
 <script language="JavaScript" type="text/javascript">
for (var m = [], l = 4, k = 1, z = [l - 1, l - 1],start,step, // l--размер поля
 b = ["background-color: #4169E1;", "background-color: #C0C0C0;color: #C0C0C0;"],
 t = document.createElement("table"), c = 0; c < l; c++) {
    var tr = t.insertRow(c);
    m[c] = [];
    for (var s = 0; s < l; s++) {
        var td = tr.insertCell(s);
        td.style.cssText = b[0];
        td.onclick = function (a, e) {
            return function () {
                cl_go(a, e)
            }
        }(c, s);
        m[c][s] = k;
        td.innerHTML = k++
    }
}
t.rows[l - 1].cells[l - 1].style.cssText = b[1];
t.rows[l - 1].cells[l - 1].innerHTML='';
m[l - 1][l - 1] = 0;
document.body.appendChild(t);
var end = m.toString().split(",").join(""),
    v = l * l * 2;

function go() {
    for (var a = [
        [-1, 0],
        [0, -1],
        [1, 0],
        [0, 1]
    ]; a.length;) {
        var e = Math.floor(Math.random() * a.length),
            d = a[e];
        a.splice(e, 1);
        if (m[z[0] + d[0]] && m[z[0] + d[0]][z[1] + d[1]]) break
    }
    m[z[0]][z[1]] = m[z[0] + d[0]][z[1] + d[1]];
    t.rows[z[0]].cells[z[1]].style.cssText = b[0];
    t.rows[z[0]].cells[z[1]].innerHTML = m[z[0]][z[1]];
    t.rows[z[0] + d[0]].cells[z[1] + d[1]].style.cssText = b[1];
    t.rows[z[0] + d[0]].cells[z[1] + d[1]].innerHTML = '';
    m[z[0] + d[0]][z[1] + d[1]] = 0;
    z = [z[0] + d[0], z[1] + d[1]];
    if (m[l - 1][l - 1] || v > 0) {
        v--;
        setTimeout(arguments.callee, 100)
    } else {step=0;start = new Date();
        alert("Please play!!!");
        v = l * l * 2
    }
}
function cl_go(a, e) {
if(end == m.toString().split(",").join("")) {alert("Please Mix!!!");return};
step++;
for (var d = [
        [-1, 0],
        [0, -1],
        [1, 0],
        [0, 1]
    ]; d.length;) {
        var g = Math.floor(Math.random() * d.length),
            f = d[g];
        d.splice(g, 1);
        if (m[a + f[0]] && m[a + f[0]][e + f[1]] == 0) {
            m[a + f[0]][e + f[1]] = m[a][e];
            m[a][e] = 0;
            t.rows[a].cells[e].style.cssText = b[1];
            t.rows[a].cells[e].innerHTML = '';
            t.rows[a + f[0]].cells[e + f[1]].style.cssText = b[0];
            t.rows[a + f[0]].cells[e + f[1]].innerHTML = m[a + f[0]][e + f[1]];
            z = [a, e];
            break
        }
    }
    end == m.toString().split(",").join("") && alert("Game over "+Math.floor(((new Date()).getTime() - start.getTime())/1000)+" s "+step+" step")
};
</script>
<input type="button" name="" value="Mix"  onclick="go()"/>
</body>
</html>

True-Coder 23.02.2011 11:33

камрады, оцените, как вам наша реализация пятнашек?


Часовой пояс GMT +3, время: 23:04.