Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.08.2014, 08:45
Новичок на форуме
Отправить личное сообщение для ghost200607 Посмотреть профиль Найти все сообщения от ghost200607
 
Регистрация: 01.07.2014
Сообщений: 5

Сравнение элементов массива по столбцам и диагоналям
Доброго времени суток, пишу более сложную игру крестиков-ноликов, размерность задается пользователем, вводятся любые символы, где значения в строке или столбце или по диагоналям равны, то победа.
Реализовал универсальную проверку только по строкам, а по столбцам или диагоналям в голову больше ничего не лезет....

<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>
Ответить с цитированием
  #2 (permalink)  
Старый 26.08.2014, 09:26
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,214

Сообщение от ghost200607
пишу более сложную игру крестиков-ноликов
...
Реализовал универсальную проверку только по строкам, а по столбцам или диагоналям в голову больше ничего не лезет....
Нормально ты начал писать...
Ответить с цитированием
  #3 (permalink)  
Старый 26.08.2014, 09:33
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

ksa, а ты как будто великим сразу был? да с того же и начинал..
Ответить с цитированием
  #4 (permalink)  
Старый 26.08.2014, 09:39
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,214

Сообщение от skrudjmakdak
а ты как будто великим сразу был? да с того же и начинал..
Ты меня знаешь? С чего взял, что я даже в начале пути не мог написать "крестики-нолики"?
Это тренировочная игра на массивы и циклы. Вот и тренируйся... Какой смысл в тренировке, если ты ее сам не делаешь?
Ответить с цитированием
  #5 (permalink)  
Старый 26.08.2014, 09:58
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

Сообщение от ksa Посмотреть сообщение
Ты меня знаешь? С чего взял, что я даже в начале пути не мог написать "крестики-нолики"?
Это тренировочная игра на массивы и циклы. Вот и тренируйся... Какой смысл в тренировке, если ты ее сам не делаешь?
тогда зачем вообще форумы? можнож дойти своим умом?? причем во всем, только вот беда во времени
Ответить с цитированием
  #6 (permalink)  
Старый 26.08.2014, 10:04
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

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;
			}
		}
Ответить с цитированием
  #7 (permalink)  
Старый 26.08.2014, 10:09
Новичок на форуме
Отправить личное сообщение для ghost200607 Посмотреть профиль Найти все сообщения от ghost200607
 
Регистрация: 01.07.2014
Сообщений: 5

Спасибо, буду думать, но бывают моменты что "виснешь" и что делать дальше....
Ответить с цитированием
  #8 (permalink)  
Старый 26.08.2014, 10:16
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,214

Сообщение от skrudjmakdak
тогда зачем вообще форумы?
У всех свое понимание их существования...
Ответить с цитированием
  #9 (permalink)  
Старый 26.08.2014, 10:20
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

Сообщение от ksa Посмотреть сообщение
У всех свое понимание их существования...
и я так полагаю, что для тебя форумы нах не нужны? точней для начинающих они не нужны, т.к. они смогут в любом вопросе найти свой ответ?

п.с. мож в оффтопике поговорим? ибо засоряем ветку
Ответить с цитированием
  #10 (permalink)  
Старый 26.08.2014, 10:22
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,214

Сообщение от skrudjmakdak
нужно самим думать как решить задачу
Если она тренировочная...
Сообщение от skrudjmakdak
вот тебе пример по столбцам
По-мне так в корне неправильный подход к проверке...
Проверку нужно/можно "привязать" к собственно поставленному крестику/нолику... И считать те крестики/нолики "вокруг" поставленного значка...
От 0 до N бегать не стоит...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение элементов массивов nesfiraty Общие вопросы Javascript 20 13.01.2015 19:23
Фотогалерея на jQuery, сопоставление массива элементов weber jQuery 3 24.10.2013 02:06
Вывод случайных элементов из массива в таблицу Narm0 Общие вопросы Javascript 10 06.08.2013 12:39
Определить количество отрицательных элементов массива Тип_1 Общие вопросы Javascript 3 25.06.2012 18:24
вставка элементов массива в текстовую форму по клику olezyk Общие вопросы Javascript 3 21.03.2009 22:01