Помогите господа!!!сам не допру никак))
вот пишу крестикиНолики. Как мне взять(например) "td"[2] и проверить какой из рисунков в нем находиться??? помогите новичку плиз)))
Код:
<BODY> |
Не стал читать Ваш код, так как не читабелен.
Вы матрицу себе представляете что это такое, ну или массив. В данном случае у вас должен быть массив, скажем var table = [ [id1,id2,id3] [id4,id5,id6] [id7,id8,id9] ]; Его даже можно сделать одномерным. И считывать что находиться в нём. |
Цитата:
мне просто добавить var table, а вместо id1, id2...поставить идентификатор td? А как потом считывать? |
Интересно будет последить как гражданин, который сам не умеет работать с массивами (Ultimatum), будет учить как нужно работать с массивами.
Ultimatum, пивом и чипсами я запасся... Т.ч. готов внимать твоему гению. :yes: |
Цитата:
|
Цитата:
А вообще, dimidrol, в вашем коде много плохого. Например, в результате O.cloneNode(true) (кстати, зачем true, если у картинки O нет детей, которые надо копировать?) каждый раз создаётся новый элемент с таким же id. Т. е. у вас на странице id теряет своё основное св-во - уникальность. Дальше: вам совершенно необязательно через замыкания сохранять номер элемента - можно через this обратиться к нему:
<div id="el" style="width: 100px; height: 100px; background: red"></div>
<script>
document.getElementById("el").onclick= function(){
alert(this.style.background); // и вовсе необязательно обработчику знать, каким по счёту на странице является этот див))
};
</script>
P. S. Как поправите это - публикуйте код, продолжим разбор ошибок дальше. P. P. S. И уберите это бешеное количество отступов - бесит. Вполне достаточно одного-двух пробелов или символа табуляции. |
Цитата:
Мне просто до жути интересно, как решит такую задачку гражданин, который еще не овладел навыком поиска элемента в массиве... Да и задачу ты в корне неправильно начал делать. Лучше сразу такое выкинуть. Ну если только табличку пустую оставить... :) |
<table><tbody>
<tr> <td id="a"></td><td id="b"></td><td id="c"></td> </tr>
<tr> <td id="d"></td><td id="e"></td><td id="f"></td> </tr>
<tr> <td id="g"></td><td id="h"></td><td id="i"></td> </tr>
</tbody></table>
<script>
var O=new Image()
O.src ="zero.png";
var X=new Image()
X.src ="dagger.png";
function ticTacToe(){
var cells = document.getElementsByTagName("td");
var last = O;
for (var i =0; i <= 8; i++){
var cell = cells[i];
cell.onclick = function (){
if (this.innerHTML==""){
if (last==X){
this.appendChild(O.cloneNode(false));
}
else{
this.appendChild(X.cloneNode(false));
}
last=last==X ? O : X;
}
else {
alert ("клетка заполнена");
}
};
}
}
ticTacToe()
</script>
Но я не понимаю что мне использовать вместо метода O.cloneNode(false), у меня же всего два рисунка, innerHTML удаляет прошлый! |
Цитата:
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
#playing td {
width: 30px;
height: 30px;
}
.player0 {
background: url('http://javascript.ru/forum/images/smilies/blink.gif') no-repeat center;
}
.player1 {
background: url('http://javascript.ru/forum/images/smilies/laugh.gif') no-repeat center;
}
</style>
<script type="text/javascript">
player=0;
$(document).ready(function (){
$('#playing td').click(function (){
if (this.className!='') {
return false;
};
this.className='player'+player;
player=(player+1)%2;
});
});
</script>
</head>
<body>
<table border='1'>
<tbody id='playing'>
<tr>
<td></td><td></td><td></td>
</tr>
<tr>
<td></td><td></td><td></td>
</tr>
<tr>
<td></td><td></td><td></td>
</tr>
</tbody>
</table>
</body>
</html>
|
вот, разобрался!Просто jquery ще не начинал(первый раз юзаю)! что дальше?
<script type="text/javascript">
player=0;
$(document).ready(function(){
$(document).css("background").slideDown("slow");
$("#game td").click(function(){
if (this.className==""){
this.className="player"+player;
player = (player+1)%2;
}
})
})
</script>
|
Цитата:
|
ладно, попробую сам)))Спасибо огромное!!!
|
Интересен результат ))) Получилось что-то?
|
Если автор не смог просто ставить картинки в поле - алгоритм игры точно не напишет... :no:
|
Цитата:
|
Цитата:
|
dimidrol, это просто была оценка твоих текущих знаний. Никаких претензий, просто оценка.
|
Цитата:
- Покажите как поставить крестики и нолики. А то у меня не получается... - Вот так... - А теперь что делать дальше? Если тебе интересно как я начинал - так делал задачки от простого к сложному... Т.е. те самые крестики нолики не делал сразу. :D К этому времени были освоены ветвления и циклы. Был кой-какой навык по обработке данных... Т.е. если ты прогить не умеешь - рано на такие задачки замахиваться... ;) |
ну я уже сделал симулятор монетки и рулетки)))
|
dimidrol, тогда почему были такие трудности с установкой крестиков и ноликов?
|
ну я там графику не применял.
|
dimidrol, в моём примере нет графики вообще... :D
|
нужно тебе разделить ЛОГИКУ игры от оболочки. я обычно (ни разу если честно) так делаю.
))))))) суть в том что у тебя должна быть виртуальная матрица лишь СИМВОЛИЗИРУЮЩАЯ крестики нолики, в ней должны производится изменения, и именно с ней должны проводиться все операции)! с виртуальной матрицей невидимой человеку)!!! и нужно нафигачть функцию "отрисоватьИзменения()" ! и вот эта рисовальная функция будет смотреть что с виртуальной матрицей, пробегаться по ней и рисовать это на страничке )))) как это все сделать ты я думаю сам найдешь способ ну и так же должна быть функция изменения этой виртуальной матрицы,через нарисованые квадраты))) ..то есть оболочка должна уметь изменять матрицу и после вызывать тот самый метод .отрисоватьИзменения() как то так не нужно херачить ЛОГИКУ игры и ОТРИСОВКУ к одну кучу))) лучше разделить, и это на самом деле не так сложно как кажется пока не начал) |
Цитата:
|
Цитата:
|
Livanderiaamarum, для программки "Крестики Нолики" это точно фигня.
|
Цитата:
|
Livanderiaamarum, таки я пытаюсь сказать, что там и матрица-то никакая не нужна. Т.ч. куда уже проще-то?
|
Вариант крестиков нуликов ))) :write:
<!DOCTYPE>
<html>
<head>
<title></title>
<style type="text/css">
td{
height: 22px; width: 22px; text-align: center;
border: #000000 solid 1px;
}
</style>
</head>
<body>
<div id="tv"></div>
<script type="text/javascript">
for (var m = Array(9), l = 3, b = ["background-color: #FFFF00;", "background-color: #00FF00;"],
t = document.createElement("table"), st = 0, c = 0; c < l; c++)
for (var tr = t.insertRow(c), s = 0; s < l; s++) {
var td = tr.insertCell(s);
td.innerHTML = " ";
td.onclick = function (a) {
return function () {
go(a)
}
}(st++)
}
document.body.appendChild(t);
var arr = [
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
[0, 3, 6],
[1, 4, 7],
[2, 5, 8],
[0, 4, 8],
[2, 4, 6]
],
arr_st = [
[1, 3, 5, 7],
[0, 2, 6, 8]
],
n = 1,
step = 0;
function arr_indexOf(a, e) {
for (var d = 0; d < a.length; d++) if (a[d] === e) return d;
return -1
}
function rand() {
for (var a = [], e = 0; e < m.length; e++) void 0 == m[e] && a.push(e);
return a[Math.random() * a.length | 0]
}
function rand_st(a) {
for (var a = arr_st[a], e = [], d = 0; d < a.length; d++) void 0 == m[a[d]] && e.push(a[d]);
return e[Math.random() * e.length | 0]
}
function show(a) {
if ( void 0 == a) return
step++;
t.rows[Math.floor(a / 3)].cells[a % 3].innerHTML = n ? "X" : "O";
m[a] = n;
n ^= 1;
9 == step && mess("0 == 0")
}
function vivat(a, e) {
for (var d = 0; d < a.length; d++) {
var f = a[d];
t.rows[Math.floor(f / 3)].cells[f % 3].style.cssText = b[e]
}
}
function arr_null(a) {
for (var e = 0; e < a.length && !(void 0 == m[a[e]]); e++);
return a[e]
}
function go(a) {
if (void 0 == m[a] && 9 > step) {
show(a);
for (var e = 0, d = []; e < arr.length; e++) {
for (var f = 0, g = 0; g < arr[e].length; g++) {
var h = arr[e][g];
1 === m[h] && f++;
0 === m[h] && f--
}
d[e] = f
}
- 1 != arr_indexOf(d, -3) ?
(f = arr_indexOf(d, -3), mess("vivat O"), vivat(arr[f], 0), step = 9) : -1 != arr_indexOf(d, 3) ?
(f = arr_indexOf(d, 3), mess("vivat X"), vivat(arr[f], 1), step = 9) : -1 != arr_indexOf(d, -2) ?
(f = arr_indexOf(d, -2), go(arr_null(arr[f]))) : -1 != arr_indexOf(d, 2) ?
(f = arr_indexOf(d, 2), show(arr_null(arr[f]))) : show(void 0 == m[4] ?
4 : (m[0] && m[8] || m[2] && m[6]) && void 0 != rand_st(0) ?
rand_st(0) : 4 == a ?
rand_st(1) : m[1] && m[3] && void 0 == m[0] ?
0 : m[1] && m[5] && void 0 == m[2] ?
2 : m[3] && m[7] && void 0 == m[6] ?
6 : m[5] && m[7] && void 0 == m[8] ?
8 : m[4] && (m[0] || m[2] || m[6] || m[8]) && void 0 != rand_st(1) ? rand_st(1) : rand())
}
}
function mess(a) {
document.getElementById("tv").innerHTML = a
}
function new_go() {
mess("go");
step = 0;
m = Array(9);
n = 1;
var tds = t.getElementsByTagName('td')
for (var i=0; i<tds.length; i++) {
tds[i].innerHTML = " ";
tds[i].style.cssText = ""
}
}
new_go();
</script>
<input type="button" name="" value="new" onclick="new_go()"/>
</body>
</html>
|
| Часовой пояс GMT +3, время: 17:49. |