月刊ASCII1980年10月号でオセロ特集が組まれた時、時代はまさに、8ビットマイコン黎明期。特集ではプログラム同士の総当たり戦が行われました。
参加者機種はTRS-80、PC-8001、HP-41C(ポケットコンピュータ)、そして、TL/1はワンボードマイコンのH68/TRで参加しました。製作者はTL/1の生みの親、大西博さんです。
結果はH68/TRが5勝1敗で第1位。みごと優勝しました。その後、「マイクロオセロリーグ」というタイトルで企画は引き継がれ、次々と強いプログラムが登場して、誌面を賑わしました。
今回は、この元祖TL/1のゲームをTLXで復活させてみます。
1.盤面のデザイン
![OTHELLOX](https://stat.ameba.jp/user_images/20140401/06/siropyon/2e/ab/j/t02200185_0646054412893848622.jpg?caw=800)
それでも、往時の再現部分も残したいので、画面の下半分にメッセージ表示ボードをつけまいた。
プログラムが長考に入った時の「PLEASE WAIT!」メッセージが、ここに表示されて対戦を盛り上げます。
2.対戦人数
もともとの仕様では、対戦員数は0~2人。2人を選ぶと人間対人間になります。1人を選ぶとMSX対人間に。では0人だと?MSX対MSXになって自動で全てのゲームが進みます。
今回のソースでは、入力&表示のロジックが複雑になるので。0人の選択ができないようにしました。
74行目の「until NP>0 and NP<3」の「NP>0 and」判定をはずすと0人の動作が見れますので、試してみてください。
3.駒(石)がおける場所
プログラム内部で使っているFEASIBLE関数は駒(石)が置ける場所を判定してくれるので、これを使って人間の番では石が置ける場所を小さなドットで示すようにしました。
また、駒(石)がおける場所が1か所しかなくなったら、指定打ちとなってMSXが勝手に駒(石)を置いて先に進めてくれます。
駒(石)が置けなくなった時も、メッセージを表示して、先に進みます。両者が駒(石)を置けなくなった時点で終了です。両者の駒(石)の数をメッセージボードに表示し、勝った駒(石)を教えてくれます。
4.棋譜の自動保存
![対戦ログ](https://stat.ameba.jp/user_images/20140401/06/siropyon/ae/71/j/t02200180_0591048412893848621.jpg?caw=800)
肝心の実力ですが、RaspbianにバンドルされてたFlippyとは、勝ったり負けたり。紹介している画像では引き分けという珍しい結果となっています。
他にもiPhoneアプリとかと対戦してみましたが、なかなか強い。まだまだ現役という感じですね。
5.ソースプログラムの公開
![ReversiX](https://stat.ameba.jp/user_images/20140415/19/siropyon/72/4a/j/t02200190_0656056712909708080.jpg?caw=800)
本体と追加のソースライブラリを固めてアップしましたので、TLXコンパイラと同じ場所に置いてコンパイルしてみてください。
みなさんの独自の工夫で強くしてみてくださいね。
bye!!