亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 數據結構——0x88著法產生方法.htm

?? 象棋程序設計全資料集(介紹編寫象棋程序的方法思路)
?? HTM
?? 第 1 頁 / 共 2 頁
字號:
  <DT>  而<FONT face="Times New Roman">0x88</FONT>機制恰恰可以解決這個問題。用一個<FONT 
  face="Times New Roman">16x8</FONT>的棋盤,就得到一個標志位,你就能知道棋子是否到了右邊那個沒用的棋盤上,因為在這個棋盤上<FONT 
  face="Times New Roman">0x08</FONT>位置為<FONT 
  face="Times New Roman">1</FONT>。例如<FONT 
  face="Times New Roman">h1</FONT>標號是<FONT 
  face="Times New Roman">7</FONT>,加<FONT face="Times New Roman">1</FONT>后就是<FONT 
  face="Times New Roman">8</FONT>,而<FONT 
  face="Times New Roman">0x08</FONT>位變成了<FONT 
  face="Times New Roman">1</FONT>。左邊的實棋盤上沒有一格的<FONT 
  face="Times New Roman">0x08</FONT>位是<FONT 
  face="Times New Roman">1</FONT>,而右邊的虛棋盤每個格子的<FONT 
  face="Times New Roman">0x08</FONT>位都是<FONT 
  face="Times New Roman">1</FONT>。如果你在<FONT 
  face="Times New Roman">a3</FONT>并且要朝左走,你會到達<FONT 
  face="Times New Roman">p2</FONT>,這是在虛棋盤上,<FONT 
  face="Times New Roman">0x08</FONT>位是<FONT face="Times New Roman">1</FONT>。 
  <DT>  可以把<FONT face="Times New Roman">0x08</FONT>的檢測和<FONT 
  face="Times New Roman">0x80</FONT>的檢測結合起來<FONT 
  face="Times New Roman">(</FONT>原來的<FONT 
  face="Times New Roman">0x40</FONT>變成了<FONT 
  face="Times New Roman">0x80</FONT>,因為現在棋盤變成<FONT 
  face="Times New Roman">128</FONT>個格子了<FONT 
  face="Times New Roman">)</FONT>,并且兩次測試要同時完成。把<FONT 
  face="Times New Roman">0x80</FONT>和<FONT 
  face="Times New Roman">0x08</FONT>結合起來就是<FONT 
  face="Times New Roman">0x88</FONT>,這就是這套方案的名稱。 
  <DT>  如果你知道我在說什么,你就明白<FONT 
  face="Times New Roman">0x88</FONT>是怎樣運作的。你的著法產生的循環就應該寫成下面的樣子: 
  <DD>  
  <DD><FONT face=宋體>while (!(index &amp; 0x88)) {</FONT> 
  <DD> <FONT face=宋體>GenerateMove(index);</FONT> 
  <DD> <FONT face=宋體>index += delta;</FONT> 
  <DD><FONT face=宋體>}</FONT> 
  <DT>  
  <DT>  這就非常簡潔了,你可以這么寫: 
  <DD>  
  <DD><FONT face=宋體>void GenerateMoves(int square, int * ptab) {</FONT> 
  <DD> <FONT face=宋體>for (; *ptab; ptab++) {</FONT> 
  <DD>  <FONT face=宋體>int index;</FONT> 
  <DD>  <FONT face=宋體>for (index = square; !(index &amp; 0x88); index += *ptab) 
  {</FONT> 
  <DD>   <FONT face=宋體>GenerateMove(index);</FONT> 
  <DD>  } 
  <DD> <FONT face=宋體>}</FONT> 
  <DD><FONT face=宋體>}</FONT> 
  <DD><FONT face=宋體>int argdBishop[] = { 17, 15, -17, -15, 0 };</FONT> 
  <DD><FONT face=宋體>void GenerateBishopMoves(int square) {</FONT> 
  <DD> <FONT face=宋體>GenerateMove(square, argdBishop);</FONT> 
  <DD><FONT face=宋體>}</FONT> 
  <DT>  
  <DT>  這樣寫就非常快了,并且代碼很短。車或者后跟象的區別只是表中的數據不同罷了,因此你可以花很短的時間把其他棋子的代碼加上,而且不需要任何改動。 
  <DT>  當然,你仍然需要為兵和王車易位另寫代碼,但每個體系都得如此。<FONT 
  face="Times New Roman">0x88</FONT>體系能給你一點幫助,可是代碼寫出來仍然很丑。 
  <DT>  
  <DT><FONT face=楷體_GB2312 size=5><STRONG>獎勵</STRONG></FONT> 
  <DT>  
  <DT>  <FONT face="Times New Roman">0x88</FONT>體系還可以快速判斷攻擊,這就是要使用<FONT 
  face="Times New Roman">16x8</FONT>棋盤的另一個原因。如果你將兩格子的號碼相減,你會得到兩個格子之間的關系。 
  <DT>  例如,如果兩個格子減下來是<FONT 
  face="Times New Roman">1</FONT>,那么第二個格子就在第一個格子的左邊。如果減下來是<FONT 
  face="Times New Roman">16</FONT>,那么第二個格子就在第一個格子的上面。 
  <DT>  這在<FONT face="Times New Roman">8x8</FONT>棋盤上是做不到的。<FONT 
  face="Times New Roman">d1 </FONT><FONT face=Symbol>-</FONT><FONT 
  face="Times New Roman"> c1 = 1</FONT>確實如此,但是<FONT face="Times New Roman">a2 - 
  h1</FONT>也是<FONT face="Times New Roman">1</FONT>。這個“回圈”問題可以在<FONT 
  face="Times New Roman">128</FONT>個格子的棋盤上解決。 
  <DT>  你在寫判斷將軍或者一個子是否在捉另一個子的函數時,可以利用以上這個技巧。 
  <DT>  你可以用一個大約<FONT face="Times New Roman">257</FONT>個元素<FONT 
  face="Times New Roman">(</FONT><FONT face=Symbol>-</FONT><FONT 
  face="Times New Roman">128 ~ 
  +128)</FONT>的數組,里面存放一些代表棋子的位域,來說明哪些棋子能在某兩格間移動,而移動的增量就是數組的指標。你可以用少于<FONT 
  face="Times New Roman">257</FONT>個的元素,但是我沒有嘗試過。 
  <DT>  例如在增量為<FONT face="Times New Roman">1</FONT>的元素里,應該有王、后、車的位置是置<FONT 
  face="Times New Roman">1</FONT>的。如果增量是<FONT 
  face="Times New Roman">17</FONT>,那么置<FONT 
  face="Times New Roman">1</FONT>的是王、后、象和白兵。 
  <DT>  這樣就可以寫出比較快的檢查將軍的程序了。你把攻擊子的格子和目標格子相減得到增量,加上<FONT 
  face="Times New Roman">128</FONT>以避免負的指標,然后去找預先計算好的攻擊數組,看看是否符合這個攻擊子的類型,以確認它有可能一步到達目標格。 

  <DT>  如果你確認這個子可能到達目標格,那么你還要檢查它是否是長兵器<FONT 
  face="Times New Roman">(</FONT>后、車或象<FONT 
  face="Times New Roman">)</FONT>。如果不是,那就完成判斷了,否則你要沿著從攻擊子到目標格的射線去找有沒有阻擋的棋子。 
  <DT>  我不想提供這個程序的代碼,因為它很容易寫。這個程序的速度是比較快的。 
  <DT>  
  <DT>  原文:<A href="http://www.seanet.com/~brucemo/topics/0x88.htm" 
  target=_blank><FONT 
  face="Times New Roman">http://www.seanet.com/~brucemo/topics/0x88.htm</FONT></A> 

  <DT>  譯者:黃晨 <FONT face="Times New Roman">(</FONT><A 
  href="mailto:webmaster@elephantbase.net"><FONT 
  face="Times New Roman">webmaster@elephantbase.net</FONT></A><FONT 
  face="Times New Roman">)</FONT> 
  <DT>  類型:全譯 </DT></DL>
<DIR>
<LI>上一篇 <A 
href="http://www.elephantbase.net/computer/struct_movegen.htm">數據結構——著法生成器</A> 
<LI>下一篇 <A 
href="http://www.elephantbase.net/computer/struct_zobrist.htm">數據結構——<FONT 
face="Times New Roman">Zobrist</FONT>鍵值</A> 
<LI>返 回 <A href="http://www.elephantbase.net/computer.htm">象棋百科全書——電腦象棋</A> 
</LI></DIR>
<DIV align=center>
<CENTER>
<TABLE border=0>
  <TBODY>
  <TR>
    <TD>
      <P align=center><A href="http://www.elephantbase.net/" target=_blank><IMG 
      height=31 src="數據結構——0x88著法產生方法_files/elephantbase.gif" width=88 
      border=0></A></P></TD></TR>
  <TR>
    <TD><A href="http://www.elephantbase.net/" target=_blank><FONT face=Arial 
      size=2><STRONG>www.elephantbase.net</STRONG></FONT></A></TD></TR></TBODY></TABLE></CENTER></DIV></BODY></HTML>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美最猛性xxxxx直播| 日韩一区二区三区在线| 欧美日韩一区久久| 中文字幕va一区二区三区| 亚洲自拍偷拍图区| 成人h动漫精品一区二区| 精品视频999| 《视频一区视频二区| 久久精品免费观看| 欧美色大人视频| 18欧美亚洲精品| 国产精品一区二区黑丝| 日韩手机在线导航| 亚洲综合久久av| 91网站最新网址| 国产日韩av一区| 国产一区欧美一区| 欧美日韩mp4| 亚洲一区二区视频| 97久久久精品综合88久久| 国产亚洲一区二区三区在线观看| 日韩精品欧美成人高清一区二区| 91麻豆国产香蕉久久精品| 久久精品这里都是精品| 99re在线视频这里只有精品| 久久综合99re88久久爱| 九九国产精品视频| 欧美一级理论片| 丝袜亚洲另类丝袜在线| 在线国产亚洲欧美| 亚洲精品免费电影| 在线看国产一区二区| 亚洲人吸女人奶水| 色综合天天视频在线观看| 国产精品看片你懂得| 国产成人免费视频网站高清观看视频| 精品少妇一区二区三区视频免付费 | 在线播放一区二区三区| 亚洲一区二区精品视频| 欧美日韩免费电影| 午夜久久久久久久久久一区二区| 精品视频1区2区| 日韩激情av在线| 日韩一级二级三级精品视频| 天堂一区二区在线免费观看| 欧美一区二区三区公司| 久久99国产精品麻豆| 久久久www成人免费无遮挡大片| 国产一区二区三区高清播放| 精品免费视频.| 国产69精品一区二区亚洲孕妇| 久久久久青草大香线综合精品| 国产一区二区福利| 国产精品美女久久久久久久久久久 | 日韩电影在线看| 日韩视频一区二区三区在线播放| 国产一区二区剧情av在线| 国产丝袜欧美中文另类| 不卡的电视剧免费网站有什么| 一区二区欧美国产| 欧美一级二级三级蜜桃| 国产成人精品综合在线观看 | 成人午夜在线视频| 亚洲人成人一区二区在线观看| 欧美日韩中文字幕一区二区| 男男gaygay亚洲| 国产精品美女一区二区| 欧美日本一区二区| 欧美精品亚洲一区二区在线播放| 久久精品国产亚洲高清剧情介绍| 精品av久久707| 99久久99久久综合| 亚洲mv在线观看| 国产无一区二区| 欧美日韩一级二级三级| 国产一区在线看| 亚洲激情男女视频| 欧美mv日韩mv| 欧美熟乱第一页| 国产高清成人在线| 亚洲成人免费电影| 国产精品三级av| 日韩精品中文字幕一区二区三区 | 久久99精品久久久| 亚洲美女偷拍久久| 亚洲精品一区二区三区在线观看| 91色综合久久久久婷婷| 久久99九九99精品| 一区二区三区日韩精品| 久久久电影一区二区三区| 欧美精品1区2区| 91麻豆国产福利在线观看| 国产一区二区0| 日韩精品一级二级| 久久先锋影音av鲁色资源| 91视频在线观看| 国产精品国产精品国产专区不蜜| 日韩欧美电影在线| 亚洲午夜三级在线| 日韩视频免费观看高清完整版在线观看 | 日韩欧美国产电影| 国产精品美女久久久久久久久| 亚洲激情一二三区| 依依成人精品视频| 美国十次综合导航| 裸体歌舞表演一区二区| 91电影在线观看| 99久久伊人网影院| 国产精品99久久久久久久vr | 久久99热狠狠色一区二区| 亚洲在线视频一区| 亚洲精品亚洲人成人网| 亚洲欧美一区二区三区极速播放 | 国产精品正在播放| 免费一级欧美片在线观看| 日韩不卡一二三区| 日韩av一级片| 九九九久久久精品| 国产一区二区三区最好精华液| 美女视频黄免费的久久 | www.一区二区| 午夜精品福利视频网站| 亚洲视频你懂的| 国产精品久久99| 国产在线播放一区| 日韩精品一级中文字幕精品视频免费观看 | 色猫猫国产区一区二在线视频| 国产真实乱子伦精品视频| 人人精品人人爱| 男人的天堂久久精品| 久久99精品国产.久久久久| 裸体在线国模精品偷拍| 日韩国产精品久久| 日本aⅴ免费视频一区二区三区 | 99久久婷婷国产综合精品| av电影在线观看一区| 丁香婷婷综合色啪| 成人久久久精品乱码一区二区三区| 国产乱码精品一区二区三区五月婷| 日韩激情中文字幕| 日韩精品一级二级| 国产精品中文字幕日韩精品| 国产99一区视频免费| 大桥未久av一区二区三区中文| 国产成人免费在线观看不卡| 人妖欧美一区二区| 成人国产精品视频| 成人av第一页| 色婷婷亚洲婷婷| 欧美日本一区二区| 国产色婷婷亚洲99精品小说| 国产欧美日韩另类一区| 国产精品久久久久影院| 国产精品福利在线播放| 亚洲一线二线三线久久久| 欧美亚洲一区二区在线观看| 在线精品视频一区二区三四| 精品视频123区在线观看| 欧美一区中文字幕| 日韩免费看的电影| 亚洲啪啪综合av一区二区三区| 亚洲二区在线观看| 激情五月婷婷综合| 国产999精品久久| youjizz国产精品| 精品国产一区久久| 亚洲欧美一区二区在线观看| 亚洲一区二区三区视频在线| 免费在线观看视频一区| 9人人澡人人爽人人精品| 欧美精品自拍偷拍| 国产亚洲女人久久久久毛片| 亚洲欧美一区二区久久| 紧缚奴在线一区二区三区| 91伊人久久大香线蕉| 91精品婷婷国产综合久久竹菊| 国产女人18毛片水真多成人如厕| 亚洲自拍另类综合| 韩国成人在线视频| 欧美三级在线播放| 国产亚洲欧美中文| 麻豆91在线播放| 欧美亚洲国产bt| 国产精品午夜在线| 国产激情一区二区三区| 欧美色视频在线观看| 国产午夜精品一区二区三区嫩草 | 午夜激情一区二区三区| 国产69精品一区二区亚洲孕妇| 欧美理论片在线| 国产精品天干天干在观线| 美洲天堂一区二卡三卡四卡视频 | 欧美精品777| 天天做天天摸天天爽国产一区 | 色欧美片视频在线观看在线视频| 欧美一区二区三区免费在线看| 亚洲欧洲日本在线| 国产精品一区在线| 69成人精品免费视频| 亚洲精品在线观|