19.10.2010, 08:36
|
|
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,576
|
|
Этот код по праву можно назвать индусским. В обработчиках onclick одно и то же. Тут даже не знание js дико лажает, а в общем умение программировать, проектировать модель и т.д. Что например будешь делать если надо будет поле сделать 5*5? А должно решаться чисто сменой в конфигурации вместо 4 на 5.
|
|
19.10.2010, 15:28
|
Кандидат Javascript-наук
|
|
Регистрация: 22.09.2009
Сообщений: 122
|
|
Сообщение от subzey
|
Bolo1910,
пожалуйста, воспринимайте конструктивную критику конструктивно.
Ваш код не тот, по которому стоит учиться. Используйте css, разделяйте логику и представление, не делайте кашу из тегов, не исользуйте document.write без необходимости, используйте методы DOM, забудьте про учебники по html, датированные ранее, чем 2005 годом, помните про кроссбраузерность.
|
Ответ по взрослому, так сказать не обсирающий, а поучающий.
Такой на форумах критики мало.
|
|
19.10.2010, 15:51
|
|
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,576
|
|
Сообщение от MininAS
|
Ответ по взрослому, так сказать не обсирающий, а поучающий.
Такой на форумах критики мало.
|
Мир вообще не идеален . Вот у тебя в тетрисе фигурки при повороте так и не отскакивают от стенок и друг друга.
|
|
19.10.2010, 20:58
|
Ламер
|
|
Регистрация: 19.02.2010
Сообщений: 295
|
|
както вы сильно жестко на парня накинулись...
|
|
19.10.2010, 21:35
|
Кандидат Javascript-наук
|
|
Регистрация: 22.09.2009
Сообщений: 122
|
|
Сообщение от micscr
|
Мир вообще не идеален . Вот у тебя в тетрисе фигурки при повороте так и не отскакивают от стенок и друг друга.
|
ННуууууууу я сначала и не планировал, для меня это как то не сущесственно.
Но если надо то по скрипту эту функцию добавить просто (могу сделать).
|
|
20.10.2010, 03:41
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
Пятнашки )))
<!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>
Последний раз редактировалось рони, 20.10.2010 в 03:44.
|
|
20.10.2010, 11:31
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
рони,
а почему время прохождения не выдает? Это же самое интересное
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
20.10.2010, 14:01
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
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>
|
|
23.02.2011, 11:33
|
|
Новичок на форуме
|
|
Регистрация: 23.02.2011
Сообщений: 3
|
|
камрады, оцените, как вам наша реализация пятнашек?
Последний раз редактировалось True-Coder, 03.04.2011 в 21:29.
|
|
|
|