/////////////////////////////////////////////////////////////////////
//CMyWndクラスをCSDIクラスから派生させ、メッセージ用の関数を宣言する
/////////////////////////////////////////////////////////////////////
class CMyWnd : public CSDI
{
public: //以下はコールバック関数マクロと関連している
//2重起動防止用のMutex用ID名称
CMyWnd(char* UName) : CSDI(UName) {} //メンバー変数(システム)
int m_Width; //ウインドウ幅
int m_Height; //ウインドウ高さ
int m_Span; //1コマ幅、高さ
CANVAS m_cvs; //仮想ウィンドウ
//メンバー変数(ゲーム)
CNIM m_Nim; //Nim本体
int m_You; //Player(先手-1、後手-2)
int m_Type; //各種対戦のID(1-人間対乱数、2-人間対評価関数、3-人間対経験値、4-乱数対関数、5-乱数対経験値、6-関数対経験値)
int m_No; //連続対戦のゲーム数
int m_Games; //対戦の通算ゲーム数
int m_1st; //先手の勝数
int m_2nd; //後手の勝数 //(解説:ここはマニュアルで追加した部分です。最初の「(システム)」の幅、高さ、一コマ幅(高さ-正方形なので)は最小サイズ確保と描画の為の変数です。CANVASクラスも勿論描画の為です。次の「(ゲーム)」がCUIのcppプログラムにもあったゲーム用の変数ですね。)
//-----------------------------------------
// BCCForm Ver 2.41
// An Easy Resource Editor for BCC
// Copyright (c) February 2002 by ysama
//-----------------------------------------
#include "ResNim.h"
今回私は、出来上がったファイルをBCC Developer(「プロジェクト設定」の「リソーススクリプトファイル」につけられる最初の'"'を取ってくださいね)とbcc32で取り敢えずスケルトンを動作確認し、次いでコイン表示系、ダイアログ系の動作確認を行ってから、最後にCCOINSW.hとCNIMW.h(共にCUIのコイン表示関数を取り去ったもの)を導入して完成させました。次回以降は単にファイルだけズラズラ説明するのではなく、そういったマニュアルでの処理に重点を置いて説明しましょう。(なお、NimのWindows版は新しくアップしたBCCForm and BCCSkelotnの最新版に入れておきました。(CUI版は入っていませんので、CUI版-これもなかなか楽しい-はブログからコピペしてください。)
///////////////////////////////////
// Class of CNIM for playing "nim"
// Copyright (c) by Ysama, 2021
/////////////////////////////////// /*
【ルール】
(1)5列の5個、4個、3個、2個、1個のコイン群をテーブルに置き、
(2)先手、後手が一回に、一つの列から、1個以上のコインを取ってゆき、
(3)最後のコインを取ることになった方が負け
nimの双対ゲーム(https://ja.wikipedia.org/wiki/%E3%83%8B%E3%83%A0)
*/
//(解説:ルールのおさらいです。私のNimは正統派Nimの双対ゲームになっています。)
#include <vector>
using namespace std;
//(解説:またまたvectorを使うのでそのヘッダーファイルの取り込みと、その名前空間を使用する宣言を行います。)