スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

オセロ開発 オセロ盤の初期化


最初はいきなりAIをつくるわけにもいかないので、盤の作成から始めたいと思います。

今回は盤の表示

参考にしたのはコチラ

京都産業大学さんのオセロ開発のサイト(たぶん学生の実習課題)
http://www.cc.kyoto-su.ac.jp/~yamada/ap/othello_board.html


ちなみにプログラムはvisual C ++ 2008 を用いて行っていきます。

オセロ盤の各マスは3つの状況に分けられるでしょう。

何も乗ってない空きマスの状態。
黒が乗っている状態。
白が乗っている状態。 の3つです。

今回のプログラムではこれを数字で表し、

空き 0
黒  1
白  2

とします。

ソースを書きはじめます。
(表示の関係上記号を全角で用いている場合があります。コピペではうまく実行できない場合があります。)
(//以下はコメントです。)
最初はおきまりの
#include <stdio.h>

次に盤の大きさを決めます。オセロは8×8ですから、余裕をもって10×10で用意します。

この盤の大きさは後から簡単に変更できるように#define 文で定義しておきます。
#define B 10 ; // Bを10と定義。この時のBの部分は任意でよい。以降 B には10が代入される。

わかりやすく定義するなら
#define Board 10 ; とかでも良い

次に、空きマス、黒が置かれているマス、白が置かれているマス の定義
最初に決めたとおり、空きが 0、黒が 1、白が 2 と定義する
#define aki 0 ;
#define kuro 1 ;
#define siro 2 ;

オセロ盤は縦×横の座標設定をするため二次元配列を使用します。

この際、配列の名前をboardと設定し、

int board [10][10] //盤配列の用意

これで縦10横10の配列が用意できました。

次にこの配列を初期化します。

この際にローカル関数を用意します。
(というか以降も役割別にローカル関数を使いますから、最初のほうに宣言文を随時挿入してください。)

今回の関数は盤配列を初期化するだけなので戻り値、引数は必要ありません。

初期化は英語で initialize 、盤は board なので、

盤初期化用のローカル関数の名前はinit_boardにしましょう。

よって用意する関数の宣言は

void init_board(void); //盤配列の初期化用関数

頭の void は戻り値が無い。
最後の (void) は引数が無いことを示します。

では関数の中身を書いていきましょう。

void init_board(){

int i , j ;
for ( i = 0 ; i < B ; i++ ){
for ( j = 0 ; j < B ; j++ ){

board[i][j]=-1 ;
}
}
for (i=1 ; i < 9 ; i++){
for (j=1 ; j < 9 ; j++){
board[i][j]=aki ;
}
}
board[4][4] = kuro;
board[4][5] = siro;
board[5][4] = siro;
board[5][5] = kuro;
}

先ほど二次元配列を用意しましたので、

これを初期化するために、この関数だけに使う変数 i と j を用意します。

なぜ 2 数用意したかといいますと、オセロ盤は縦と横の座標で表されるからです。

ここでは縦が i 横が j として扱っていきます。

次にfor文を2つ使います。

これはよく使う方法のようなのでマスターしておくといいことがあるかもしれません。

そしてこれは最初にすべてのマスに -1 (盤外)を代入し、

その後、再び盤の使う場所を 0 (空きマス) で上書きします。

最後に、オセロの初期配置の4つの駒を配置し初期化は完了です。

次回はこれを表示させます。



スポンサーサイト

現状把握


まずは現状把握をしましょう。


現状は.......................とりあえずこの一冊を理解したところです。




非常にわかりやすく比較的短時間で学べる一冊だと思います。

しかし

よし、一冊理解したぞ!!

..............................次は何すればいいんだろう?

と、なりました。

そこでkumaは無謀なことをすることにしたのです。。。。。。


オセロをつくろう!!!!!と。


というわけで次回からオセロを作成します(無謀)

ブログのスタンス

初めまして当ブログの管理人のkumaと申します。

当ブログは、右も左もわからないようなkumaがプログラムを学び、ソフトを作ることを目標に始めたものです。

最終目標としては、今話題の将棋プログラムを作りコンピューター将棋選手権に出ることです。

ここ数年プログラミングを始めたいと思ってはいたのですが中々始められず、やっと学び始めたところです。

同じプログラム初心者の方はもちろん、上級者の方もアドバイスをいただければ幸いです。

これからよろしくお願いします。


プロフィール

kuma

Author:kuma
FC2ブログへようこそ!

最新記事
最新コメント
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。