前へ 一覧 次へ
第三課 盤面を表示してみよう!
今回使うもの
・switch文
・#include
分からない人は(以下略
前回盤面を初期化したはずなんですが、
実際に表示してみないことには正しく初期化されたのか分かりません。
盤面の表示機能が無いと、オセロは遊べたもんじゃありませんよね。
そこで今回は盤面の表示関数を作ります。
基本はfor文でくるくる回してswicthで各要素をみて分岐、
printfで出力と繰り返していけばOKです。
swicthの代わりにifを使ってもいいです、好みでどうぞ。
そもそも分岐を使わないような書き方もありますが、
文字列の説明が必要になったりして、ややこしいので今回はやりません。
まぁ、この講座の目的は「効率」でなく「わかりやすく」ですからね
(達成できてないような気もするけど)。
以下にソースを示します。
#include < stdio.h >
//盤面表示関数
void disp(void){
int i,j;
for(i = 0 ; i < BOARDSIZE ; ++i){
for(j=0 ; j < BOARDSIZE ; ++j){
switch(board[i][j]){
case NONE:
printf("□");
break;
case BLACK:
printf("○");
break;
case WHITE:
printf("●");
break;
default:
printf("er");
break;
}
}
printf("\n");
}
}
やっと#includeが出てきました。
printf関数を使うのにstdio.hを読み込まないといけません。
このioの部分、勿論input/outputのことですが、
知人に妹/お姉ちゃんと言った猛者がいます……。
今回のfor文は二重ループになっています。
勿論、前回と同じように一重で書くことも可能です。
こっちのほうが分かりやすいかな、ということでこうなっています。
一重のほうがいいよー、って人は勝手に書き換えてください。
この関数で前回初期化した盤面を表示すると↓のようになります。
おお、ちゃんと表示できていますね。
※おまけ※分岐を使わない方法(一例)
void disp()
{
int i,j;
static char *word[]={"□","○","●"};
for(i = 0 ; i < BOARDSIZE ; ++i){
for(j=0 ; j < BOARDSIZE ; ++j){
printf("%s",word[board[i][j]]);
}
printf("\n");
}
}
第四課へ