Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 01.06.2018, 00:20
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

На кодварсах сегодня в ленте задание всплывало, нужно бота к это игре написать, который выводит массив всех матриц от стартового состояния до финишного, если задача не решaема, вернуть null.
Ответить с цитированием
  #12 (permalink)  
Старый 01.06.2018, 00:23
Новичок на форуме
Отправить личное сообщение для Amedeo Avogadro Посмотреть профиль Найти все сообщения от Amedeo Avogadro
 
Регистрация: 29.05.2018
Сообщений: 9

Сообщение от рони Посмотреть сообщение
потому что не все комбинации можно упорядочить,
можно гонять пустую ячейку рандомно из начального "правильного" положения.
ну гонять ее долго можно/очень долго/ но в итоге должна же собраться
Ответить с цитированием
  #13 (permalink)  
Старый 01.06.2018, 00:29
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Amedeo Avogadro,
Такая игра раньше в карманном варианте была, была всегда решаема, а если не решалась, человек отходил в сторонку и каким то загадочным образом находил решение.
Ответить с цитированием
  #14 (permalink)  
Старый 01.06.2018, 00:45
Новичок на форуме
Отправить личное сообщение для Amedeo Avogadro Посмотреть профиль Найти все сообщения от Amedeo Avogadro
 
Регистрация: 29.05.2018
Сообщений: 9

Сообщение от j0hnik Посмотреть сообщение
Amedeo Avogadro,
Такая игра раньше в карманном варианте была, была всегда решаема, а если не решалась, человек отходил в сторонку и каким то загадочным образом находил решение.
но включаем игру по первой ссылке)

Всем спасибо за обсуждение)

Проблема с ховером решилась, в move_value() нужно убрать #dddddd и присваивать просто пустую строку, но это все равно странно, .cell_game:hover это же никак не затрагивает....
Ответить с цитированием
  #15 (permalink)  
Старый 01.06.2018, 00:50
Аватар для void()
Профессор
Отправить личное сообщение для void() Посмотреть профиль Найти все сообщения от void()
 
Регистрация: 11.08.2017
Сообщений: 208

Нужно решить вопрос с тем, что рони говорил - нерешаемые комбинации. А когда все будет готово, советую попробовать сделать те же пятнашки, только с анимированными плитками, чтоб они плавно переезжали с места на место. Вот там будут интересные подводные камни при работе с DOM и вообще - это веселая задачка)
Ответить с цитированием
  #16 (permalink)  
Старый 01.06.2018, 01:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от Amedeo Avogadro
ну гонять ее долго можно
достаточно 20-30 сдвигов
Сообщение от Amedeo Avogadro
но в итоге должна же собраться
не понял.
Ответить с цитированием
  #17 (permalink)  
Старый 01.06.2018, 16:38
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от Amedeo Avogadro
Ну это DOM как я понимаю, а вот именно создать пользовательский объект
Ну вот эти ячейки наверное могут стать такими объектами, определи их классом, придумай интерфейс.
Ответить с цитированием
  #18 (permalink)  
Старый 01.06.2018, 21:01
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
	.klet, .cl{
		width: 50px;
		height: 50px;
		background-color: #ddd;
		font-size: 42px;
		border: 5px solid #ccc;
		color: grey;
		text-align: center;
	}
	.cl{
		background-color: white;
		border: 0;
		color: white;
	}
	.green{
		background-color: #B6FF00FF;
	}
</style>
</head>
<body>
	<div id="game"></div>
	<script>
		var game = document.querySelector('#game'),
		table = document.createElement('table'), str = '';
		arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,'cl'].sort((a, b)=>Math.random() - 0.5);

		for(var i = 0; i<4; i++){
			str += '<tr>';
			for(var j = 0; j<4; j++)  str += '<td class="klet '+(arr[arr.length-1] == 'cl'&&'cl')+'">'+arr.pop();
		}

	table.innerHTML = str;
	game.append(table);
	var td = document.querySelectorAll('td');

	function fn2(t){
		var cl = document.querySelector('.cl'),
		text = t.textContent;
		t.textContent = 'cl';
		cl.textContent = text;
		cl.classList.remove('cl');
		t.classList.add('cl');
		fn1();
	}

	(fn1=()=>{
		var x = 0;
		for(var i = 0; i<15; i++){
			if(i+1 == td[i].textContent*1 && i==x) {
				td[i].classList.add('green');
				if(++x == 15) alert('Победа');
			}
			else td[i].classList.remove('green');
			}
	})();

	td.forEach((el,i) => el.onclick = function(){
		if ((i!=0 && i!=4 && i!=8 && i!=12 && td[i-1].matches('.cl')) || (i!=15 && i!=11 && i!=7 && i!=3 && td[i+1].matches('.cl')) || (i<12 && td[i+4].matches('.cl')) ||(i>3 && td[i-4].matches('.cl')) ) fn2(this);
});


</script>
</body>
</html>
Ответить с цитированием
  #19 (permalink)  
Старый 02.06.2018, 12:06
Новичок на форуме
Отправить личное сообщение для Amedeo Avogadro Посмотреть профиль Найти все сообщения от Amedeo Avogadro
 
Регистрация: 29.05.2018
Сообщений: 9

Сообщение от j0hnik Посмотреть сообщение
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
	.klet, .cl{
		width: 50px;
		height: 50px;
		background-color: #ddd;
		font-size: 42px;
		border: 5px solid #ccc;
		color: grey;
		text-align: center;
	}
	.cl{
		background-color: white;
		border: 0;
		color: white;
	}
	.green{
		background-color: #B6FF00FF;
	}
</style>
</head>
<body>
	<div id="game"></div>
	<script>
		var game = document.querySelector('#game'),
		table = document.createElement('table'), str = '';
		arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,'cl'].sort((a, b)=>Math.random() - 0.5);

		for(var i = 0; i<4; i++){
			str += '<tr>';
			for(var j = 0; j<4; j++)  str += '<td class="klet '+(arr[arr.length-1] == 'cl'&&'cl')+'">'+arr.pop();
		}

	table.innerHTML = str;
	game.append(table);
	var td = document.querySelectorAll('td');

	function fn2(t){
		var cl = document.querySelector('.cl'),
		text = t.textContent;
		t.textContent = 'cl';
		cl.textContent = text;
		cl.classList.remove('cl');
		t.classList.add('cl');
		fn1();
	}

	(fn1=()=>{
		var x = 0;
		for(var i = 0; i<15; i++){
			if(i+1 == td[i].textContent*1 && i==x) {
				td[i].classList.add('green');
				if(++x == 15) alert('Победа');
			}
			else td[i].classList.remove('green');
			}
	})();

	td.forEach((el,i) => el.onclick = function(){
		if ((i!=0 && i!=4 && i!=8 && i!=12 && td[i-1].matches('.cl')) || (i!=15 && i!=11 && i!=7 && i!=3 && td[i+1].matches('.cl')) || (i<12 && td[i+4].matches('.cl')) ||(i>3 && td[i-4].matches('.cl')) ) fn2(this);
});


</script>
</body>
</html>
ого, я тут некоторые места не понял но все равно спасибо.
Ответить с цитированием
  #20 (permalink)  
Старый 02.06.2018, 15:43
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Нахождение пустой ячейки
function getEmptyCell(thisIndex, rowLength, cellList) {
    
    var tpCell = cellList[thisIndex - rowLength];
    if (tpCell && tpCell.isEmpty) return tpCell;
    
    var ltCell = cellList[thisIndex - 1];
    if (ltCell && ltCell.isEmpty) return ltCell;
    
    var rtCell = cellList[thisIndex + 1];
    if (rtCell && rtCell.isEmpty) return rtCell;
    
    var bmCell = cellList[thisIndex + rowLength];
    if (bmCell && bmCell.isEmpty) return bmCell;
    
}


var testList = [
    { isEmpty: false }, { isEmpty: false }, { isEmpty: false },
    { isEmpty: false }, { isEmpty: false }, { isEmpty: false },
    { isEmpty: false }, { isEmpty: true  }, { isEmpty: false }
];

for (var i = 0; i < testList.length; i++) {
    console.log(i, getEmptyCell(i, 3, testList));
}
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу объективной критики сайта lovefarmacy.ru GTAlex Ваши сайты и скрипты 6 30.08.2017 11:52
Изучаю React.js + Redux, прошу советов по организации приложения endid Библиотеки/Тулкиты/Фреймворки 1 20.06.2017 00:22
Прошу оценить варианты цветовой гаммы, жду ваших советов Adriano Ваши сайты и скрипты 2 05.01.2014 17:35
прошу вас напишите JavaScript: объявления после каждого суббота Qartvela™ Общие вопросы Javascript 13 14.10.2012 11:23
Дополнительная панель в визивике. Прошу советов orlenkokn jQuery 0 25.01.2010 11:44