Вопрос по игре морской бой 
		
		
		
		Привет всем. Пишу данную игру и появилась проблема, например, есть 4-х палубный корабль, произошло попадание по этому кораблю, как найти остальные раненные части  корабля и определить убит ли корабль. 
	 | 
	
		
 lammeR, 
	Гы Вы б хоть выложили текущее Как то делал на jQuery 1. Создаем таблу 2. размещаем корабли - элементам ячеек с данным кораблем присваиваем двуклассный класс - 1 элемент которого - тип корабля - второй номер блока 3. При поадании проставляем в ячейку третий класс kill ищем остальные ячейки по классу корабля,  | 
	
		
 Не совсем понял что за "двуклассный класс", можно пример такого класса? Это ассоциативный массив в смысле?) 
	 | 
	
		
 Цитата: 
	
 
<style>
td{
 width:14px;
}
.titanick {
color:#fff;
text-shadow:#000 1px 1px 1px;
background-color:red;
}
.bl_1{
background-color:blue;
}
.kil{
 background:url(http://uploads.ru/i/X/D/6/XD6Of.png) right center;
  color:transparent;
}
.bl_4{
background-color:green;
}
</style>
<table>
<tr>
<td class="titanick bl_1">1</td>
<td class="titanick bl_2">2</td>
<td class="titanick bl_3 kil">3</td>
<td class="titanick bl_4 ">4</td>
</tr>
</table>
 | 
	
		
 Deff, Спасибо за внимание, но с выводом нет никаких проблем, я имел ввиду работу с массивом, алгоритм поиска подбитых клеток и определение ранен или убит корабль в самом массиве. 
	 | 
	
		
 Как вариант, попробуйте при создании кораблей делать массив вида: 
	[ [1,1,1,1], [1,1,1], [1], [1,1] ] При подбитие заменяйте 1 на 0, а потом проверяйте сколько 1 осталсь, если их не осталось, то корабль убит. Никогда не пробовал, но как идея, может попробуете  | 
	
		
 9xakep, - нормальная Идея, ну коль я начал уже так, продолжу: 
	Кликаем по Квадратикам! 
<html>
<body>
<style>
body{
  background-color:blue;
}
#wrap {
  width:156px;
  background-color:#fff;
}
td{
 text-align:center;
 border:2px solid #000;
 color:#fff;
 text-shadow:#000 1px 1px 1px;
 background-color:blue;
 width:14px;
 height:18px;
}
td[class*="bl_"]{
 border:1px solid #FFFFFF;
 background-color:green;
}
.БАБАХ{
  background-image:url(http://uploads.ru/i/L/4/q/L4qjf.png);
  background-position:1px 0;
  color:transparent;
}
</style>
<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>
<div id=wrap>
<table class="table1">
<tr>
<td class=""> </td>
<td class=""> </td>
<td class=""> </td>
<td class=""> </td>
<td class=""> </td>
<td class=""> </td>
<td class=""> </td>
</tr>
<tr>
<td class="bark  bl_1">1</td>
<td class=""> </td>
<td class="titanick bl_1">1</td>
<td class="titanick bl_2">2</td>
<td class="titanick bl_3 БАБАХ">3</td>
<td class="titanick bl_4 ">4</td>
<td class=""> </td>
</tr>
<tr>
<td class="bark  bl_2 БАБАХ">2</td>
<td class=""> </td>
<td class=""> </td>
<td class=""> </td>
<td class=""> </td>
<td class=""> </td>
<td class="БАБАХ"> </td>
</tr>
</table>
</div>
<br />
<script type="text/javascript">
var TypeKorabl=[
	'titanick',
//	'titanick_2',	//Eще подобные
//	'bark_2',	//Eще подобные
	'bark'
	]
var titanick=4;
var bark=2;
function TstPopad_Korabl(ThisTD) {
  var ThisKorabl;
    for(var i in TypeKorabl){  //Определяем Класс подбитого корабля 
    
      if(ThisTD.hasClass(TypeKorabl[i])){ThisKorabl=TypeKorabl[i];break;}
    }
    if(typeof(ThisKorabl)=='undefined'){return false} //Промазали!
  return ThisKorabl
}
function Убит_Tst(ThisKorabl) {
    var a=eval(ThisKorabl) //Устанавливаем общее число блоков подбитого корабля
    $("."+ThisKorabl+".БАБАХ").each(function(i){
        a-- ;//Удаляем убитые блоки;
    });
    if(a!=0){alert("\""+ThisKorabl+"\" Ранен, осталось целых отсеков: " + a )}
    else {
	   var index;
	   for(var k in TypeKorabl){
             if(TypeKorabl[k]==ThisKorabl){index=k; break }
	   } TypeKorabl.splice(index,1);
           alert("\""+ThisKorabl+"\" Убит!");
           if(!TypeKorabl.length){alert("Противник -Уничтожен!\n\n = GAME OVER! =")
	   $('table td').unbind();  // Отключаем клики
        }
    }
} 
$('table td').bind('click', function() { //Клик по клетке
   if(!$(this).hasClass('БАБАХ')){
      $(this).addClass('БАБАХ');
         var ThisKorabl=TstPopad_Korabl($(this))
            if(ThisKorabl){Убит_Tst(ThisKorabl)}
	    else {alert("Промазал!")}
   }
});
</script>
</body>
</html>
 | 
	
		
 Deff, 
	9xakep, спасибо, но я не хочу создавать стопиццот переменных) Я скорее всего буду при поиске подбитых палуб проверять клетки по бокам, определять в какую сторону он идет, потом считать клетки в обе стороны по ходу расположения до пустой клетки(воды) и проверять раненные клетки и целые непременно в самом игровом поле(в массиве) .  | 
	
		
 lammeR, 
	ну и кого 100500 переменных)?  | 
	
		
 lammeR, 
	Самая простая - это идея xakep 1. При заполнении кораблями - создаём массив на каждый корабль и в массив прописываем координаты каждой клетки Массивов будет по кол-ву кораблей 2. При клике перебираем массив и смотрим совпадения координат убитые блоки - удаляем, если массив 0 длины - корабль - убит, -удаляем весь массив  | 
	
		
 Deff, угу так и есть, но как-то неинтересно ) Я хотел подумать как бы без вспомогательных массивов сделать. 
	 | 
	
		
 lammeR, 
	Ясн - то есть вы хотите осуществить "Мышиный поиск сыра" Т.е от текущей координаты двигать вверх - если нет - вниз - если нет - влево - если нет -вправо - если нет совсем - корабль убит Если есть - нун запоминать вектор движения и двигать в том жа направлении - либо в обратном(если там уже не проверено, (*Т.е Будет создаваться динамический массив куска таблицы текущего поиска который легко обходицо - если заполненные ячейки в табле отмечены классом корабля  | 
	
		
 Цитата: 
	
  | 
	
		
 Морской бой онлайн вдвоем 
		
		
		
		А я реализовал морской бой на jquery + socket.io - пожалуйста полюбуйтесь http://mboi.ru/morskoi-boi/ 
	 | 
	
		
 satels, 
	Вообщем достаточно клёво 1.Из минусов - нет стандартной проверки нестыковки кораблей бортами 2. Оформление бледноватое, (подойдет лишь для 20 игры) Бледные краски; Таблы максимально ужаты и приближены друг, к другу; Нет красивого визуального оформления кораблей; 3. Не нашел игрального автомата(Ну один я сижу), играющего за второго пользователя( мон было реализовать его на jquery  | 
	
		
 Ок, спасибо за отзыв. Он действительно важен и поправлю то, что ты написал. Скорее всего через фриланс сделаю оформление, т.к. я сам не рисую 
	 | 
| Часовой пояс GMT +3, время: 10:17. |