2009年6月25日木曜日

MacでMille Bornesをプレイする。

最近は、Mac上で仕事をする事が多くなった。いつもの様にMacで仕事をしていて、ふとMille Bornesをしたくなった。

Mille Bornesって何?と言う人の為に書いておくけど

ミール ボーンズ(Mille Bornes)は、2~6人で遊ぶカードゲーム。1954年にフランスの Edmond Dujardin が考案した。

距離カードを積み重ねて、1000マイルレースを行う。 手持ちのカードで、相手を妨害したり、自分の障害を取り除いて、走行距離を伸ばしていく。 距離の合計が1000マイルになった人(チーム)が出た時点、または、カードの山がなくなり、手持ちのカードもなくなった時点で、走行距離に応じた得点にボーナス点を加算した得点で勝敗を決める。

Wikipedia ミールボーンズ より抜粋

簡単に言うと、カードゲームですね。まだSun SPARCstation 4が最新鋭機だった頃、このマシンにMille Bornesをインストールして、昼休みに同僚達と昼飯そっちのけでプレイしていたのを思い出すなぁ。

Mille Bornesを探せ

まずはmacportにあるか検索してみる。

$ port search xmille
No match for xmille found
$

見つかりません orz. 気を取り直してネイティブ版のMille Bornesが無いかググってみると2つ程見つかりました。

微妙... カードのデザインとインターフェースに違和感がある。やはり慣れ親しんだxmilleの画面がしっくり来る。

xmilleをコンパイルしちゃいます

仕方がないので、ソースからコンパイルしてみます。

 $ wget ftp://ftp2.x.org/contrib/games/xmille.tar.gz
 $ tar xvfz xmille.tar.gz
 $ cd Mille
 $ xmkmf -a
 $ make
   .....省略.....
mille.c:51: error: '_sobuf' undeclared (first use in this function)
mille.c:51: error: (Each undeclared identifier is reported only once
mille.c:51: error: for each function it appears in.)
   .....省略.....
mille.c:142: warning: implicit declaration of function 'finish_ui'
mille.c:143: warning: incompatible implicit declaration of built-in function 'exit'
make: *** [mille.o] Error 1
 $
                        

エラーでた orz

やはりMacではxmilleは出来ないのかと諦めかけていたのだが、そういえばMacとFreeBSDは親戚見たいな関係だよね。FreeBSDのportsにxmilleがあれば、そのパッチを使ってコンパイルできるんじゃね。と思い探してみるとports/games/xmille/にありました。

早速パッチを持って来て、コンパイルしてみます。

 $ cd ../
 $ wget http://www.freebsd.org/cgi/cvsweb.cgi/ports/games/xmille/files/files.tar.gz?tarball=1 \
 -O file.tar.gz
 $ tar xvfz  file.tar.gz
 $ cd Mille
 $ find ../files -name "patch*" | xargs cat | patch -p 0
 $ xmkmf -a
 $ make
 $ 

今度はうまく行ったようです。ためしに実行してみると...

 $ ./xmille 
Building pixmaps, please wait . . . . . . . . . . . . . . . . . . . . done
shuffle: card no. error: -4954
 $ 

今度は、エラーが出て立ち上がりません。仕方がないのでパッチファイルをチェックして、あやしそうなパッチが無いか調べてみるとroll.cに次のようなコードがありました。

# if (! defined ultrix && ! defined mips && ! defined vax && ! defined __386BSD__ && ! defined __FreeBSD__)
# define        MAXRAND 32767L
                      

roll.cの10行目に&& ! defined __DARWIN__を追加してコンパイルしてみます。

# if (! defined ultrix && ! defined mips && ! defined vax && ! defined __386BSD__ && ! defined __FreeBSD__ && ! defined __DARWIN__)
# define        MAXRAND 32767L
                      

立ち上げてみると...今度は成功です!!これでおもいっきり遊べますwww

xmille

コンパイルする人はあまり居ないと思いますが、ソースを置いておきますのでトライしてください。

0 件のコメント:

コメントを投稿