Сравнение элементов массива по столбцам и диагоналям
Доброго времени суток, пишу более сложную игру крестиков-ноликов, размерность задается пользователем, вводятся любые символы, где значения в строке или столбце или по диагоналям равны, то победа.
Реализовал универсальную проверку только по строкам, а по столбцам или диагоналям в голову больше ничего не лезет.... <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=cp-1251" /> </head> <title> Game крестики-нолики ! </title> <body> <div align="center" style="margin-top: 100px"> <script type="text/javascript"> //создание var n = prompt('введите размер крестиков ноликов, например 3', 3); var mas = new Array(n); // строки for (var i=0; i<n; i++) mas[i] = new Array(n); // столбцы //инициализация var id_pole = 0; //счетчик id клеток for (var row=0; row<n; row++) { for (var col=0; col<n; col++) { id_pole+=1; mas[row][col] = '<input onkeyup="win();" type="text" id='+id_pole+' placeholder="value" style="width: 50px" />'; if (col == n-1) mas[row][col] = '<input onkeyup="win();" type="text" id='+id_pole+' placeholder="value" style="width: 50px" />' + '<br>'; document.write(mas[row][col]); } } function win() { //получение значений с клеток var id_pole2 = 0; var check; for (row=0; row<n; row++) { for (col=0; col<n; col++) { id_pole2+=1; mas[row][col] = document.getElementById(id_pole2).value; } } for (row=0; row<n; row++) { check = 1; for (col=0; col<n; col++) { if (mas[row][0] != mas[row][col]) { check = 0 }; // проверка значений по строкам if (check == 1 && col == n-1 && mas[row][col] != '') { alert('Pobeda !!')}; } } }; function clear_form() { var id_pole3=0; for (row=0; row<n;row++) { for (col=0; col<n; col++) { id_pole3+=1; mas[row][col] = document.getElementById(id_pole3).value=''; } } };</script> </div> <div align="center" style="margin-top: 20px"> <button OnClick="clear_form();">Clear</button> </div> </body> </html> |
Цитата:
|
ksa, а ты как будто великим сразу был? да с того же и начинал..
|
Цитата:
Это тренировочная игра на массивы и циклы. Вот и тренируйся... Какой смысл в тренировке, если ты ее сам не делаешь? |
Цитата:
|
ghost200607, вот тебе пример по столбцам, по диагоналям думай, если совсем будет туго, поможем с алгоритмом. но в каком то смысле ksa говорит верно, нужно самим думать как решить задачу
//проверка по столбцу for (j = 0; j < n; j++) //бежим по СТОЛБЦАМ 0-й столбец, 1-й столбец ... { num = mas[0][j]; //здесь будем хранить значение ячейки по j-му столбцу 0-й строчки if (num == '') //если значение пустое, не вводилось, то пропускаем один цикл continue; is = true; // хранит в себе результат о совпадении всех элементов, по умолчанию все значания ""как бы"" равны for (i = 1; i < n; i++) //пробегаем по строке на этом столбце, не берем нулевой элемент т.к. он записан в num { if (num != mas[i][j])//если значение num не совпадает со вторым, третьим или другим элементом то и проверять дальше нет смысла { is = false; //значения не равны break; //прерываем цикл } } if (is) { alert('победа'); return; } } |
Спасибо, буду думать, но бывают моменты что "виснешь" и что делать дальше....
|
Цитата:
|
Цитата:
п.с. мож в оффтопике поговорим? ибо засоряем ветку |
Цитата:
Цитата:
Проверку нужно/можно "привязать" к собственно поставленному крестику/нолику... И считать те крестики/нолики "вокруг" поставленного значка... От 0 до N бегать не стоит... |
Цитата:
|
Цитата:
Цитата:
Авторы их делают, преследуя какие-то свои цели. А вот во что это перерастает, уже жизнь показывает... :) |
Цитата:
А ситуация "Я решил сделать нечто! Как это теперь сделать?" немного смешна... Возьми задачку по-проще, если эта тебе не по зубам. Оно может и понимание придет... А не придет - так то мобыть и не твое... :) |
Цитата:
но проблема в том, что ты сначала наехал что он не хочет думать, а потом высказал свое мнение по решению.. |
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
Млин... Че делать, я х/з... |
Цитата:
|
Всем спасибо за помощь !:)
|
Цитата:
Цитата:
Цитата:
у меня вот такие ассоциации.. и это печально Цитата:
|
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Цитата:
Хотя, по моему мнению, и "позиции" у меня как таковой просто нет. :) |
Цитата:
так же и здесь: Цитата:
|
какой прекрасный срач вы тут устроили))
skrudjmakdak, ksa тут не один любитель посылать читать доки как минимум потому что это полезнее, чем получить готовый ответ. халява не так сильно ценится как то, что было сделано с трудом.. соответственно и знаний ты из этого не почерпнешь и опыта никакого для себя не получишь.. в конце концов, есть специально отведенные места для скопления любителей халявы.. |
Цитата:
|
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
skrudjmakdak, почитал.. настаиваю на своем)
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
В этом вопросе мне больше интересно, что именно мне это дает? Какой смысл мне заморачиваться с чем-то если лично мне нет никакого в том интереса? Ранее наставник имел некий процент с з/п учеников, заним закрепленных... Сейчас интерес к обучению (для меня) может предоставить только сам "обучаемый" если он мня заинтересует какими-то своими личностными качествами... И не более того. Это к разговору об обучении и пр... |
Цитата:
По-мне так нормальный мир... Все лучше чем сейчас на Украине... |
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 08:31. |