<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; OFF: Морской бой]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=8198</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=8198&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «OFF: Морской бой».]]></description>
		<lastBuildDate>Tue, 29 Oct 2013 15:29:29 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: OFF: Морской бой]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=76672#p76672</link>
			<description><![CDATA[<p>Идея умерла так и не родившись?</p>]]></description>
			<author><![CDATA[null@example.com (Arigato)]]></author>
			<pubDate>Tue, 29 Oct 2013 15:29:29 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=76672#p76672</guid>
		</item>
		<item>
			<title><![CDATA[Re: OFF: Морской бой]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=71134#p71134</link>
			<description><![CDATA[<p><strong>Александр_</strong>, из описаний не понятные следующие моменты: <br />-- какой протокол передачи данных предполагается использовать <br />-- верно ли что реализация ориентирована в первую очередь на языки семейства AHK <br />-- возможно ли будет реализовать свой клиент на других скриптовых языках (например, js, perl, другие языки)</p><p>----</p><p>Лог игры должен быть простым как запись шахматной партии и информативным, чтобы можно было воспроизвести игру в пошаговом режиме - программно или вручную. Например:</p><div class="codebox"><pre><code>
координаты выстрела
попадание - например, символ &quot;:&quot; (двоеточие)
уничтожение - &quot;+&quot; (плюс), &quot;x&quot; (латинское икс)
</code></pre></div><p>Простая запись - один выстрелил на e1, другой - на k0. <br /></p><div class="codebox"><pre><code>
e1 k0
</code></pre></div><p>Первый выстрелил три раза: два раза удачно на b1, a1 и мимо на c1. <br />Аналогичная запись для второго игрока. <br /></p><div class="codebox"><pre><code>
b1:a1+c1 k9+h8
ba1+c1 k9h8
bac1 k9h8
</code></pre></div><p>Вообще-то достаточно возвращать координаты выстрелов.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Sun, 07 Apr 2013 02:35:19 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=71134#p71134</guid>
		</item>
		<item>
			<title><![CDATA[Re: OFF: Морской бой]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=71132#p71132</link>
			<description><![CDATA[<p>У меня такая наработка. Для поля<br /><span class="postimg"><img src="http://i.imgur.com/gUbqETi.jpg" alt="http://i.imgur.com/gUbqETi.jpg" /></span><br /></p><div class="codebox"><pre><code>; клетки записываются сверху вниз и слева направо
str := &quot;1000000000000001010100000101000000010000111001000000000000000100001100000100000100010010000001001000&quot;

Letters := &quot;abcdefghij&quot;
Area := {}   ; именованый массив для всего поля, ключи будут называться по буквам

Loop 10   ; в каждом буквенном ключе будет массив со значениями клеток
   Area[Substr(Letters, A_Index, 1)] := []

Loop, Parse, str   ; заполняем
   Area[Substr(Letters, (A_Index - 1)//10 + 1, 1)][Mod(A_Index - 1, 10) + 1] := A_LoopField

Ships := []   ; массив для кораблей

Loop 10   ; делаем в массиве 10 подмассивов, в каждом будут идентификаторы (вида &quot;h10&quot;) клеток одного из кораблей
   Ships[A_Index] := []

i := 1
for Letter,Array in Area   ; заполняем массив кораблей, анализируя массив клеток
   for Number,Value in Array
      if Value
      {
         IsPrev := &quot;&quot;
         for k,v in Ships
            for n,s in v
               if ((SubStr(s, 1, 1) = Chr(Asc(Letter)-1) &amp;&amp; SubStr(s, 2) = Number)
                  || (SubStr(s, 1, 1) = Letter &amp;&amp; SubStr(s, 2) = Number - 1))
               {
                  v.Insert(Letter . Number), IsPrev := 1
                  break 2
               }
               
         if !IsPrev
            Ships[i++].Insert(Letter . Number)
      }

for k,v in Ships   ; смотрим, что получилось
{
   for m,n in v
      List .= (A_Index = 1 ? &quot;&quot; : &quot;, &quot;) . n
   List .= &quot;`n&quot;
}

MsgBox, % &quot;Корабли:`n`n&quot; List</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 07 Apr 2013 00:51:20 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=71132#p71132</guid>
		</item>
		<item>
			<title><![CDATA[Re: OFF: Морской бой]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=71046#p71046</link>
			<description><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>В общих чертах ясно, я тогда пока с графики начну.</p></blockquote></div><p>Ну да, а я завтра уже какой-нибудь вариант сервера выложу, может ещё не совсем готовый, но работоспособный. Сегодня наверно уже не успею. Ну и пример элементарного скрипта на ahk сделаю.<br /><strong>upd.</strong> Прошу прощения, сегодня не смогу ничего выложить, только сейчас взялся за работу. Постараюсь закончить как можно быстрее.</p>]]></description>
			<author><![CDATA[null@example.com (Александр_)]]></author>
			<pubDate>Tue, 02 Apr 2013 20:24:13 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=71046#p71046</guid>
		</item>
		<item>
			<title><![CDATA[Re: OFF: Морской бой]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=71045#p71045</link>
			<description><![CDATA[<p>В общих чертах ясно, я тогда пока с графики начну. В графическом режиме скрипту-интерфейсу, наверное, проще получать информацию через оконные сообщения, чем через файл.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 02 Apr 2013 20:17:33 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=71045#p71045</guid>
		</item>
		<item>
			<title><![CDATA[Re: OFF: Морской бой]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=71044#p71044</link>
			<description><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>А в каком виде клиент должен подавать серверу свою расстановку</p></blockquote></div><p>Расстановку подаёт строкой из ста единиц и нулей, по одному символу на клетку(это было написано в 12-ом посте).<br /></p><div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>и как сервер будет определять, что корабль убит?</p></blockquote></div><p>Это проблемы сервера(т.е. реализации). Я весь код клиента выложу вместе с исполняемым файлом.</p>]]></description>
			<author><![CDATA[null@example.com (Александр_)]]></author>
			<pubDate>Tue, 02 Apr 2013 20:07:03 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=71044#p71044</guid>
		</item>
		<item>
			<title><![CDATA[Re: OFF: Морской бой]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=71043#p71043</link>
			<description><![CDATA[<p>Ну ладно, это не критично. А в каком виде клиент должен подавать серверу свою расстановку, и как сервер будет определять, что корабль убит?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 02 Apr 2013 19:48:33 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=71043#p71043</guid>
		</item>
		<item>
			<title><![CDATA[Re: OFF: Морской бой]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=71042#p71042</link>
			<description><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Можно и так, но если в ключи <em>Area1</em> и <em>Area2</em> писать все поля, как раз таки лог и получится гораздо больше. Может, проще придумать другой способ занесения в массив?</p></blockquote></div><p>Ну процентов на 15 увеличится. Просто запись вида &quot;Area1 = A1,B2B4,C7C10&quot; будет не так удобно парсить.</p>]]></description>
			<author><![CDATA[null@example.com (Александр_)]]></author>
			<pubDate>Tue, 02 Apr 2013 19:13:22 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=71042#p71042</guid>
		</item>
		<item>
			<title><![CDATA[Re: OFF: Морской бой]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=71041#p71041</link>
			<description><![CDATA[<p>Можно и так, но если в ключи <em>Area1</em> и <em>Area2</em> писать все поля, как раз таки лог и получится гораздо больше. Может, проще придумать другой способ занесения в массив?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 02 Apr 2013 18:38:28 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=71041#p71041</guid>
		</item>
		<item>
			<title><![CDATA[Re: OFF: Морской бой]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=71040#p71040</link>
			<description><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Я предложил ini, потому что в AHK с ними просто работать — указываешь название секции, название ключа и парсишь/изменяешь/добавляешь значение.</p></blockquote></div><p>Я тоже про AHK_L писал, просто я боюсь, что лог окажется большого размера. Давай тогда попробуем с ini, если что поменяем формат. Я думаю файл будет примерно так выглядеть:<br /></p><div class="codebox"><pre><code>[general]
id1 = botVasya
id2 = MegaBotV101
TotalRounds = 100
CurrentRounds = 23
Score = 11-12

[Round1]
Area1 = ...
Area2 = ...
First = 1
Steps = 1A8M,2B9W,2B10K,...
[Round2]
...
</code></pre></div><p>1A8M - первый игрок выстрелил по A8 и промахнулся. Игрок указан чтобы было понятно чей ход, если писать ходы в разные ключи то будет непонятен порядок.<br /></p><div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Ты, наверное, как-то по-своему всё это видишь. Зачем заносить всё поле, если можно занести только занятые клетки?</p></blockquote></div><p>Я это вижу так:<br /></p><div class="codebox"><pre><code>Area := Object()
Loop, Parse, InputVar
   Area[%A_Index%//10+1][Mod(%A_Index%,10)+1] = %A_LoopField%</code></pre></div><p>Дальше с Area удобно работать.</p>]]></description>
			<author><![CDATA[null@example.com (Александр_)]]></author>
			<pubDate>Tue, 02 Apr 2013 18:17:25 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=71040#p71040</guid>
		</item>
		<item>
			<title><![CDATA[Re: OFF: Морской бой]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=71039#p71039</link>
			<description><![CDATA[<div class="quotebox"><cite>Александр_ пишет:</cite><blockquote><p>А это точно будет удобно? придётся ведь при каждом обновлении перечитывать весь файл.</p></blockquote></div><p>Я предложил ini, потому что в AHK с ними просто работать — указываешь название секции, название ключа и парсишь/изменяешь/добавляешь значение. Как в других языках, не знаю, будет ли так же удобно — тебе виднее (кстати, никто пока на vbs не подписывался играть).</p><div class="quotebox"><cite>Александр_ пишет:</cite><blockquote><p>И вместо расположения кораблей проще всё игровое поле писать, его ведь потом всё равно в массив заносить.</p></blockquote></div><p>Ты, наверное, как-то по-своему всё это видишь. Зачем заносить всё поле, если можно занести только занятые клетки?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 02 Apr 2013 17:42:20 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=71039#p71039</guid>
		</item>
		<item>
			<title><![CDATA[Re: OFF: Морской бой]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=71038#p71038</link>
			<description><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Что-то типа ini-файла можно.</p></blockquote></div><p>А это точно будет удобно? придётся ведь при каждом обновлении перечитывать весь файл. Может лучше дать возможность последовательной обработки? Чтобы всю начальную информацию о партии и раунде можно было получить регулярным выражением, а ходы через Loop. А добавление новых данных удобно проверять через <a href="http://l.autohotkey.net/docs/objects/File.htm">File.AtEOF</a>.<br />И вместо расположения кораблей проще всё игровое поле писать, его ведь потом всё равно в массив заносить.</p>]]></description>
			<author><![CDATA[null@example.com (Александр_)]]></author>
			<pubDate>Tue, 02 Apr 2013 17:28:44 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=71038#p71038</guid>
		</item>
		<item>
			<title><![CDATA[Re: OFF: Морской бой]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=71036#p71036</link>
			<description><![CDATA[<p>Да, вместо 10 можно 0 для простоты.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 02 Apr 2013 17:06:38 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=71036#p71036</guid>
		</item>
		<item>
			<title><![CDATA[Re: OFF: Морской бой]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=71035#p71035</link>
			<description><![CDATA[<p>Ещё ключ &quot;first=[идентификатор клиента]&quot; — кто ходил первым.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 02 Apr 2013 16:55:24 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=71035#p71035</guid>
		</item>
		<item>
			<title><![CDATA[Re: OFF: Морской бой]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=71034#p71034</link>
			<description><![CDATA[<div class="quotebox"><cite>Александр_ пишет:</cite><blockquote><p>Кстати формат лога какой будет?</p></blockquote></div><p>Что-то типа ini-файла можно. Заголовок секции — идентификатор игры. Далее два ключа типа &quot;[идентификатор клиента][pos]= ...&quot; и далее позиции кораблей через разделитель. Два ключа &quot;[идентификатор клиента][game]= A8M,B9W,B10K,...&quot;. Ключ &quot;Winner=[идентификатор клиента]&quot;. Как-то так.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 02 Apr 2013 16:46:16 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=71034#p71034</guid>
		</item>
	</channel>
</rss>
