はじめに
今日からプログラミングの勉強のために、オセロゲームを作ることにしました。
備忘録をかねてその過程をここに記録することにします。
03年2月17日
何はともあれ、情報はWEBからゲットします。
Googleでオセロ、プログラム、ソースで検索しざっと目を通した後に参考にするページを決定しました。
今日のところは参考ページは、
-鶯教-コンピュータ・リバーシ講座
プログラミング
ティーショップ
Thell
です。
ソースコードも公開されているようなので、この中からどれかを選んで真似してみようかと思います。
03年2月28日
-鶯教-コンピュータ・リバーシ講座のソースコードがDOS用であったので、まずはこれを参考にすることにしました。
BorlandのフリーコンパイラーとCPadの組み合わせでコンパイル後、走らせて見たが文字化けしていてうまく画面が表示されませんでした。インターネットでいろいろ調べたところ、Windows2000ではDOSのエスケープ文字がうまく表示できないということのようです。解決方法がわからなかったので、表示をする関数から、フォーマット部分らしきところを全部省いて、白黒表示にしたら表示できました。石の表示も○と●に変えました。
Visual C++ Version6でもやってみようと、やってみましたがうまくできませんでした。実はVisual
C++の使い方がわかりません。
やったことは、
@新規にWin32 Console Applicationのプロジェクトを作成し
A上記で成功した5個のソースファイルをプロジェクトにインポート
BBuildと実行
すると、エラーが88個出て止まってしまいます。
おそらく基本的なことだと思いますが、私は初心者なので今のところはそのまま放置しておくことにしました。(誰かアドバイスを下さい。)
ここで、一応私のプログラミングのレベルを書いておきます。
もし、今後アドバイスをしてもよいという人がいたら、参考にしてください。
PC-9801でN88ベーシックでFor〜NextとかIf文とか基本的なことは遊びで覚えました。これは15年ほど前の話しです。その後は、大学の研究でFortranを少し使いましたが、もう全く覚えてません。
C言語は有名なプログラミング言語Cの第2版を買って勉強しようとしましたが、その当時はコンパイラがなく勉強できませんでした。VC++を使える環境になって、C++プログラミングというVol3まである厚い本を買いましたが、これも1冊目の半分ぐらいで結局やめてしまいすっかり忘れてしまいました。(でも解らないからあきらめたというわけではありません。)
つまり、CもC++もVCも何も知らないです。
ただし、自称Excelマニアの私は、VBAを使ったExcel上でのプログラムは結構得意です。
Cの勉強しながらだと、ちょっと時間がかかってしまうので、エクセルでオセロプログラムの研究用の骨格部分を今日作ってみました。(プログラムはココ)
行き当たりばったりの最小時間で作成したので、非常に汚くて見にくいですが、コンピュータ同士で勝手に対決するようにしてあります。コンピュータは打てる手の中で相手の石がもっとも多く返る手を探しその中からランダムに手を選びます。このプログラムは手直ししながら、今後のアルゴリズム研究に使う予定です。
※エクセルファイルで公開すると、Virusが怖いと思いますので、ソースだけ公開します。新しいエクセルファイルを作成して、VisualBasicで標準モジュールを挿入しソースをそのまま貼り付けてください。"Board"というシートを作成した後に、startというマクロを実行してください。
※多分、このソースファイルは数日中に削除してしまいます。
03年3月11日
今日は、プログラミング ティーショップの"Visual C++
を使ってオセロを作ってみよう"にしたがってプログラムを書いていきました。オセロプログラムの動作にかかわる部分は良くわかるのですが、Visual
C++の描画関係の部分がまだ良くわかりません。
今日はオセロを実装する(後半)まで、進みましたが途中で1度つまづきました。石のひっくり返しがきちんとできなくなってしまいました。
調べてみると、
オセロを実装する(後半)
→はさんだ石を自分の色の石にする
→OseroView.cppを編集する
の中の最後の部分で
void COseroView::OnLButtonDown(UINT nFlags, CPoint point)というコードを編集する部分がありますが、
指示どおり、赤い部分だけ修正すると、DropDownStone( x, y ); がIf文の後ろにくっついたままになってしまい、動作がおかしくなってしまいます。
これは、何とか修正してうまく動くようになったのですが、他の問題点としてパスの処理ができないというのがあります。これは最後まで講座を終わらせていないので、とりあえず様子を見てみます。 |