<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Luin&#039;s Blog &#187; Borland Delphi</title>
	<atom:link href="http://luinlee.com/category/study-tech/delphi/feed/" rel="self" type="application/rss+xml" />
	<link>http://luinlee.com</link>
	<description>A long river</description>
	<lastBuildDate>Sat, 07 Aug 2010 04:55:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>来，做个驴坝！用Delphi开发A片扫描器</title>
		<link>http://luinlee.com/396/delphia/</link>
		<comments>http://luinlee.com/396/delphia/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 13:25:00 +0000</pubDate>
		<dc:creator>Luin</dc:creator>
				<category><![CDATA[Borland Delphi]]></category>
		<category><![CDATA[微软]]></category>

		<guid isPermaLink="false">http://luinlee.com/?p=396</guid>
		<description><![CDATA[其实驴坝这个东西是挺好玩的，对被监控有爱的同学可以下来尝试一下。 这里，来讲一个用小创意干大事（俗称小炮打恐龙）的故事。 这个故事的结局是我们可以开发一个能找出电脑中所有A片的程序，这是个集合了影像分析、画面色块分层、人工智能等复杂算法的复杂的玩意。 好吧，其实这个程序只是简单读了下文件头而已(喂喂，那位拿板砖的同学请把板砖放下)。 我们假设一般人会把A片的扩展名改掉(例如改成txt、bmp等格式。曾经的realplayer年代有人会把rmvb格式的A片改成avi格式，现在由于暴风射手之流的出现导致这种方法不灵了)，于是我们只有扫描一下文件的头部数据判断这个文件是不是一个影像文件，然后再判断这个文件的扩展名是不是一个影像文件的扩展名，如果不是自然就很可能是A片了(如果是的话应该就是阿凡达这类的电影了，你总不能说人家是A片吧)。 先送上队列遍历文件的代码(递归算法在这里更容易理解，但实际上很容易超栈溢出): function EnumFileInQueue&#40;path:PChar&#41;:Longint;stdcall; var searchRec:TSearchRec; found:Integer; tmpStr:String; curDir:PChar; dirs:TQueue; begin Result:=0;//查找结果(文件数) dirs:=TQueue.Create;//创建目录队列 dirs.Push&#40;path&#41;;//将起始搜索路径入队 curDir:=dirs.Pop;//出队 while &#40;curDir&#38;lt;&#38;gt; nil&#41; do begin tmpStr:=StrPas&#40;curDir&#41;+'\*.*'; found:=FindFirst&#40;tmpStr,faAnyFile,searchRec&#41;; while found=0 do begin if &#40;searchRec.Attr and faDirectory&#41;&#38;lt;&#38;gt;0 then begin if &#40;searchRec.Name &#38;lt;&#38;gt; '.'&#41; and &#40;searchRec.Name &#38;lt;&#38;gt; '..'&#41; then begin tmpStr:=StrPas&#40;curDir&#41;+'\'+searchRec.Name; dirs.Push&#40;StrNew&#40;PChar&#40;tmpStr&#41;&#41;&#41;; end; end //如果找到的是个文件 else begin Result:=Result+1; //form1.Label2.Caption [...]]]></description>
			<content:encoded><![CDATA[<p>其实驴坝这个东西是挺好玩的，对被监控有爱的同学可以下来尝试一下。</p>
<p>这里，来讲一个用小创意干大事（俗称小炮打恐龙）的故事。</p>
<p>这个故事的结局是我们可以开发一个能找出电脑中所有A片的程序，这是个集合了影像分析、画面色块分层、人工智能等复杂算法的复杂的玩意。</p>
<div id="attachment_399" class="wp-caption alignleft" style="width: 310px"><a class="highslide img_1" href="http://luinlee.com/wp-content/uploads/2010/03/AScan.png" onclick="return hs.expand(this)"><img class="size-medium wp-image-399" title="A片扫描器" src="http://luinlee.com/wp-content/uploads/2010/03/AScan-300x213.png" alt="A片扫描器" width="300" height="213" /></a><p class="wp-caption-text">A片扫描器</p></div>
<p>好吧，其实这个程序只是简单读了下文件头而已(喂喂，那位拿板砖的同学请把板砖放下)。</p>
<p>我们假设一般人会把A片的扩展名改掉(例如改成txt、bmp等格式。曾经的realplayer年代有人会把rmvb格式的A片改成avi格式，现在由于暴风射手之流的出现导致这种方法不灵了)，于是我们只有扫描一下文件的头部数据判断这个文件是不是一个影像文件，然后再判断这个文件的扩展名是不是一个影像文件的扩展名，如果不是自然就很可能是A片了(如果是的话应该就是阿凡达这类的电影了，你总不能说人家是A片吧)。</p>
<p>先送上队列遍历文件的代码(递归算法在这里更容易理解，但实际上很容易超栈溢出):</p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> EnumFileInQueue<span style="color: #000066;">&#40;</span>path<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">PChar</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">Longint</span><span style="color: #000066;">;</span>stdcall<span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">var</span>
    searchRec<span style="color: #000066;">:</span>TSearchRec<span style="color: #000066;">;</span>
    found<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">Integer</span><span style="color: #000066;">;</span>
    tmpStr<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">String</span><span style="color: #000066;">;</span>
    curDir<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">PChar</span><span style="color: #000066;">;</span>
    dirs<span style="color: #000066;">:</span>TQueue<span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
    Result<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">;</span><span style="color: #808080; font-style: italic;">//查找结果(文件数)</span>
    dirs<span style="color: #000066;">:</span><span style="color: #000066;">=</span>TQueue<span style="color: #000066;">.</span><span style="color: #006600;">Create</span><span style="color: #000066;">;</span><span style="color: #808080; font-style: italic;">//创建目录队列</span>
    dirs<span style="color: #000066;">.</span><span style="color: #006600;">Push</span><span style="color: #000066;">&#40;</span>path<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span><span style="color: #808080; font-style: italic;">//将起始搜索路径入队</span>
    curDir<span style="color: #000066;">:</span><span style="color: #000066;">=</span>dirs<span style="color: #000066;">.</span><span style="color: #006600;">Pop</span><span style="color: #000066;">;</span><span style="color: #808080; font-style: italic;">//出队</span>
    <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #000066;">&#40;</span>curDir&amp;lt<span style="color: #000066;">;</span>&amp;gt<span style="color: #000066;">;</span> <span style="color: #000000; font-weight: bold;">nil</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
    <span style="color: #000000; font-weight: bold;">begin</span>
        tmpStr<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000066;">StrPas</span><span style="color: #000066;">&#40;</span>curDir<span style="color: #000066;">&#41;</span><span style="color: #000066;">+</span><span style="color: #ff0000;">'\*.*'</span><span style="color: #000066;">;</span>
        found<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000066;">FindFirst</span><span style="color: #000066;">&#40;</span>tmpStr<span style="color: #000066;">,</span>faAnyFile<span style="color: #000066;">,</span>searchRec<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
        <span style="color: #000000; font-weight: bold;">while</span> found<span style="color: #000066;">=</span><span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">do</span>
        <span style="color: #000000; font-weight: bold;">begin</span>
            <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #000066;">&#40;</span>searchRec<span style="color: #000066;">.</span><span style="color: #006600;">Attr</span> <span style="color: #000000; font-weight: bold;">and</span> faDirectory<span style="color: #000066;">&#41;</span>&amp;lt<span style="color: #000066;">;</span>&amp;gt<span style="color: #000066;">;</span><span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">then</span>
            <span style="color: #000000; font-weight: bold;">begin</span>
                <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #000066;">&#40;</span>searchRec<span style="color: #000066;">.</span><span style="color: #006600;">Name</span> &amp;lt<span style="color: #000066;">;</span>&amp;gt<span style="color: #000066;">;</span> <span style="color: #ff0000;">'.'</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">and</span> <span style="color: #000066;">&#40;</span>searchRec<span style="color: #000066;">.</span><span style="color: #006600;">Name</span> &amp;lt<span style="color: #000066;">;</span>&amp;gt<span style="color: #000066;">;</span> <span style="color: #ff0000;">'..'</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span>
                <span style="color: #000000; font-weight: bold;">begin</span>
                    tmpStr<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000066;">StrPas</span><span style="color: #000066;">&#40;</span>curDir<span style="color: #000066;">&#41;</span><span style="color: #000066;">+</span><span style="color: #ff0000;">'\'</span><span style="color: #000066;">+</span>searchRec<span style="color: #000066;">.</span><span style="color: #006600;">Name</span><span style="color: #000066;">;</span>
                    dirs<span style="color: #000066;">.</span><span style="color: #006600;">Push</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">StrNew</span><span style="color: #000066;">&#40;</span><span style="color: #000066; font-weight: bold;">PChar</span><span style="color: #000066;">&#40;</span>tmpStr<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
                <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
            <span style="color: #000000; font-weight: bold;">end</span>
            <span style="color: #808080; font-style: italic;">//如果找到的是个文件</span>
            <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #000000; font-weight: bold;">begin</span>
                Result<span style="color: #000066;">:</span><span style="color: #000066;">=</span>Result<span style="color: #000066;">+</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
                <span style="color: #808080; font-style: italic;">//form1.Label2.Caption  := StrPas(curDir)+'\';</span>
                <span style="color: #808080; font-style: italic;">//form1.Label1.Caption :=(StrPas(curDir)+'\'+searchRec.Name);</span>
                <span style="color: #000000; font-weight: bold;">if</span> isA<span style="color: #000066;">&#40;</span><span style="color: #000066;">StrPas</span><span style="color: #000066;">&#40;</span>curDir<span style="color: #000066;">&#41;</span><span style="color: #000066;">+</span><span style="color: #ff0000;">'\'</span><span style="color: #000066;">+</span>searchRec<span style="color: #000066;">.</span><span style="color: #006600;">Name</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span>
                <span style="color: #000000; font-weight: bold;">begin</span>
                  Form1<span style="color: #000066;">.</span><span style="color: #006600;">Memo1</span><span style="color: #000066;">.</span><span style="color: #006600;">Lines</span><span style="color: #000066;">.</span><span style="color: #006600;">Add</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">StrPas</span><span style="color: #000066;">&#40;</span>curDir<span style="color: #000066;">&#41;</span><span style="color: #000066;">+</span><span style="color: #ff0000;">'\'</span><span style="color: #000066;">+</span>searchRec<span style="color: #000066;">.</span><span style="color: #006600;">Name</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
                  <span style="color: #808080; font-style: italic;">//form1.Button2.Click;</span>
                <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
            <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
            found<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000066;">FindNext</span><span style="color: #000066;">&#40;</span>searchRec<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
        <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
        <span style="color: #000000; font-weight: bold;">if</span> dirs<span style="color: #000066;">.</span><span style="color: #006600;">Count</span> &amp;gt<span style="color: #000066;">;</span> <span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">then</span>
            curDir<span style="color: #000066;">:</span><span style="color: #000066;">=</span>dirs<span style="color: #000066;">.</span><span style="color: #006600;">Pop</span>
        <span style="color: #000000; font-weight: bold;">else</span>
            curDir<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">nil</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
    dirs<span style="color: #000066;">.</span><span style="color: #006600;">Free</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">FindClose</span><span style="color: #000066;">&#40;</span>searchRec<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span></pre></div></div>

<p>然后是获得文件头部信息的代码：</p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">Function</span> GetFileBegin<span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">const</span> Filename<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">String</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">String</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Var</span>
  i<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
  Source<span style="color: #000066;">:</span> tfilestream<span style="color: #000066;">;</span>
  s2<span style="color: #000066;">,</span> s3<span style="color: #000066;">,</span> s<span style="color: #000066;">,</span> s4<span style="color: #000066;">,</span> s5<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">String</span><span style="color: #000066;">;</span>
  Buf<span style="color: #000066;">:</span> <span style="color: #000000; font-weight: bold;">Array</span><span style="color: #000066;">&#91;</span>0<span style="color: #000066;">..</span><span style="color: #006600;">MaxBuf</span><span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">&#93;</span> <span style="color: #000000; font-weight: bold;">Of</span> <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Begin</span>
  result<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #ff0000;">''</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">Try</span>
    Source<span style="color: #000066;">:</span><span style="color: #000066;">=</span>tfilestream<span style="color: #000066;">.</span><span style="color: #006600;">Create</span><span style="color: #000066;">&#40;</span>Filename<span style="color: #000066;">,</span> fmOpenRead <span style="color: #000000; font-weight: bold;">Or</span> fmShareDenyNone<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">If</span> Source<span style="color: #000066;">.</span><span style="color: #006600;">Size</span>&amp;lt<span style="color: #000066;">;</span><span style="color: #0000ff;">10</span> <span style="color: #000000; font-weight: bold;">Then</span> <span style="color: #000066;">Exit</span><span style="color: #000066;">;</span>
    Source<span style="color: #000066;">.</span><span style="color: #000066;">Seek</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">,</span> sofrombeginning<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">Try</span>
      Source<span style="color: #000066;">.</span><span style="color: #000066;">Read</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">,</span> <span style="color: #000066;">SizeOf</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
      <span style="color: #000000; font-weight: bold;">For</span> i<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">To</span> MaxBuf<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span> <span style="color: #000000; font-weight: bold;">Do</span>
        s<span style="color: #000066;">:</span><span style="color: #000066;">=</span>s<span style="color: #000066;">+</span><span style="color: #000066;">IntToHex</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">,</span> <span style="color: #0000ff;">2</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
&nbsp;
      Source<span style="color: #000066;">.</span><span style="color: #000066;">Read</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">,</span> <span style="color: #000066;">SizeOf</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
      <span style="color: #000000; font-weight: bold;">For</span> i<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">To</span> MaxBuf<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span> <span style="color: #000000; font-weight: bold;">Do</span>
        s2<span style="color: #000066;">:</span><span style="color: #000066;">=</span>s2<span style="color: #000066;">+</span><span style="color: #000066;">IntToHex</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">,</span> <span style="color: #0000ff;">2</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
&nbsp;
      Source<span style="color: #000066;">.</span><span style="color: #000066;">Read</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">,</span> <span style="color: #000066;">SizeOf</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
      <span style="color: #000000; font-weight: bold;">For</span> i<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">To</span> MaxBuf<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span> <span style="color: #000000; font-weight: bold;">Do</span>
        s3<span style="color: #000066;">:</span><span style="color: #000066;">=</span>s3<span style="color: #000066;">+</span><span style="color: #000066;">IntToStr</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
&nbsp;
      Source<span style="color: #000066;">.</span><span style="color: #000066;">Read</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">,</span> <span style="color: #000066;">SizeOf</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
      <span style="color: #000000; font-weight: bold;">For</span> i<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">To</span> MaxBuf<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span> <span style="color: #000000; font-weight: bold;">Do</span>
        s4<span style="color: #000066;">:</span><span style="color: #000066;">=</span>s4<span style="color: #000066;">+</span><span style="color: #000066;">IntToStr</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
&nbsp;
      Source<span style="color: #000066;">.</span><span style="color: #000066;">Read</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">,</span> <span style="color: #000066;">SizeOf</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
      <span style="color: #000000; font-weight: bold;">For</span> i<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">To</span> MaxBuf<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span> <span style="color: #000000; font-weight: bold;">Do</span>
        s5<span style="color: #000066;">:</span><span style="color: #000066;">=</span>s5<span style="color: #000066;">+</span><span style="color: #000066;">IntToStr</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
      s<span style="color: #000066;">:</span><span style="color: #000066;">=</span>s<span style="color: #000066;">+</span>s2<span style="color: #000066;">+</span>s3<span style="color: #000066;">+</span>s4<span style="color: #000066;">+</span>s5<span style="color: #000066;">;</span>
      result<span style="color: #000066;">:</span><span style="color: #000066;">=</span>s<span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">Finally</span>
      Source<span style="color: #000066;">.</span><span style="color: #006600;">Free</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">Except</span>
    result<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #ff0000;">''</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span></pre></div></div>

<p>当用这个函数检测文件时，返回一个由字母和数字组成的字符串，代表着文件头信息。</p>
<p>接下来是判断是否是A片的函数(isA,嗯，好名字):</p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> isA<span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">const</span> FileName<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">String</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">boolean</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">var</span>
  sbegin<span style="color: #000066;">,</span>stmp <span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">string</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  Result <span style="color: #000066;">:</span><span style="color: #000066;">=</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #000066;">;</span>
  stmp <span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000066;">ExtractFileExt</span><span style="color: #000066;">&#40;</span>FileName<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">if</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">&#40;</span>stmp<span style="color: #000066;">=</span><span style="color: #ff0000;">'.rm'</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">or</span><span style="color: #000066;">&#40;</span>stmp<span style="color: #000066;">=</span><span style="color: #ff0000;">'.rmvb'</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">or</span><span style="color: #000066;">&#40;</span>stmp<span style="color: #000066;">=</span><span style="color: #ff0000;">'.mpq'</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">or</span><span style="color: #000066;">&#40;</span>stmp<span style="color: #000066;">=</span><span style="color: #ff0000;">'.avi'</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">or</span><span style="color: #000066;">&#40;</span>stmp<span style="color: #000066;">=</span><span style="color: #ff0000;">'.rm'</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">or</span><span style="color: #000066;">&#40;</span>stmp<span style="color: #000066;">=</span><span style="color: #ff0000;">'.mpg'</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">exit</span><span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">false</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">if</span><span style="color: #000066;">&#40;</span>GetFileSize<span style="color: #000066;">&#40;</span>FileName<span style="color: #000066;">&#41;</span> &amp;lt<span style="color: #000066;">;</span> <span style="color: #0000ff;">10242880</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">exit</span><span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">false</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  sbegin <span style="color: #000066;">:</span><span style="color: #000066;">=</span> GetFileBegin<span style="color: #000066;">&#40;</span>FileName<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">if</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">pos</span><span style="color: #000066;">&#40;</span><span style="color: #ff0000;">'52494646'</span><span style="color: #000066;">,</span> sbegin<span style="color: #000066;">&#41;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">1</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">or</span>
     <span style="color: #000066;">&#40;</span><span style="color: #000066;">pos</span><span style="color: #000066;">&#40;</span><span style="color: #ff0000;">'2E524D'</span><span style="color: #000066;">,</span> sbegin<span style="color: #000066;">&#41;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">1</span><span style="color: #000066;">&#41;</span>
  <span style="color: #000066;">&#41;</span>
  <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">exit</span><span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span></pre></div></div>

<p>GetFileSize是我自己写的函数，可以获得文件大小，如果文件小于10242880字节就跳过检测(小于10MB的A片？)。</p>
<p>52494646和2E524D是rmvb和avi的头部信息，是使用上面的GetFileBegin函数算出来的，可以根据需要自己添加。</p>
<p>好了，一切已经完成。把程序编译出来拷到U盘里给朋友的电脑扫描一下吧(被拍不要找我&#8230;)。真简单，但真不和谐。</p>
<p>爱偷懒的同学<a href="http://luinlee.com/wp-content/uploads/2010/03/AScan.zip">猛击这里下载完整源代码和程序文件AScan</a></p>
<p>前些日子在微软技术部例会上听cxc大牛讲到一个类似的例子：如何找出电影的高潮部分呢？答案：用程序找出电影音量最大的部分就行了。——很简单，当然这个比较和谐。</p>
]]></content:encoded>
			<wfw:commentRss>http://luinlee.com/396/delphia/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>做了一个有AI的五子棋</title>
		<link>http://luinlee.com/50/five-cm/</link>
		<comments>http://luinlee.com/50/five-cm/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 13:52:33 +0000</pubDate>
		<dc:creator>Luin</dc:creator>
				<category><![CDATA[Borland Delphi]]></category>

		<guid isPermaLink="false">http://luinlee.com/?p=50</guid>
		<description><![CDATA[闲着没事弄了个五子棋程序，还是用delphi开发的。人工智能只用了1个小时做的，所以比较那啥~ 下载地址：Five2.zip(内容已更新，请到文章末尾重新下载) 右边的调试台是输出电脑的思维的。 现在的AI还没有优化，优化后的落子速度将是瞬时的。 制作步骤(delphi2009) 一、素材 素材包括棋盘和棋子，棋盘可以在网上找也可以自己画-_-!,我直接用的网上的素材。棋子是我自己画的，类似下面设置混合效果即可： 二、代码 全局用Timer控件控制电脑下棋： Procedure TForm1.Timer1Timer&#40;Sender: TObject&#41;; Var ix, iy: integer; Begin Timer1.Enabled:=False; Timer2.Enabled:=False; If FullMap Then Begin Flag2; Exit; End; if not GetComXY&#40;True,ix,iy&#41; then ; AddButton&#40;ix, iy, NowBlack&#41;; Timer2.Enabled:=true; End; &#160; Procedure TForm1.Timer2Timer&#40;Sender: TObject&#41;; Begin Timer1.Enabled:=NowCom; End; 主程序如下： Type TForm1=Class&#40;TForm&#41; Image2: TImage; Pnl: TPanel; Image1: TImage; Timer1: TTimer; Timer2: [...]]]></description>
			<content:encoded><![CDATA[<p>闲着没事弄了个五子棋程序，还是用delphi开发的。人工智能只用了1个小时做的，所以比较那啥~</p>
<div id="attachment_51" class="wp-caption alignnone" style="width: 310px"><a class="highslide img_2" href="http://luinlee.com/wp-content/uploads/2009/10/ss.jpg" onclick="return hs.expand(this)"><img class="size-medium wp-image-51" title="五子棋" src="http://luinlee.com/wp-content/uploads/2009/10/ss-300x240.jpg" alt="五子棋" width="300" height="240" /></a><p class="wp-caption-text">五子棋</p></div>
<p><del datetime="2009-10-07T11:10:58+00:00">下载地址：Five2.zip</del><strong>(内容已更新，请到文章末尾重新下载)</strong><br />
右边的调试台是输出电脑的思维的。<br />
现在的AI还没有优化，优化后的落子速度将是瞬时的。</p>
<p>制作步骤(delphi2009)<br />
<span id="more-50"></span> 一、素材<br />
素材包括棋盘和棋子，棋盘可以在网上找也可以自己画-_-!,我直接用的网上的素材。棋子是我自己画的，类似下面设置混合效果即可：</p>
<div id="attachment_58" class="wp-caption alignnone" style="width: 310px"><a class="highslide img_3" href="http://luinlee.com/wp-content/uploads/2009/10/ss1.jpg" onclick="return hs.expand(this)"><img class="size-medium wp-image-58" title="棋子的画法" src="http://luinlee.com/wp-content/uploads/2009/10/ss1-300x162.jpg" alt="棋子的画法" width="300" height="162" /></a><p class="wp-caption-text">棋子的画法</p></div>
<p>二、代码<br />
全局用Timer控件控制电脑下棋：</p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">Procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">Timer1Timer</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Var</span>
  ix<span style="color: #000066;">,</span> iy<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Begin</span>
  Timer1<span style="color: #000066;">.</span><span style="color: #006600;">Enabled</span><span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">False</span><span style="color: #000066;">;</span>
  Timer2<span style="color: #000066;">.</span><span style="color: #006600;">Enabled</span><span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">False</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">If</span> FullMap <span style="color: #000000; font-weight: bold;">Then</span>
  <span style="color: #000000; font-weight: bold;">Begin</span>
    Flag2<span style="color: #000066;">;</span>
    <span style="color: #000066;">Exit</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #000000; font-weight: bold;">not</span> GetComXY<span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">True</span><span style="color: #000066;">,</span>ix<span style="color: #000066;">,</span>iy<span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">;</span>
  AddButton<span style="color: #000066;">&#40;</span>ix<span style="color: #000066;">,</span> iy<span style="color: #000066;">,</span> NowBlack<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  Timer2<span style="color: #000066;">.</span><span style="color: #006600;">Enabled</span><span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">Procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">Timer2Timer</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Begin</span>
  Timer1<span style="color: #000066;">.</span><span style="color: #006600;">Enabled</span><span style="color: #000066;">:</span><span style="color: #000066;">=</span>NowCom<span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span></pre></div></div>

<p>主程序如下：</p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">Type</span>
  TForm1<span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">Class</span><span style="color: #000066;">&#40;</span>TForm<span style="color: #000066;">&#41;</span>
    Image2<span style="color: #000066;">:</span> TImage<span style="color: #000066;">;</span>
    Pnl<span style="color: #000066;">:</span> TPanel<span style="color: #000066;">;</span>
    Image1<span style="color: #000066;">:</span> TImage<span style="color: #000066;">;</span>
    Timer1<span style="color: #000066;">:</span> TTimer<span style="color: #000066;">;</span>
    Timer2<span style="color: #000066;">:</span> TTimer<span style="color: #000066;">;</span>
    Button1<span style="color: #000066;">:</span> TButton<span style="color: #000066;">;</span>
    Button2<span style="color: #000066;">:</span> TButton<span style="color: #000066;">;</span>
    Memo1<span style="color: #000066;">:</span> TMemo<span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">Procedure</span> Image1MouseDown<span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">;</span> Button<span style="color: #000066;">:</span> TMouseButton<span style="color: #000066;">;</span>
      Shift<span style="color: #000066;">:</span> TShiftState<span style="color: #000066;">;</span> X<span style="color: #000066;">,</span> Y<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">Integer</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">Procedure</span> FormCreate<span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">Procedure</span> N1Click<span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">Procedure</span> N2Click<span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">Procedure</span> Timer1Timer<span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">Procedure</span> Timer2Timer<span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">procedure</span> Button2Click<span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">procedure</span> Button1Click<span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">Private</span>
    <span style="color: #808080; font-style: italic;">{ Private declarations }</span>
    NowBlack<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">boolean</span><span style="color: #000066;">;</span> <span style="color: #808080; font-style: italic;">//当前该白棋走</span>
    NowCom<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">boolean</span><span style="color: #000066;">;</span> <span style="color: #808080; font-style: italic;">//当前该电脑走</span>
    <span style="color: #808080; font-style: italic;">//人执黑棋： not(NowBlack xor NowCom)</span>
    BFlag<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #000066;">;</span> <span style="color: #808080; font-style: italic;">//棋局标志，0：尚未开始,1：第一阶段，2：第二阶段</span>
    BComWin<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">boolean</span><span style="color: #000066;">;</span> <span style="color: #808080; font-style: italic;">//电脑赢(第一阶段末)</span>
    <span style="color: #000000; font-weight: bold;">Procedure</span> Init<span style="color: #000066;">;</span> <span style="color: #808080; font-style: italic;">//初始化(地图等)</span>
    <span style="color: #000000; font-weight: bold;">Function</span> WinCount<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">Integer</span><span style="color: #000066;">;</span> <span style="color: #808080; font-style: italic;">//如果是正数则是电脑赢</span>
    <span style="color: #000000; font-weight: bold;">Function</span> FullMap<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">boolean</span><span style="color: #000066;">;</span> <span style="color: #808080; font-style: italic;">//棋盘已经满了</span>
    <span style="color: #000000; font-weight: bold;">Function</span> IsEmpty<span style="color: #000066;">&#40;</span>X<span style="color: #000066;">,</span> Y<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">boolean</span><span style="color: #000066;">;</span> <span style="color: #808080; font-style: italic;">//判断当前位置是否有棋子</span>
    <span style="color: #000000; font-weight: bold;">Function</span> IsWin<span style="color: #000066;">&#40;</span>X<span style="color: #000066;">,</span> Y<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">boolean</span><span style="color: #000066;">;</span> <span style="color: #808080; font-style: italic;">//判断当前位置是否有棋子</span>
    <span style="color: #000000; font-weight: bold;">Procedure</span> AddButton<span style="color: #000066;">&#40;</span>X<span style="color: #000066;">,</span> Y<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #000066;">;</span> BButton<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">boolean</span><span style="color: #808080; font-style: italic;">{True:Black}</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> <span style="color: #808080; font-style: italic;">//放棋子</span>
    <span style="color: #000000; font-weight: bold;">Procedure</span> DelButton<span style="color: #000066;">&#40;</span>X<span style="color: #000066;">,</span> Y<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> <span style="color: #808080; font-style: italic;">//移除棋子</span>
    <span style="color: #000000; font-weight: bold;">Procedure</span> PressXY<span style="color: #000066;">&#40;</span>X<span style="color: #000066;">,</span> Y<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> <span style="color: #808080; font-style: italic;">//判断X,Y属于棋盘的哪个点</span>
    <span style="color: #000000; font-weight: bold;">Procedure</span> Flag2<span style="color: #000066;">;</span> <span style="color: #808080; font-style: italic;">//进入阶段2</span>
  <span style="color: #000000; font-weight: bold;">Public</span>
    <span style="color: #808080; font-style: italic;">{ Public declarations }</span>
  <span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">Var</span>
  Form1<span style="color: #000066;">:</span> TForm1<span style="color: #000066;">;</span>
  Map<span style="color: #000066;">:</span> <span style="color: #000000; font-weight: bold;">Array</span><span style="color: #000066;">&#91;</span>0<span style="color: #000066;">..</span>14<span style="color: #000066;">,</span> 0<span style="color: #000066;">..</span>14<span style="color: #000066;">&#93;</span> <span style="color: #000000; font-weight: bold;">Of</span> <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #000066;">;</span><span style="color: #808080; font-style: italic;">//棋盘：0:白，1：黑, 2:空</span>
<span style="color: #000000; font-weight: bold;">Implementation</span>
<span style="color: #000000; font-weight: bold;">Uses</span> AI<span style="color: #000066;">,</span> mmsystem<span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Var</span>
  QiZi<span style="color: #000066;">:</span> TImage<span style="color: #000066;">;</span>
  SMulu<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">String</span><span style="color: #000066;">;</span>
<span style="color: #008000; font-style: italic;">{$R *.dfm}</span>
  <span style="color: #808080; font-style: italic;">{ TForm1 }</span>
<span style="color: #000000; font-weight: bold;">Procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">AddButton</span><span style="color: #000066;">&#40;</span>X<span style="color: #000066;">,</span> Y<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #000066;">;</span> BButton<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">boolean</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Begin</span>
  QiZi<span style="color: #000066;">:</span><span style="color: #000066;">=</span>TImage<span style="color: #000066;">.</span><span style="color: #006600;">Create</span><span style="color: #000066;">&#40;</span>Pnl<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">With</span> QiZi <span style="color: #000000; font-weight: bold;">Do</span>
  <span style="color: #000000; font-weight: bold;">Begin</span>
    Name<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #ff0000;">'Img_Btn_'</span><span style="color: #000066;">+</span><span style="color: #000066;">IntToStr</span><span style="color: #000066;">&#40;</span>X<span style="color: #000066;">&#41;</span><span style="color: #000066;">+</span><span style="color: #ff0000;">'_'</span><span style="color: #000066;">+</span><span style="color: #000066;">IntToStr</span><span style="color: #000066;">&#40;</span>Y<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    Parent<span style="color: #000066;">:</span><span style="color: #000066;">=</span>Pnl<span style="color: #000066;">;</span>
    Cursor<span style="color: #000066;">:</span><span style="color: #000066;">=</span>crDefault<span style="color: #000066;">;</span>
    Left<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">5</span><span style="color: #000066;">+</span><span style="color: #0000ff;">35</span><span style="color: #000066;">*</span>X<span style="color: #000066;">;</span>
    top<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">5</span><span style="color: #000066;">+</span><span style="color: #0000ff;">35</span><span style="color: #000066;">*</span>Y<span style="color: #000066;">;</span>
    Transparent<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">True</span><span style="color: #000066;">;</span>
    AutoSize<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">True</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">If</span> BButton <span style="color: #000000; font-weight: bold;">Then</span>
      Picture<span style="color: #000066;">.</span><span style="color: #006600;">LoadFromFile</span><span style="color: #000066;">&#40;</span>SMulu<span style="color: #000066;">+</span><span style="color: #ff0000;">'pic\black.bmp'</span><span style="color: #000066;">&#41;</span>
    <span style="color: #000000; font-weight: bold;">Else</span>
      Picture<span style="color: #000066;">.</span><span style="color: #006600;">LoadFromFile</span><span style="color: #000066;">&#40;</span>SMulu<span style="color: #000066;">+</span><span style="color: #ff0000;">'pic\white.bmp'</span><span style="color: #000066;">&#41;</span>
  <span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
  Map<span style="color: #000066;">&#91;</span>X<span style="color: #000066;">,</span> Y<span style="color: #000066;">&#93;</span><span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000066; font-weight: bold;">Integer</span><span style="color: #000066;">&#40;</span>BButton<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> <span style="color: #808080; font-style: italic;">//修改地图文件</span>
  NowBlack<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">Not</span> NowBlack<span style="color: #000066;">;</span> <span style="color: #808080; font-style: italic;">//修改该黑或白的标志</span>
  NowCom<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">Not</span> NowCom<span style="color: #000066;">;</span> <span style="color: #808080; font-style: italic;">//修改该谁走棋的标志</span>
  <span style="color: #000000; font-weight: bold;">If</span> <span style="color: #000066;">FileExists</span><span style="color: #000066;">&#40;</span>SMulu<span style="color: #000066;">+</span><span style="color: #ff0000;">'res\at.wav'</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">Then</span> <span style="color: #808080; font-style: italic;">//播放走棋的声音</span>
    PlaySound<span style="color: #000066;">&#40;</span><span style="color: #000066; font-weight: bold;">pchar</span><span style="color: #000066;">&#40;</span>SMulu<span style="color: #000066;">+</span><span style="color: #ff0000;">'res\at.wav'</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">,</span> <span style="color: #0000ff;">0</span><span style="color: #000066;">,</span> snd_Async<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">if</span> IsWin<span style="color: #000066;">&#40;</span>X<span style="color: #000066;">,</span>Y<span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span> showmessage<span style="color: #000066;">&#40;</span><span style="color: #ff0000;">'Win'</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">Procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">DelButton</span><span style="color: #000066;">&#40;</span>X<span style="color: #000066;">,</span> Y<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Var</span>
  ic<span style="color: #000066;">:</span> tComponent<span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Begin</span>
  ic<span style="color: #000066;">:</span><span style="color: #000066;">=</span>Pnl<span style="color: #000066;">.</span><span style="color: #006600;">FindComponent</span><span style="color: #000066;">&#40;</span><span style="color: #ff0000;">'Img_Btn_'</span><span style="color: #000066;">+</span><span style="color: #000066;">IntToStr</span><span style="color: #000066;">&#40;</span>X<span style="color: #000066;">&#41;</span><span style="color: #000066;">+</span><span style="color: #ff0000;">'_'</span><span style="color: #000066;">+</span><span style="color: #000066;">IntToStr</span><span style="color: #000066;">&#40;</span>Y<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">If</span> ic&amp;lt<span style="color: #000066;">;</span>&amp;gt<span style="color: #000066;">;</span>Nil <span style="color: #000000; font-weight: bold;">Then</span>
  <span style="color: #000000; font-weight: bold;">Begin</span>
    ic<span style="color: #000066;">.</span><span style="color: #006600;">Free</span><span style="color: #000066;">;</span>
    Map<span style="color: #000066;">&#91;</span>X<span style="color: #000066;">,</span> Y<span style="color: #000066;">&#93;</span><span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">2</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">Procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">PressXY</span><span style="color: #000066;">&#40;</span>X<span style="color: #000066;">,</span> Y<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Var</span>
  ix<span style="color: #000066;">,</span> iy<span style="color: #000066;">,</span> i<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #000066;">;</span>
  j<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Begin</span>
  ix<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">15</span><span style="color: #000066;">;</span>
  iy<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">15</span><span style="color: #000066;">;</span>
  j<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">For</span> i<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">To</span> <span style="color: #0000ff;">14</span> <span style="color: #000000; font-weight: bold;">Do</span>
  <span style="color: #000000; font-weight: bold;">Begin</span>
    <span style="color: #000000; font-weight: bold;">If</span> <span style="color: #000066;">&#40;</span>X&amp;gt<span style="color: #000066;">;</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">5</span> <span style="color: #000066;">+</span> j<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">And</span><span style="color: #000066;">&#40;</span>X&amp;lt<span style="color: #000066;">;</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">40</span> <span style="color: #000066;">+</span> j<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">Then</span>
      ix<span style="color: #000066;">:</span><span style="color: #000066;">=</span>i<span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">If</span> <span style="color: #000066;">&#40;</span>Y&amp;gt<span style="color: #000066;">;</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">5</span> <span style="color: #000066;">+</span> j<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">And</span><span style="color: #000066;">&#40;</span>Y&amp;lt<span style="color: #000066;">;</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">40</span> <span style="color: #000066;">+</span> j<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">Then</span>
      iy<span style="color: #000066;">:</span><span style="color: #000066;">=</span>i<span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #000066;">&#40;</span>ix&amp;lt<span style="color: #000066;">;</span>&amp;gt<span style="color: #000066;">;</span><span style="color: #0000ff;">15</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>iy&amp;lt<span style="color: #000066;">;</span>&amp;gt<span style="color: #000066;">;</span><span style="color: #0000ff;">15</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">break</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>j<span style="color: #000066;">,</span><span style="color: #0000ff;">35</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">If</span> <span style="color: #000066;">&#40;</span>ix <span style="color: #000066;">=</span> <span style="color: #0000ff;">15</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">Or</span><span style="color: #000066;">&#40;</span>iy <span style="color: #000066;">=</span> <span style="color: #0000ff;">15</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">Then</span> <span style="color: #000066;">Exit</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">If</span> <span style="color: #000000; font-weight: bold;">not</span> IsEmpty<span style="color: #000066;">&#40;</span>ix<span style="color: #000066;">,</span>iy<span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">Then</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000066;">beep</span><span style="color: #000066;">;</span><span style="color: #808080; font-style: italic;">//TODO:不能走棋</span>
    <span style="color: #000066;">exit</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
  AddButton<span style="color: #000066;">&#40;</span>ix<span style="color: #000066;">,</span> iy<span style="color: #000066;">,</span> NowBlack<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">Image1MouseDown</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">;</span> Button<span style="color: #000066;">:</span> TMouseButton<span style="color: #000066;">;</span>
  Shift<span style="color: #000066;">:</span> TShiftState<span style="color: #000066;">;</span> X<span style="color: #000066;">,</span> Y<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Begin</span>
  <span style="color: #000000; font-weight: bold;">If</span> <span style="color: #000066;">&#40;</span>BFlag<span style="color: #000066;">=</span><span style="color: #0000ff;">1</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">And</span><span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">Not</span><span style="color: #000066;">&#40;</span>NowCom<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">Then</span>
    PressXY<span style="color: #000066;">&#40;</span>X<span style="color: #000066;">,</span> Y<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">Init</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">var</span>
  i<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">Integer</span><span style="color: #000066;">;</span>
  j<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">Integer</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  <span style="color: #000000; font-weight: bold;">for</span> i <span style="color: #000066;">:</span><span style="color: #000066;">=</span> <span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">to</span> <span style="color: #0000ff;">14</span> <span style="color: #000000; font-weight: bold;">do</span>
    <span style="color: #000000; font-weight: bold;">for</span> j <span style="color: #000066;">:</span><span style="color: #000066;">=</span> <span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">to</span> <span style="color: #0000ff;">14</span> <span style="color: #000000; font-weight: bold;">do</span>
      Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span> <span style="color: #000066;">:</span><span style="color: #000066;">=</span> <span style="color: #0000ff;">2</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">Procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">FormCreate</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Begin</span>
  SMulu<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000066;">ExtractFilePath</span><span style="color: #000066;">&#40;</span>Application<span style="color: #000066;">.</span><span style="color: #006600;">ExeName</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  BFlag<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">;</span> <span style="color: #808080; font-style: italic;">//比赛未开始；</span>
  Init<span style="color: #000066;">;</span>
  BFlag<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  NowBlack<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">True</span><span style="color: #000066;">;</span>
  NowCom<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">True</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">Function</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">IsEmpty</span><span style="color: #000066;">&#40;</span>X<span style="color: #000066;">,</span> Y<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">boolean</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Begin</span>
  result<span style="color: #000066;">:</span><span style="color: #000066;">=</span> <span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>X<span style="color: #000066;">,</span> Y<span style="color: #000066;">&#93;</span> <span style="color: #000066;">=</span> <span style="color: #0000ff;">2</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">IsWin</span><span style="color: #000066;">&#40;</span>X<span style="color: #000066;">,</span> Y<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">boolean</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">var</span> CurrentChessman<span style="color: #000066;">,</span>i<span style="color: #000066;">,</span>j<span style="color: #000066;">,</span>n<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">byte</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  result<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">false</span><span style="color: #000066;">;</span>
  CurrentChessman <span style="color: #000066;">:</span><span style="color: #000066;">=</span> Map<span style="color: #000066;">&#91;</span>X<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>Y<span style="color: #000066;">&#93;</span><span style="color: #000066;">;</span>
  <span style="color: #808080; font-style: italic;">//横向</span>
  n<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  i<span style="color: #000066;">:</span><span style="color: #000066;">=</span>X<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>i&amp;gt<span style="color: #000066;">;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>Y<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>CurrentChessman<span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>n<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">dec</span><span style="color: #000066;">&#40;</span>i<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
  i<span style="color: #000066;">:</span><span style="color: #000066;">=</span>X<span style="color: #000066;">+</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>i&amp;lt<span style="color: #000066;">;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">15</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>Y<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>CurrentChessman<span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>n<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>i<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">if</span> n&amp;gt<span style="color: #000066;">;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">5</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">exit</span><span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #808080; font-style: italic;">//纵向</span>
  n<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  j<span style="color: #000066;">:</span><span style="color: #000066;">=</span>Y<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>j&amp;gt<span style="color: #000066;">;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>X<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>CurrentChessman<span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>n<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">dec</span><span style="color: #000066;">&#40;</span>j<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
  j<span style="color: #000066;">:</span><span style="color: #000066;">=</span>Y<span style="color: #000066;">+</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>j&amp;lt<span style="color: #000066;">;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">15</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>X<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>CurrentChessman<span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>n<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>j<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">if</span> n&amp;gt<span style="color: #000066;">;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">5</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">exit</span><span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #808080; font-style: italic;">//正斜向</span>
  n<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  i<span style="color: #000066;">:</span><span style="color: #000066;">=</span>X<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  j<span style="color: #000066;">:</span><span style="color: #000066;">=</span>Y<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>i&amp;gt<span style="color: #000066;">;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>j&amp;gt<span style="color: #000066;">;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>CurrentChessman<span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>n<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">dec</span><span style="color: #000066;">&#40;</span>i<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">dec</span><span style="color: #000066;">&#40;</span>j<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
  i<span style="color: #000066;">:</span><span style="color: #000066;">=</span>X<span style="color: #000066;">+</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  j<span style="color: #000066;">:</span><span style="color: #000066;">=</span>Y<span style="color: #000066;">+</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>i&amp;lt<span style="color: #000066;">;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">15</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>j&amp;lt<span style="color: #000066;">;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">15</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>CurrentChessman<span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>n<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>i<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>j<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">if</span> n&amp;gt<span style="color: #000066;">;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">5</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">exit</span><span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #808080; font-style: italic;">//反斜向</span>
  n<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  i<span style="color: #000066;">:</span><span style="color: #000066;">=</span>X<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  j<span style="color: #000066;">:</span><span style="color: #000066;">=</span>Y<span style="color: #000066;">+</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>i&amp;gt<span style="color: #000066;">;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>j&amp;lt<span style="color: #000066;">;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">15</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>CurrentChessman<span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>n<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">dec</span><span style="color: #000066;">&#40;</span>i<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>j<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
  i<span style="color: #000066;">:</span><span style="color: #000066;">=</span>X<span style="color: #000066;">+</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  j<span style="color: #000066;">:</span><span style="color: #000066;">=</span>Y<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>i&amp;lt<span style="color: #000066;">;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">15</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>j&amp;gt<span style="color: #000066;">;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>CurrentChessman<span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>n<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>i<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">dec</span><span style="color: #000066;">&#40;</span>j<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">if</span> n&amp;gt<span style="color: #000066;">;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">5</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">exit</span><span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">Procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">N1Click</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Begin</span>
  BFlag<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  NowBlack<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">True</span><span style="color: #000066;">;</span>
  NowCom<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">False</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">Procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">N2Click</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Begin</span>
  BFlag<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  NowBlack<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">True</span><span style="color: #000066;">;</span>
  NowCom<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">True</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">Procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">Timer1Timer</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Var</span>
  ix<span style="color: #000066;">,</span> iy<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Begin</span>
  Timer1<span style="color: #000066;">.</span><span style="color: #006600;">Enabled</span><span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">False</span><span style="color: #000066;">;</span>
  Timer2<span style="color: #000066;">.</span><span style="color: #006600;">Enabled</span><span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">False</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">If</span> FullMap <span style="color: #000000; font-weight: bold;">Then</span>
  <span style="color: #000000; font-weight: bold;">Begin</span>
    Flag2<span style="color: #000066;">;</span>
    <span style="color: #000066;">Exit</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #000000; font-weight: bold;">not</span> GetComXY<span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">True</span><span style="color: #000066;">,</span>ix<span style="color: #000066;">,</span>iy<span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">;</span>
  AddButton<span style="color: #000066;">&#40;</span>ix<span style="color: #000066;">,</span> iy<span style="color: #000066;">,</span> NowBlack<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  Timer2<span style="color: #000066;">.</span><span style="color: #006600;">Enabled</span><span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">Procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">Timer2Timer</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Begin</span>
  Timer1<span style="color: #000066;">.</span><span style="color: #006600;">Enabled</span><span style="color: #000066;">:</span><span style="color: #000066;">=</span>NowCom<span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">Function</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">FullMap</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">boolean</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Var</span>
  X<span style="color: #000066;">,</span> Y<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Begin</span>
  result<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">True</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">For</span> X<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">To</span> <span style="color: #0000ff;">14</span> <span style="color: #000000; font-weight: bold;">Do</span>
    <span style="color: #000000; font-weight: bold;">For</span> Y<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">To</span> <span style="color: #0000ff;">14</span> <span style="color: #000000; font-weight: bold;">Do</span>
      <span style="color: #000000; font-weight: bold;">If</span> Map<span style="color: #000066;">&#91;</span>X<span style="color: #000066;">,</span> Y<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">2</span> <span style="color: #000000; font-weight: bold;">Then</span>
      <span style="color: #000000; font-weight: bold;">Begin</span>
        result<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">False</span><span style="color: #000066;">;</span>
        <span style="color: #000066;">Exit</span><span style="color: #000066;">;</span>
      <span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">Procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">Flag2</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Begin</span>
  BFlag<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">2</span><span style="color: #000066;">;</span>
  <span style="color: #808080; font-style: italic;">//TODO:计算被罚数目</span>
  <span style="color: #808080; font-style: italic;">//提示用户</span>
<span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">Function</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">WinCount</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">Integer</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Begin</span>
<span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">Button1Click</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  ShowMessage<span style="color: #000066;">&#40;</span><span style="color: #000066;">IntToStr</span><span style="color: #000066;">&#40;</span>WinCount<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">Button2Click</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
 <span style="color: #000000; font-weight: bold;">var</span> ix<span style="color: #000066;">,</span> iy<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #000000; font-weight: bold;">not</span> GetComXY<span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">True</span><span style="color: #000066;">,</span>ix<span style="color: #000066;">,</span>iy<span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">;</span>
  AddButton<span style="color: #000066;">&#40;</span>ix<span style="color: #000066;">,</span> iy<span style="color: #000066;">,</span> NowBlack<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span></pre></div></div>

<p>三、AI<br />
AI总得来说很简单，只有假设棋子已经落下，然后搜索计算得分即可<br />
当然这个AI相当简单，输的几率也很大，但是基本思想即是如此。更多可以参考更加强大的AI算法~<br />
<strong>10月7日更新</strong><br />
主要重写了AI，代码如下：</p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">Unit</span> AI<span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">Interface</span>
<span style="color: #808080; font-style: italic;">{
0
1单1
2双1
3单2
4双2
5单3
6双3
7单4
8双4
9单5
10双5
&nbsp;
}</span>
<span style="color: #000000; font-weight: bold;">type</span>
  TAi <span style="color: #000066;">=</span> <span style="color: #000000; font-weight: bold;">class</span>
    <span style="color: #808080; font-style: italic;">//AI是否扮演黑棋</span>
    isBlack<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">Boolean</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">Private</span>
    <span style="color: #808080; font-style: italic;">//是否在计算自己的得分</span>
    bSelf <span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">Boolean</span><span style="color: #000066;">;</span>
    <span style="color: #808080; font-style: italic;">//当前正在计算的位置</span>
    curX<span style="color: #000066;">,</span>curY<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">Byte</span><span style="color: #000066;">;</span>
    <span style="color: #808080; font-style: italic;">//当前相同的棋子数</span>
    TongNum<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">Integer</span><span style="color: #000066;">;</span>
    <span style="color: #808080; font-style: italic;">//当前棋子左右空余数目</span>
    nLeft<span style="color: #000066;">,</span>nRight<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">byte</span><span style="color: #000066;">;</span>
    <span style="color: #808080; font-style: italic;">//初始化计算，数值清空</span>
    <span style="color: #000000; font-weight: bold;">procedure</span> initCul<span style="color: #000066;">;</span>
    <span style="color: #808080; font-style: italic;">//判断横向</span>
    <span style="color: #000000; font-weight: bold;">function</span> CM2H <span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">function</span> CM2H_info <span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
    <span style="color: #808080; font-style: italic;">//判断纵向</span>
    <span style="color: #000000; font-weight: bold;">function</span> CM2V <span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">function</span> CM2V_info <span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
    <span style="color: #808080; font-style: italic;">//判断正斜向</span>
    <span style="color: #000000; font-weight: bold;">function</span> CM2X <span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">function</span> CM2X_info <span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
    <span style="color: #808080; font-style: italic;">//判断反斜向</span>
    <span style="color: #000000; font-weight: bold;">function</span> CM2X2 <span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">function</span> CM2X2_info <span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
    <span style="color: #808080; font-style: italic;">//分析类型</span>
    <span style="color: #000000; font-weight: bold;">Function</span> N2ChessType<span style="color: #000066;">&#40;</span>n<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">byte</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">Byte</span><span style="color: #000066;">;</span>
    <span style="color: #808080; font-style: italic;">//获得评分</span>
    <span style="color: #000000; font-weight: bold;">function</span> GetMark<span style="color: #000066;">&#40;</span>chessType<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">Byte</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">Public</span>
    <span style="color: #808080; font-style: italic;">//下棋，返回false表明无法选择位置</span>
    <span style="color: #000000; font-weight: bold;">function</span> Play<span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> toX<span style="color: #000066;">,</span>toY<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">Byte</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">Boolean</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
&nbsp;
&nbsp;
<span style="color: #000000; font-weight: bold;">Implementation</span>
<span style="color: #000000; font-weight: bold;">Uses</span> Windows<span style="color: #000066;">,</span>SysUtils<span style="color: #000066;">,</span>Main<span style="color: #000066;">;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">{ TAi }</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> TAi<span style="color: #000066;">.</span><span style="color: #006600;">CM2H</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">var</span> i<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  result<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  i<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curX<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>i&gt;<span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>result<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">dec</span><span style="color: #000066;">&#40;</span>i<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
  i<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curX<span style="color: #000066;">+</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>i&lt;<span style="color: #000066;">=</span><span style="color: #0000ff;">14</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>result<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>i<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> TAi<span style="color: #000066;">.</span><span style="color: #006600;">CM2H_info</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">var</span> i<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">Integer</span><span style="color: #000066;">;</span> n<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">Byte</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  initCul<span style="color: #000066;">;</span>
  <span style="color: #808080; font-style: italic;">//第一轮</span>
  i<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curX<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>i&gt;<span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">or</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">2</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000000; font-weight: bold;">if</span> Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>TongNum<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>nLeft<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">dec</span><span style="color: #000066;">&#40;</span>i<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
  <span style="color: #808080; font-style: italic;">//第二轮</span>
  i<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curX<span style="color: #000066;">+</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>i&lt;<span style="color: #000066;">=</span><span style="color: #0000ff;">14</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">or</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">2</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000000; font-weight: bold;">if</span> Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>TongNum<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>nRight<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>i<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">if</span> nLeft<span style="color: #000066;">+</span>nRight&lt;<span style="color: #0000ff;">4</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
&nbsp;
  <span style="color: #808080; font-style: italic;">//分析</span>
  n<span style="color: #000066;">:</span><span style="color: #000066;">=</span>CM2H<span style="color: #000066;">;</span>
  <span style="color: #000066;">dec</span><span style="color: #000066;">&#40;</span>TongNum<span style="color: #000066;">,</span>n<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  result<span style="color: #000066;">:</span><span style="color: #000066;">=</span>N2ChessType<span style="color: #000066;">&#40;</span>n<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> TAi<span style="color: #000066;">.</span><span style="color: #006600;">CM2V</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">var</span> j<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  result<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  j<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curY<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>j&gt;<span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>result<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">dec</span><span style="color: #000066;">&#40;</span>j<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
  j<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curY<span style="color: #000066;">+</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>j&lt;<span style="color: #000066;">=</span><span style="color: #0000ff;">14</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>result<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>j<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> TAi<span style="color: #000066;">.</span><span style="color: #006600;">CM2V_info</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">var</span> j<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">Integer</span><span style="color: #000066;">;</span> n<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">Byte</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  initCul<span style="color: #000066;">;</span>
  <span style="color: #808080; font-style: italic;">//第一轮</span>
  j<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curY<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>j&gt;<span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">or</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">2</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000000; font-weight: bold;">if</span> Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>TongNum<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>nLeft<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">dec</span><span style="color: #000066;">&#40;</span>j<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
  <span style="color: #808080; font-style: italic;">//第二轮</span>
  j<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curY<span style="color: #000066;">+</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>j&lt;<span style="color: #000066;">=</span><span style="color: #0000ff;">14</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">or</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">2</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000000; font-weight: bold;">if</span> Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>TongNum<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>nRight<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>j<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">if</span> nLeft<span style="color: #000066;">+</span>nRight&lt;<span style="color: #0000ff;">4</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
&nbsp;
  <span style="color: #808080; font-style: italic;">//分析</span>
  n<span style="color: #000066;">:</span><span style="color: #000066;">=</span>CM2V<span style="color: #000066;">;</span>
  <span style="color: #000066;">dec</span><span style="color: #000066;">&#40;</span>TongNum<span style="color: #000066;">,</span>n<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  result<span style="color: #000066;">:</span><span style="color: #000066;">=</span>N2ChessType<span style="color: #000066;">&#40;</span>n<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> TAi<span style="color: #000066;">.</span><span style="color: #006600;">CM2X</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">var</span> i<span style="color: #000066;">,</span>j<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  result<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  i<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curX<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  j<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curY<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>i&gt;<span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>j&gt;<span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>result<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">Dec</span><span style="color: #000066;">&#40;</span>i<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">Dec</span><span style="color: #000066;">&#40;</span>j<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
  i<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curX<span style="color: #000066;">+</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  j<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curY<span style="color: #000066;">+</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>i&lt;<span style="color: #000066;">=</span><span style="color: #0000ff;">14</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>j&lt;<span style="color: #000066;">=</span><span style="color: #0000ff;">14</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>result<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>i<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>j<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> TAi<span style="color: #000066;">.</span><span style="color: #006600;">CM2X2</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">var</span> i<span style="color: #000066;">,</span>j<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  result<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  i<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curX<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  j<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curY<span style="color: #000066;">+</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>i&gt;<span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>j&lt;<span style="color: #000066;">=</span><span style="color: #0000ff;">14</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>result<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">Dec</span><span style="color: #000066;">&#40;</span>i<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>j<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
  i<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curX<span style="color: #000066;">+</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  j<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curY<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>i&lt;<span style="color: #000066;">=</span><span style="color: #0000ff;">14</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>j&gt;<span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>result<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>i<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">Dec</span><span style="color: #000066;">&#40;</span>j<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> TAi<span style="color: #000066;">.</span><span style="color: #006600;">CM2X2_info</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">var</span> i<span style="color: #000066;">,</span>j<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">Integer</span><span style="color: #000066;">;</span> n<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">Byte</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  initCul<span style="color: #000066;">;</span>
  <span style="color: #808080; font-style: italic;">//第一轮</span>
  i<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curX<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  j<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curY<span style="color: #000066;">+</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>i&gt;<span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>j&lt;<span style="color: #000066;">=</span><span style="color: #0000ff;">14</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">or</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">2</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000000; font-weight: bold;">if</span> Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>TongNum<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>nLeft<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">Dec</span><span style="color: #000066;">&#40;</span>i<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>j<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
  <span style="color: #808080; font-style: italic;">//第二轮</span>
  i<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curX<span style="color: #000066;">+</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  j<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curY<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>i&lt;<span style="color: #000066;">=</span><span style="color: #0000ff;">14</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>j&gt;<span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">or</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">2</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000000; font-weight: bold;">if</span> Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>TongNum<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>nRight<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>i<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">Dec</span><span style="color: #000066;">&#40;</span>j<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">if</span> nLeft<span style="color: #000066;">+</span>nRight&lt;<span style="color: #0000ff;">4</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
&nbsp;
  <span style="color: #808080; font-style: italic;">//分析</span>
  n<span style="color: #000066;">:</span><span style="color: #000066;">=</span>CM2X2<span style="color: #000066;">;</span>
  <span style="color: #000066;">dec</span><span style="color: #000066;">&#40;</span>TongNum<span style="color: #000066;">,</span>n<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  result<span style="color: #000066;">:</span><span style="color: #000066;">=</span>N2ChessType<span style="color: #000066;">&#40;</span>n<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> TAi<span style="color: #000066;">.</span><span style="color: #006600;">CM2X_info</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">var</span> i<span style="color: #000066;">,</span>j<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">Integer</span><span style="color: #000066;">;</span> n<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">Byte</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  initCul<span style="color: #000066;">;</span>
  <span style="color: #808080; font-style: italic;">//第一轮</span>
  i<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curX<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  j<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curY<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>i&gt;<span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>j&gt;<span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">or</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">2</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000000; font-weight: bold;">if</span> Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>TongNum<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>nLeft<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">Dec</span><span style="color: #000066;">&#40;</span>i<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">dec</span><span style="color: #000066;">&#40;</span>j<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
  <span style="color: #808080; font-style: italic;">//第二轮</span>
  i<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curX<span style="color: #000066;">+</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  j<span style="color: #000066;">:</span><span style="color: #000066;">=</span>curY<span style="color: #000066;">+</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span><span style="color: #000066;">&#40;</span>i&lt;<span style="color: #000066;">=</span><span style="color: #0000ff;">14</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>j&lt;<span style="color: #000066;">=</span><span style="color: #0000ff;">14</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">or</span><span style="color: #000066;">&#40;</span>Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">2</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000000; font-weight: bold;">if</span> Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span>Map<span style="color: #000066;">&#91;</span>curX<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>curY<span style="color: #000066;">&#93;</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>TongNum<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>nRight<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>i<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>j<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">if</span> nLeft<span style="color: #000066;">+</span>nRight&lt;<span style="color: #0000ff;">4</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
&nbsp;
  <span style="color: #808080; font-style: italic;">//分析</span>
  n<span style="color: #000066;">:</span><span style="color: #000066;">=</span>CM2X<span style="color: #000066;">;</span>
  <span style="color: #000066;">dec</span><span style="color: #000066;">&#40;</span>TongNum<span style="color: #000066;">,</span>n<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  result<span style="color: #000066;">:</span><span style="color: #000066;">=</span>N2ChessType<span style="color: #000066;">&#40;</span>n<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> TAi<span style="color: #000066;">.</span><span style="color: #006600;">GetMark</span><span style="color: #000066;">&#40;</span>chessType<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">Byte</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  <span style="color: #000000; font-weight: bold;">case</span> chessType <span style="color: #000000; font-weight: bold;">of</span>
  <span style="color: #0000ff;">0</span><span style="color: #000066;">:</span><span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #0000ff;">1</span><span style="color: #000066;">:</span><span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #0000ff;">2</span><span style="color: #000066;">:</span><span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">5</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #0000ff;">3</span><span style="color: #000066;">:</span><span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">11</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #0000ff;">4</span><span style="color: #000066;">:</span><span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">31</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #0000ff;">5</span><span style="color: #000066;">:</span><span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">21</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #0000ff;">6</span><span style="color: #000066;">:</span><span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">910</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #0000ff;">7</span><span style="color: #000066;">:</span><span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">41</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #0000ff;">8</span><span style="color: #000066;">:</span><span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">11000</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #0000ff;">9</span><span style="color: #000066;">:</span><span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">110000</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #0000ff;">10</span><span style="color: #000066;">:</span><span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">110000</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #0000ff;">13</span><span style="color: #000066;">:</span><span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #0000ff;">14</span><span style="color: #000066;">:</span><span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">5</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #0000ff;">15</span><span style="color: #000066;">:</span><span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">10</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #0000ff;">16</span><span style="color: #000066;">:</span><span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">30</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #0000ff;">17</span><span style="color: #000066;">:</span><span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">20</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #0000ff;">18</span><span style="color: #000066;">:</span><span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">900</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #0000ff;">19</span><span style="color: #000066;">:</span><span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">40</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #0000ff;">20</span><span style="color: #000066;">:</span><span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">10000</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #0000ff;">21</span><span style="color: #000066;">:</span><span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">100000</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #0000ff;">22</span><span style="color: #000066;">:</span><span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">100000</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">procedure</span> TAi<span style="color: #000066;">.</span><span style="color: #006600;">initCul</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  TongNum<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">;</span>
  nLeft<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">;</span>
  nRight<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> TAi<span style="color: #000066;">.</span><span style="color: #006600;">N2ChessType</span><span style="color: #000066;">&#40;</span>n<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">Byte</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">Byte</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">var</span> bsc<span style="color: #000066;">,</span>h<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">Byte</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  h<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">if</span> nLeft&gt;<span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>h<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">if</span> nRight&gt;<span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>h<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">if</span> bSelf <span style="color: #000000; font-weight: bold;">then</span> bsc<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">else</span> bsc<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">12</span><span style="color: #000066;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">if</span> h <span style="color: #000066;">=</span> <span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">case</span> n <span style="color: #000000; font-weight: bold;">of</span>
    <span style="color: #0000ff;">1</span><span style="color: #000066;">:</span>
    <span style="color: #000000; font-weight: bold;">begin</span>
      <span style="color: #000000; font-weight: bold;">if</span> h<span style="color: #000066;">=</span><span style="color: #0000ff;">1</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span>bsc<span style="color: #000066;">+</span><span style="color: #0000ff;">1</span><span style="color: #000066;">&#41;</span>
      <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span>bsc<span style="color: #000066;">+</span><span style="color: #0000ff;">2</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
    <span style="color: #0000ff;">2</span><span style="color: #000066;">:</span>
    <span style="color: #000000; font-weight: bold;">begin</span>
      <span style="color: #000000; font-weight: bold;">if</span> h<span style="color: #000066;">=</span><span style="color: #0000ff;">1</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span>bsc<span style="color: #000066;">+</span><span style="color: #0000ff;">3</span><span style="color: #000066;">&#41;</span>
      <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span>bsc<span style="color: #000066;">+</span><span style="color: #0000ff;">4</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
    <span style="color: #0000ff;">3</span><span style="color: #000066;">:</span>
    <span style="color: #000000; font-weight: bold;">begin</span>
      <span style="color: #000000; font-weight: bold;">if</span> h<span style="color: #000066;">=</span><span style="color: #0000ff;">1</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span>bsc<span style="color: #000066;">+</span><span style="color: #0000ff;">5</span><span style="color: #000066;">&#41;</span>
      <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span>bsc<span style="color: #000066;">+</span><span style="color: #0000ff;">6</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
    <span style="color: #0000ff;">4</span><span style="color: #000066;">:</span>
    <span style="color: #000000; font-weight: bold;">begin</span>
      <span style="color: #000000; font-weight: bold;">if</span> h<span style="color: #000066;">=</span><span style="color: #0000ff;">1</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span>bsc<span style="color: #000066;">+</span><span style="color: #0000ff;">7</span><span style="color: #000066;">&#41;</span>
      <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span>bsc<span style="color: #000066;">+</span><span style="color: #0000ff;">8</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">else</span>
    <span style="color: #000000; font-weight: bold;">begin</span>
      <span style="color: #000000; font-weight: bold;">if</span> h<span style="color: #000066;">=</span><span style="color: #0000ff;">1</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span>bsc<span style="color: #000066;">+</span><span style="color: #0000ff;">9</span><span style="color: #000066;">&#41;</span>
      <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #000066;">Exit</span><span style="color: #000066;">&#40;</span>bsc<span style="color: #000066;">+</span><span style="color: #0000ff;">10</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> TAi<span style="color: #000066;">.</span><span style="color: #006600;">Play</span><span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> toX<span style="color: #000066;">,</span> toY<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">Byte</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">Boolean</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Var</span>
  mark<span style="color: #000066;">,</span>maxMark<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
  i<span style="color: #000066;">,</span>j<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
  mx<span style="color: #000066;">,</span>my<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Begin</span>
   maxMark<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">;</span>
   form1<span style="color: #000066;">.</span><span style="color: #006600;">Memo1</span><span style="color: #000066;">.</span><span style="color: #006600;">Clear</span><span style="color: #000066;">;</span>
   <span style="color: #000000; font-weight: bold;">for</span> i <span style="color: #000066;">:</span><span style="color: #000066;">=</span> <span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">to</span> <span style="color: #0000ff;">14</span> <span style="color: #000000; font-weight: bold;">do</span>
   <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000000; font-weight: bold;">for</span> j <span style="color: #000066;">:</span><span style="color: #000066;">=</span> <span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">to</span> <span style="color: #0000ff;">14</span> <span style="color: #000000; font-weight: bold;">do</span>
    <span style="color: #000000; font-weight: bold;">begin</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #000066;">&#40;</span>i<span style="color: #000066;">=</span><span style="color: #0000ff;">7</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">and</span><span style="color: #000066;">&#40;</span>j<span style="color: #000066;">=</span><span style="color: #0000ff;">7</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span>
      TongNum<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">;</span>
      <span style="color: #000000; font-weight: bold;">if</span> Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">2</span> <span style="color: #000000; font-weight: bold;">then</span>
      <span style="color: #000000; font-weight: bold;">begin</span>
        curX<span style="color: #000066;">:</span><span style="color: #000066;">=</span>i<span style="color: #000066;">;</span>
        curY<span style="color: #000066;">:</span><span style="color: #000066;">=</span>j<span style="color: #000066;">;</span>
        mark<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">;</span>
        Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000066;">Ord</span><span style="color: #000066;">&#40;</span>isBlack<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
        bSelf<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">True</span><span style="color: #000066;">;</span>
        <span style="color: #808080; font-style: italic;">//form1.Memo1.Lines.Add('-------------');</span>
        <span style="color: #808080; font-style: italic;">//form1.Memo1.Lines.Add('loc：x:'+inttostr(i)+',y:'+inttostr(j));</span>
        <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>mark<span style="color: #000066;">,</span>nLeft<span style="color: #000066;">*</span>nRight<span style="color: #000066;">+</span><span style="color: #0000ff;">1000</span><span style="color: #000066;">*</span>TongNum<span style="color: #000066;">+</span><span style="color: #0000ff;">10000</span><span style="color: #000066;">*</span>GetMark<span style="color: #000066;">&#40;</span>CM2H_info<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
        <span style="color: #000000; font-weight: bold;">if</span> TongNum&gt;<span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">then</span>
        TongNum<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">;</span>
&nbsp;
        <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>mark<span style="color: #000066;">,</span>nLeft<span style="color: #000066;">*</span>nRight<span style="color: #000066;">+</span><span style="color: #0000ff;">1000</span><span style="color: #000066;">*</span>TongNum<span style="color: #000066;">+</span><span style="color: #0000ff;">10000</span><span style="color: #000066;">*</span>GetMark<span style="color: #000066;">&#40;</span>CM2V_info<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
        <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>mark<span style="color: #000066;">,</span>nLeft<span style="color: #000066;">*</span>nRight<span style="color: #000066;">+</span><span style="color: #0000ff;">1000</span><span style="color: #000066;">*</span>TongNum<span style="color: #000066;">+</span><span style="color: #0000ff;">10000</span><span style="color: #000066;">*</span>GetMark<span style="color: #000066;">&#40;</span>CM2X_info<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
        <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>mark<span style="color: #000066;">,</span>nLeft<span style="color: #000066;">*</span>nRight<span style="color: #000066;">+</span><span style="color: #0000ff;">1000</span><span style="color: #000066;">*</span>TongNum<span style="color: #000066;">+</span><span style="color: #0000ff;">10000</span><span style="color: #000066;">*</span>GetMark<span style="color: #000066;">&#40;</span>CM2X2_info<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
        <span style="color: #808080; font-style: italic;">{form1.Memo1.Lines.Add('f1：'+inttostr(GetMark(CM2H_info))
          +inttostr(GetMark(CM2V_info))+inttostr(GetMark(CM2X_info))+
          inttostr(GetMark(CM2X2_info)));  }</span>
        Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000066;">Ord</span><span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">not</span> isBlack<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
        bSelf<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">False</span><span style="color: #000066;">;</span>
        <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>mark<span style="color: #000066;">,</span>nLeft<span style="color: #000066;">*</span>nRight<span style="color: #000066;">+</span><span style="color: #0000ff;">1000</span><span style="color: #000066;">*</span>TongNum<span style="color: #000066;">+</span><span style="color: #0000ff;">10000</span><span style="color: #000066;">*</span>GetMark<span style="color: #000066;">&#40;</span>CM2H_info<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
        <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>mark<span style="color: #000066;">,</span>nLeft<span style="color: #000066;">*</span>nRight<span style="color: #000066;">+</span><span style="color: #0000ff;">1000</span><span style="color: #000066;">*</span>TongNum<span style="color: #000066;">+</span><span style="color: #0000ff;">10000</span><span style="color: #000066;">*</span>GetMark<span style="color: #000066;">&#40;</span>CM2V_info<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
        <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>mark<span style="color: #000066;">,</span>nLeft<span style="color: #000066;">*</span>nRight<span style="color: #000066;">+</span><span style="color: #0000ff;">1000</span><span style="color: #000066;">*</span>TongNum<span style="color: #000066;">+</span><span style="color: #0000ff;">10000</span><span style="color: #000066;">*</span>GetMark<span style="color: #000066;">&#40;</span>CM2X_info<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
        <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>mark<span style="color: #000066;">,</span>nLeft<span style="color: #000066;">*</span>nRight<span style="color: #000066;">+</span><span style="color: #0000ff;">1000</span><span style="color: #000066;">*</span>TongNum<span style="color: #000066;">+</span><span style="color: #0000ff;">10000</span><span style="color: #000066;">*</span>GetMark<span style="color: #000066;">&#40;</span>CM2X2_info<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
        <span style="color: #808080; font-style: italic;">{form1.Memo1.Lines.Add('f2：'+inttostr(GetMark(CM2H_info))
          +inttostr(GetMark(CM2V_info))+inttostr(GetMark(CM2X_info))+
          inttostr(GetMark(CM2X2_info)));  }</span>
        Map<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#91;</span>j<span style="color: #000066;">&#93;</span><span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">2</span><span style="color: #000066;">;</span>
        <span style="color: #000000; font-weight: bold;">if</span> mark&gt;maxMark <span style="color: #000000; font-weight: bold;">then</span>
        <span style="color: #000000; font-weight: bold;">begin</span>
          maxMark<span style="color: #000066;">:</span><span style="color: #000066;">=</span>mark<span style="color: #000066;">;</span>
          mx<span style="color: #000066;">:</span><span style="color: #000066;">=</span>i<span style="color: #000066;">;</span>
          my<span style="color: #000066;">:</span><span style="color: #000066;">=</span>j<span style="color: #000066;">;</span>
        <span style="color: #000000; font-weight: bold;">end</span>
        <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #000000; font-weight: bold;">if</span> mark<span style="color: #000066;">=</span>maxMark <span style="color: #000000; font-weight: bold;">then</span>  form1<span style="color: #000066;">.</span><span style="color: #006600;">Memo1</span><span style="color: #000066;">.</span><span style="color: #006600;">Lines</span><span style="color: #000066;">.</span><span style="color: #006600;">Add</span><span style="color: #000066;">&#40;</span><span style="color: #ff0000;">'s'</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
&nbsp;
      <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
   <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
   toX<span style="color: #000066;">:</span><span style="color: #000066;">=</span>mx<span style="color: #000066;">;</span>
   toY<span style="color: #000066;">:</span><span style="color: #000066;">=</span>my<span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">.</span></pre></div></div>

<p><a href='http://luinlee.com/wp-content/uploads/2009/10/五子棋.zip'>点此下载五子棋程序及源代码(Delphi 2009)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://luinlee.com/50/five-cm/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Bean For Programmer(2)一个幽默的标准转弯。</title>
		<link>http://luinlee.com/134/bean-for-programmer2/</link>
		<comments>http://luinlee.com/134/bean-for-programmer2/#comments</comments>
		<pubDate>Thu, 09 Aug 2007 14:07:02 +0000</pubDate>
		<dc:creator>Luin</dc:creator>
				<category><![CDATA[Borland Delphi]]></category>

		<guid isPermaLink="false">http://luinlee.com/?p=134</guid>
		<description><![CDATA[记得前些日子我说有一个Bean For Programmer计划，不知道有没有人当真。现在这个计划已经有了一些小小的进展，能够读取地图了。换句话说，计划已经完成了0.01%&#8212;&#8211;很可观的数字。不过在此不着重谈这个，现在要说的是一个规则的实现方法。Bean For Programmer计划中详细地写出了规则：其中一条是：“8、主程序控制3个（或更多）棋子，并通知参赛机器人比赛开始并提供当前地图、棋子信息和位置”。问题来了，如何“向机器人提供当前地图”？或许有一种非常简单的方法：向机器人发送一个包含地图路径的信息。但是假如为了公平竞赛，不允许将地图保存在磁盘上而是单独提供一个EXE来保存地图该怎么办呢？下面我来演示一下： 1.建立一个保存地图的EXE（简称地图EXE），定义一个20*20（实际需要可能不止如此）的数组，里面包含两个值：1或0（为了以后丰富地图方便，我们把它声明为byte而不是Boolean）： Map: Array&#91;1..20, 1..20&#93; Of byte; 2.运行OllyDBG并定位到保存Map值的地方。 3.复制地址。 4.机器人部分： HANO:=FindWindow&#40;Nil, 'Bean for programmer'&#41;; //找窗口（地图EXE标题为'Bean for programmer） If HANO=0 Then//寻找窗体， Begin MessageBox&#40;0, '没有找到目标程序', '我敬爱的Bean', mb_ok&#41;; Exit End; FromH:=$00454DA0;//开始地址 GetWindowThreadProcessId&#40;HANO, @Dw1&#41;; HANS:=OpenProcess&#40;PROCESS_VM_READ, True, Dw1&#41;; //打开进程 For i:=1 To 400 Do Begin inc&#40;FromH&#41;; If ReadProcessMemory&#40;HANS, pointer&#40;FromH-1&#41;, lpBuffer, 1, lpNumberOfBytesRead&#41; Then//对地图EXE的内存数据 s:=s+IntToStr&#40;lpBuffer^&#41;;//这样我们就获得了包含地图EXE中Map数组的值。 End; 5．根据s画出地图。下面我截取了地图EXE和机器人端画出的地图。 [...]]]></description>
			<content:encoded><![CDATA[<p>记得前些日子我说有一个<a href="http://luinlee.com/129/bean-for-programmer/">Bean For Programmer</a>计划，不知道有没有人当真。现在这个计划已经有了一些小小的进展，能够读取地图了。换句话说，计划已经完成了0.01%&#8212;&#8211;很可观的数字。不过在此不着重谈这个，现在要说的是一个规则的实现方法。Bean For Programmer计划中详细地写出了规则：其中一条是：“8、主程序控制3个（或更多）棋子，并通知参赛机器人比赛开始并提供当前地图、棋子信息和位置”。问题来了，如何“向机器人提供当前地图”？或许有一种非常简单的方法：向机器人发送一个包含地图路径的信息。但是假如为了公平竞赛，不允许将地图保存在磁盘上而是单独提供一个EXE来保存地图该怎么办呢？下面我来演示一下：<br />
<span id="more-134"></span>1.建立一个保存地图的EXE（简称地图EXE），定义一个20*20（实际需要可能不止如此）的数组，里面包含两个值：1或0（为了以后丰富地图方便，我们把它声明为byte而不是Boolean）：</p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;">Map<span style="color: #000066;">:</span> <span style="color: #000000; font-weight: bold;">Array</span><span style="color: #000066;">&#91;</span>1<span style="color: #000066;">..</span>20<span style="color: #000066;">,</span> 1<span style="color: #000066;">..</span>20<span style="color: #000066;">&#93;</span> <span style="color: #000000; font-weight: bold;">Of</span> <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #000066;">;</span></pre></div></div>

<p>2.运行OllyDBG并定位到保存Map值的地方。</p>
<div id="attachment_135" class="wp-caption alignnone" style="width: 310px"><a class="highslide img_4" href="http://luinlee.com/wp-content/uploads/2009/11/295877c64c2e3f139c163de61.jpg" onclick="return hs.expand(this)"><img class="size-medium wp-image-135" title="OllyDBG定位截图" src="http://luinlee.com/wp-content/uploads/2009/11/295877c64c2e3f139c163de61-300x48.jpg" alt="OllyDBG定位截图" width="300" height="48" /></a><p class="wp-caption-text">OllyDBG定位截图</p></div>
<p>3.复制地址。</p>
<div id="attachment_136" class="wp-caption alignnone" style="width: 310px"><a class="highslide img_5" href="http://luinlee.com/wp-content/uploads/2009/11/8c9dc75cd0fba24bfaf2c0e01.jpg" onclick="return hs.expand(this)"><img class="size-medium wp-image-136" title="复制地址" src="http://luinlee.com/wp-content/uploads/2009/11/8c9dc75cd0fba24bfaf2c0e01-300x197.jpg" alt="复制地址" width="300" height="197" /></a><p class="wp-caption-text">复制地址</p></div>
<p>4.机器人部分：</p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;">HANO<span style="color: #000066;">:</span><span style="color: #000066;">=</span>FindWindow<span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">Nil</span><span style="color: #000066;">,</span> <span style="color: #ff0000;">'Bean for programmer'</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> <span style="color: #808080; font-style: italic;">//找窗口（地图EXE标题为'Bean for programmer）</span>
<span style="color: #000000; font-weight: bold;">If</span> HANO<span style="color: #000066;">=</span><span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">Then</span><span style="color: #808080; font-style: italic;">//寻找窗体，</span>
    <span style="color: #000000; font-weight: bold;">Begin</span>
      MessageBox<span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">,</span> <span style="color: #ff0000;">'没有找到目标程序'</span><span style="color: #000066;">,</span> <span style="color: #ff0000;">'我敬爱的Bean'</span><span style="color: #000066;">,</span> mb_ok<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
      <span style="color: #000066;">Exit</span>
<span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
    FromH<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #9ac;">$00454DA0</span><span style="color: #000066;">;</span><span style="color: #808080; font-style: italic;">//开始地址</span>
    GetWindowThreadProcessId<span style="color: #000066;">&#40;</span>HANO<span style="color: #000066;">,</span> <span style="color: #000066;">@</span>Dw1<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    HANS<span style="color: #000066;">:</span><span style="color: #000066;">=</span>OpenProcess<span style="color: #000066;">&#40;</span>PROCESS_VM_READ<span style="color: #000066;">,</span> <span style="color: #000000; font-weight: bold;">True</span><span style="color: #000066;">,</span> Dw1<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> <span style="color: #808080; font-style: italic;">//打开进程</span>
    <span style="color: #000000; font-weight: bold;">For</span> i<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">1</span> <span style="color: #000000; font-weight: bold;">To</span> <span style="color: #0000ff;">400</span> <span style="color: #000000; font-weight: bold;">Do</span>
    <span style="color: #000000; font-weight: bold;">Begin</span>
      <span style="color: #000066;">inc</span><span style="color: #000066;">&#40;</span>FromH<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">If</span> ReadProcessMemory<span style="color: #000066;">&#40;</span>HANS<span style="color: #000066;">,</span> <span style="color: #000066; font-weight: bold;">pointer</span><span style="color: #000066;">&#40;</span>FromH<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">,</span> lpBuffer<span style="color: #000066;">,</span> <span style="color: #0000ff;">1</span><span style="color: #000066;">,</span> lpNumberOfBytesRead<span style="color: #000066;">&#41;</span>      <span style="color: #000000; font-weight: bold;">Then</span><span style="color: #808080; font-style: italic;">//对地图EXE的内存数据</span>
s<span style="color: #000066;">:</span><span style="color: #000066;">=</span>s<span style="color: #000066;">+</span><span style="color: #000066;">IntToStr</span><span style="color: #000066;">&#40;</span>lpBuffer<span style="color: #000066;">^</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span><span style="color: #808080; font-style: italic;">//这样我们就获得了包含地图EXE中Map数组的值。</span>
    <span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span></pre></div></div>

<p>5．根据s画出地图。下面我截取了地图EXE和机器人端画出的地图。<br />
（1）机器人端</p>
<p> <div id="attachment_137" class="wp-caption alignnone" style="width: 310px"><a class="highslide img_6" href="http://luinlee.com/wp-content/uploads/2009/11/f5bf6f06625dfb73030881ed1.jpg" onclick="return hs.expand(this)"><img class="size-medium wp-image-137" title="机器人端 截图" src="http://luinlee.com/wp-content/uploads/2009/11/f5bf6f06625dfb73030881ed1-300x188.jpg" alt="机器人端 截图" width="300" height="188" /></a><p class="wp-caption-text">机器人端 截图</p></div></p>
<p>（2）地图EXE端<br />
<div id="attachment_138" class="wp-caption alignnone" style="width: 310px"><a class="highslide img_7" href="http://luinlee.com/wp-content/uploads/2009/11/12af962b94cdc4f2e7cd40ee1.jpg" onclick="return hs.expand(this)"><img src="http://luinlee.com/wp-content/uploads/2009/11/12af962b94cdc4f2e7cd40ee1-300x244.jpg" alt="地图EXE端 截图" title="地图EXE端 截图" width="300" height="244" class="size-medium wp-image-138" /></a><p class="wp-caption-text">地图EXE端 截图</p></div></p>
<p>我们可以发现两幅地图完全一样，OK，大功告成。</p>
]]></content:encoded>
			<wfw:commentRss>http://luinlee.com/134/bean-for-programmer2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
