2014年4月30日 星期三

MOGO 史上最強的電腦圍棋


號稱史上最強的電腦圍棋,曾打敗多位職業棋士,懶人包下載點:

http://pan.baidu.com/s/1hqiNxQW

解壓後執行 Drago.exe ,先到 選單 [對弈] -> [對弈引擎設定],按 <添加> ,從列表中選 MoGo,在選項中選 <已安裝>,按 <確定> 退回後在路徑選擇 MoGo_release3\mogo.exe,就設定完成了。

現在可以從選單 [對弈] -> 開始人機對弈,開始下棋。

這裡有 MoGo 的參數說明:
http://web.archive.org/web/20080831091349/http://www.lri.fr/~gelly/MoGo_Download.htm


雖然號稱打敗多位職業棋士史上最強的電腦圍棋,但我和他下的第一盤就把他 KO 掉了 :)
棋譜如下:





2014年4月18日 星期五

delegate 元件

相當於 c# 的 delegate、boost 的 function,下載點:

https://www.dropbox.com/s/2qwqb516v7fi47s/delegate%202.1.7z
http://pan.baidu.com/s/1kT0rOLx

- 須搭配 CxxlMan 程式庫
- 可代理一般函數指標或成員函數指標,參數最多 10 個
- 對於有回傳值的的格式,只能 bind 一筆函數指標,若多次呼叫
  Bind(), 後者會取代前者,若無 bind,執行函數物件叫用(operator())將
  會 throw DelegateErr_NoBind
- 對於無回傳值的的格式,可以 bind 多筆函數指標資料,用 Bind() 會
  傳回一個 DelegateID,此 ID 可給 Unbind() 刪除用

以下是示範程式,

設計邊境

設計課程

https://www.youtube.com/playlist?list=PL8209C3B494AFF49C

我們有跟著宇宙一起膨脹嗎











2014年4月17日 星期四

簡單實作 boost::function 的主要功能

trace goost::function 真的像在走迷宮,它使用大量的 macro 層層相扣,但也只提供最多 10 個參數可以使用,若參數個數能無限制還情有可原,只為 10 個參數搞得這麼誇張,不如使用暴力法還來得簡單明瞭。

goost::function 其實也沒什麼,主要的關鍵在要怎麼把函數的 type 分離出來,比如 goost::function<char(float,int)> 中的 char(float,int) 是一個 type,要怎麼分離出 char、float 和 int 這三個 type?goost::function 是借用特製化 class 自動匹配 type 的技巧,以下用例子說明:

2014年4月6日 星期日

成員函數指標的奇異現象

這方法蠻特殊的,不知是否有實用的價值,很像為 Base 附加功能,不過的我寧願採用延伸介面的方法

 1 #include <iostream>
 2  
 3  using namespace std;
 4  
 5  class Base1
 6  {
 7  public:
 8    // Constructor
 9    Base1(){}
10    // Destructor
11    ~Base1(){}
12  };
13  
14  class Derived1:public Base1
15  {
16    int m_data;
17  public:
18    // Constructor
19    Derived1()
20    {
21      m_data = 0;
22    }

2014年4月3日 星期四

CxxlMan 程式庫源碼

先要有一套 svn 使用端的工具,比如 TortoiseSVN,Checkout URL 填入 http://cxxlman.googlecode.com/svn,即可取得源碼。其內不包含 Make,僅是作為參考、瞭解之用。

程式庫的取得和用法在 http://cxxlman.cxxl3d.tk/