オセロをチェスにすり替える

『完全なるチェックメイト』(Pawn Sacrifice)(2014)
アメリカの天才ボビー・フィッシャーの伝記映画です。幼少の頃からロシアの天才ボリス・スパスキーの対戦までが描かれています。
タイトルの『完全なるチェックメイト』とは、きっとスパスキーとの対戦の見事な指し手のことだと思いますが、劇中で、負けを認識したスパスキーが、立ち上がって拍手を始めるシーンが感動的でした。映画の中のセリフで、「全ては理論と記憶なんだよ」という言葉が、やはり棋譜ってことだな、と私も棋譜を覚えようとモチベーションが上がるのでした。

オセロを将棋にすり替える」と同じ要領です。チェス盤は、市松模様になるので、ひと工夫加えます。
まずはTcl/Tkスクリプトから修正します。市松模様(チェック柄)を指定された時は、黒と白を交互に配列に入れておきます。(52行目〜)
それ以外の色の場合は、配列へ同じ色を設定しておきます。

    50	for {set i 1} {$i <= $xmax} {incr i} {
    51		for {set j 1} {$j <= $ymax} {incr j} {
    52			if { $color == "check" } {
    53				if { [expr ($i + $j) % 2] == 0 } {
    54					set bgcolor($i$j) black
    55				} else {
    56					set bgcolor($i$j) white
    57				}
    58			} else {
    59				set bgcolor($i$j) $color
    60			}
    61			button .b$i$j -font {FreeMono 40 bold} -bg $bgcolor($i$j) -activebackground yellow -activeforeground red

実行してみましょう。

takk@deb83:~$ git clone https://github.com/takkete/scrap.git
takk@deb83:~/scrap$ gcc -DCHESS game.c
takk@deb83:~/scrap$ wish gameboard.tcl

chess-001
コンパイルオプションを変えることで、他のゲームボードに早変わりします。

takk@deb83:~/scrap$ gcc -DSHOGI game.c
takk@deb83:~/scrap$ gcc -DREVERSI game.c

コメント

タイトルとURLをコピーしました