ニンテンドー 3DS プチコン3号 SmileBASIC 版 チェスプログラム YOS_CHESS [Chess Program] 公開

以前、ブログを書いてから一年ぐらい経ちますが、色々取り組んでいました。ニンテンドー 3DS ダウンロードソフト ‘プチコン3号’ でコンピュータと対戦できるチェスプログラムを作ってみました。

公開キー、実行画面、動画を載せておきます。

YOS_CHESS (YKChess)
チェス
コンピュータと対戦できるチェスプログラム。
公開キー W2E433R4

実行画面

動画

麗の小屋 - Phono Transceiver PetitModem -
http://rei.to/petitmodem.html

上記 PetitModem Ver. 1.2.7 の使い方を解説した PDF ファイルと Mac 上のテキストエディタ CotEditor でプチコン3号のソースをカラーリング化する定義ファイルなどをまとめた SmileBASIC.zip も公開します。

PetitModem Ver. 1.2.7 の使い方、SmileBASIC 用 CotEditor 定義ファイル
[ SmileBASIC.zip ]
http://kyoshiaki.sakura.ne.jp/osx/Sample/SmileBASIC.zip

上記 URL に含まれる PetitModem Ver. 1.2.7 の使い方を解説した PDF ファイルは、結構苦労して作成しました。良かったらぜひダウンロードして読んでみてください。

チェスプログラム YOS_CHESS.PRG は、

Chess Engine In C - YouTube
https://www.youtube.com/playlist?list=PLZ1QII7yudbc-Ky058TEaOstZHVbT-2hg
Vice (Video Instructional Chess Engine)
Sources (ソース)
http://bluefever.net/Downloads/ViceReadMe.html

上記 URL の YouTube のチェスプログラミング講座とソースを参考に作成しました。

chessprogramming - home
https://chessprogramming.wikispaces.com/
Chessprogramming wiki
https://www.chessprogramming.org/Main_Page

チェスプログラミングの用語、変数名は、上記 URL の Wiki で検索し、理解しました。

プチコン3号の変数は

整数型…変数名末尾が %
32ビット符号あり
データ型 #
倍精度実数型…変数名末尾が #
(省略可能・デフォルト)
64ビット

上記のように整数型とデータ型があります。64ビット整数型の変数が使えないので、局面を64ビットのハッシュ値で表すことができません。そのため、

three-fold repetition (同局面三反復、3レピティション)
同じ局面が3度現れるとドローを主張できる。

Threefold repetition には対応していません。

YOS_CHESS (YKChess) の強さは、Level 5 でも Xboard に一度も勝つことができませんでした。非常に弱いので、初心者向けです。

macOS Sierra バージョン 10.12 付属のチェス (バージョン 3.13) で、2手先まで考えるように設定し、3回対戦しました。YOS_CHESS (level 5) の2勝1引き分けでした。

英語が苦手なのでメッセージの英語表記には、おかしな箇所があるかもしれません。

チェスプログラムを作成してみて、以前より理解が深まったので

2005/06/15(Wed)
リバーシアルゴリズム C++&Java対応—「探索アルゴリズム」「評価関数」の設計と実装 - Seal Software
¥ 1,995
リバーシのアルゴリズム C++&Java対応―「探索アルゴリズム」「評価関数」の設計と実装 (I・O BOOKS)

リバーシのアルゴリズム C++&Java対応―「探索アルゴリズム」「評価関数」の設計と実装 (I・O BOOKS)

2005/03/08(Tue)
コンピュータ将棋のアルゴリズム—最強アルゴリズムの探求とプログラミング - 池 泰弘
¥1,995
コンピュータ将棋のアルゴリズム―最強アルゴリズムの探求とプログラミング (I・O BOOKS)

コンピュータ将棋のアルゴリズム―最強アルゴリズムの探求とプログラミング (I・O BOOKS)

以前購入した上記2冊を読み返してみようと思いました。ただし、書籍「コンピュータ将棋のアルゴリズム」は紛失してしまいました。

ところが最近、最新刊が

2016/09/07(Wed)
Java将棋のアルゴリズムアルゴリズムの強化手法を探る (I・O BOOKS)
池 泰弘
¥ 2,484

発売されていました。上記、書籍とソースを参考に理解を深めています。

最後に YOS_CHESS (YKChess) の取扱説明書 README_JA.PRG の内容を添付しておきます。

===== README_JA.PRG =====

'
' YKChess (YOS_CHESS.PRG)
' Version 1.0 Programmed by KYoshiaki
'
'【概要】
'
' YouTube のチェスプログラミング講座とソースを参考に、プチコン3号で
' コンピュータと対戦できるチェスプログラムを作ってみました。思考ルーチンは、
' 単純なアルファ・ベータ法を使用しています。非常に弱いので、チェスを始めてみたい
' 人向けです。
'
'【説明】
'
' YKChess には、3つのモード
'
' ・プレイモード
' ・プレイヤーのタイプ、レベル選択モード
' ・棋譜再生モード
'
' があります。
'
' YOS_CHESS.PRG を実行すると `プレイモード´ に入ります。
'
' New ボタンをタッチすると `プレイヤーのタイプ、レベル選択モード´、
' Play ボタンをタッチすると `プレイモード´、
' `プレイモード´ でゲームが終了するか、Resign ボタンをタッチすると
' `棋譜再生モード´ に入ります。
'
'■ プレイモード
' 駒を動かして、ゲームをプレイできます。
'
' 駒の移動は、駒をタッチして選択し、次に移動したいマス目をタッチしてください。
' Assistant ラジオボタンがオンなら、選択した駒の移動可能なマス目が緑色で
' 表示されます。
' Assistant ラジオボタンをタッチしてオフにすると、移動可能なマス目は表示
' されません。
'
'■ プレイヤーのタイプ、レベル選択モード
' New ボタンをタッチするとプレイヤーのタイプ、レベル選択モードに入ります。
'
' White(白), Black(黒) それぞれのプレイヤーの Type (タイプ)、
' Level (レベル) をポップアップメニューをタッチして選択できます。
'
' Type は、2種類あります。
'
' You: あなた
' Machine: コンピュータ
'
' Level (レベル)は 1 から 5 まで選択できます。YKChess では
' レベル 5 が最強です。
'
' コンピュータ同士の対戦を終了したい場合は、START ボタンを押して強制終了
' してください。
'
' Eval は、思考ルーチンの情報を表示します。
'
' Material:
' 駒ごとに割り当てた点数の合計で評価する関数を使用します。
'
' Table:
' 駒の点数と盤上の位置に割り当てた点数の合計で評価する関数を使用します。
'
' Depth:
' 先読み数(半手)。
' チェスの1手先読みが、Depth 2 になります。
'
' Level: 2
' Eval:
' Material
' Depth: 2
'
' この場合、思考ルーチンは、1手先読みのアルファ・ベータ法で、評価関数は
' Material 使用しています。
'
'■ 棋譜再生モード。
'
' |<
' 棋譜の最初に移動。
' <
' 半手戻す。
' >
' 半手進める。
' >|
' 棋譜の最後に移動。
'
'【ボタンの解説】
'
' New
' 新規のゲーム
'
' Play
' ゲームの開始
'
' Undo
' 1手戻す
'
' Flip
' チェス盤の反転
'
' Resign
' リザイン
' 投了
'
' Quit
' プログラムの終了。
'
' 【情報】
' Ply: half-move
' 半手数。
' 白と黒のどちらか半手動くと Ply が 1 増えます。
'
' チェスの1手は、Ply では 2 になります。チェスでは、白、黒、両方動いて
' 1手になります。
'
'
' DIALOG
'
RESTORE @DIALOG
READ NUM
FOR I=0 TO NUM-1
READ TEMP$
TEXT$=TEXT$+TEMP$+CHR$(13)
NEXT
DIALOG TEXT$,0
@DIALOG
DATA 3
DATA "取扱説明書は README_JA.PRG に記載されています。"
DATA "作業用プロジェクトを YOS_CHESS に変更し、'SmileBASICでプログラムを作る' から"
DATA "ファイル README_JA.PRG を読み込んで閲覧してください。"

2ch Script version 0.3

利用している人はいないと思いますが、以前 [ id:KYoshiaki:20081026 ] 紹介した iPhoneiPod touchSafari 対応 2ch Script version 0.3 [ hhttp://kyoshiaki.sakura.ne.jp/osx/leopard.html ] を公開します。

時間がとれないので、厳密に動作確認をおこなっていません。問題があるかもしれません。コメント設定を許可にしておきます。だだし、コメントは承認後に公開されます。時間がとれる限り返事はするつもりですが、遅くなると思います。

ブログには書いていませんでしたが、随分前に値段は高かったのですが DS 版 Chessmaster: The Art of Learning を購入していました。

ニンテンドーDSi にリージョンプロテクトがないので、問題なく動作します。私自身めちゃくちゃ弱いのですが ELO レーテイングをこつこつあげています。

また iPod touch 用に iTunes StoreApp Store から

iChess (Free)
カテゴリ/ゲーム
無料
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=298074242&mt=8

をダウンロードして遊んでいたのですが、結構勝てそうなので

iChess
カテゴリ/ゲーム
\115
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=292985696&mt=8

を購入してみました。レベルをちょっと下げてみたら勝てたので驚いています。iChess はあまりにも機能がシンプルなので他のチェスソフトを物色中です。

また、将棋ソフトが発売されるのを待ち望んでいました。

柿木将棋
カテゴリ/ゲーム
\450
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=301163765&mt=8

とうとう、柿木将棋が発売されました。早速購入しました。勝てた時はうれしかったですね。レベルは内緒ですが!

あと前々回 [ id:KYoshiaki:20081207 ] 紹介した自作 iPhoneiPod touch 用アプリ iYKRSS や Safari を使ってウェブブラウジングしているのですが、わからない英単語を見つけた時、以前のように一度 Safari を終了して i英辞郎 で調べるのではなく、ニンテンドーDSi ‘漢字そのまま DS楽引辞典‘ で調べられるのは便利ですね!本当は iPod touchiPhone の両方があればよいのですが!

Chessmaster 9000

たまに米国のアップルサイトを覗きます。たまたまダウンロードサイトに、Chessmaster 9000 の紹介記事 (下記 URL) を見つけました。

Apple - Downloads - Chessmaster 9000 - Demos & Updates
http://www.apple.com/downloads/macosx/games/demos_updates/chessmaster9000.html

チェスについては駒の動きとルールぐらいしか知りませんが、以前から興味を持っていました。書籍も何冊か購入したことがあります。

また Chessmaster シリーズは初心者にとってもチュートリアルが充実しているという噂を聞いています。

Universal Binary ではありませんし、英語版ですが、ぜひ欲しくなりました。米国アップルストアでは販売しているようですが、日本への発送には対応していないようです。日本のアップルストアでは残念ながら発売していません。

それで直接会社のホームページにアクセスしてみると

Feral Interactive
http://www.feralinteractive.com/?language=japanese
Feral Interactive : Chessmaster 9000
http://www.feralinteractive.com/?game=chessmaster9k

日本語表示にも対応しています。販売もしているようです。それで Chessmaster 9000 を注文してみました。

値段は 6000 円です。クレジットカードは Visa、Master に対応しているようです。

発送のメールの後、5日後に AIR MAIL で届きました。

DVD には、英語版とフランス語版のフォルダがあるみたいなので、英語版のフォルダをアプリケーションフォルダにコピーしました。後はマニュアル通りです。

残念なのが、コピープロテクトのためか、Chessmaster 9000 を起動するたびに Chessmaster 9000 の DVD をドライブに挿入する必要があります。

プレイヤーを作成、ログインし、CLASSROM の Classroom Curriculum / Beginning / Your First Chess Lesson を試してみました。本当に親切に解説してあります。もちろん英語ですが、そんなに難しい単語もないと思います。辞書で調べれば理解できるはずです。

ただ Quiz の解答で駒を連続して動かすときに、Good. Keep going. と Chessmaster 9000 が発音している間に、駒を動かすとクラッシュしました。Good. Keep going. と発音された後、カーソルが手の形に変わってから、駒を動かす必要があるようです。

GAME ROOM で Rating の低いコンピュータプレイヤーと対戦してみました。勝利しましたが、私が弱すぎます。

将棋も初心者並みで、xshogi でちょうどいいのですが、Mac OS X 付属のチェスソフトに、勝てるぐらいにはなりたいですね!道のりは長そうですが!