この記事はSLP KBIT Advent Calendar 2016の16日目の記事です。
はじめに
今までの方々はなんかいろいろ技術的なことや作ってみたなど言っていますが正直なので、今活動でやっているオセロ作りについてはじめの段階だけですが書いてみようかと思います(素人なりに)
初期盤面を表示する
コマンドプロンプト上に作っていくわけですがオセロといえば、 ![オセロ2.jpg](https://qiita-image-store.s3.amazonaws.com/0/151998/9d8e8872-a292-dd9d-474f-60187f49515a.jpeg) こんな感じをまず想像しますよねで、
void brd_output(int brd[8][8]) {
int i, j;
for(i = 0; i < 8; i++){
for(j = 0; j < 8; j++){
switch(brd[i][j]){
case 0 : printf("・"); break;
case 1 : printf("〇"); break;
case -1 : printf("●"); break;
}
}
printf("\n");
}
}
int main(void) {
int arr[8][8] = { {0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,-1,1,0,0,0},
{0,0,0,1,-1,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0}};
brd_output(arr);
return 0;
}
はいこんな感じです
これを出力してみよう!
よし!
まあこれじゃあ見づらいのでマスを追加して
おっ、結構いい感じ
だけど二次元配列のとこ長いなぁ
で、先輩に教えてもらいました
void init(void)
{
int i, j;
for(i = 0; i < SIZE; i++){
for(j = 0; j < SIZE; j++){
cell[i][j] = ・;
}
}
cell[3][3] = cell[4][4] = ○;
cell[3][4] = cell[4][3] = ●;
}
おー、これは簡単(^^♪
初期盤面は完成かな
コマの出力
先に言っとくと今回はこれができたら終わります ~~あとはまだ教えてもらってないし~~、~~そろそろ長さもいいだろうし~~ ではここではとりあえず枠内か枠外か(つまり打てるか打てないか)を出そうと思います
void input(void)
{
int x, y;
while(1)
{
printf("X > "); scanf("%d", &x); x--;
printf("Y > "); scanf("%d", &y); y--;
if (x >= 0 && x < 8 && y >= 0 && y < 8)
{
cell[y][x] = ●; break;
}
printf("そこには置けません(ΦωΦ)\n");
}
}
出力判定を置き、1~8のときは黒のコマを、それ以外は打ち直しさせるプログラムです(なお盤面内ならどこでもいいため白のコマのところにもry)
実行結果がこちら
ひっくり返る処理はまだ入れていませんのでただ黒のコマが出るだけですが、できました。
が、まだまだ先は長そうです…
最後に
まだまだできないことが多いですが、教えてもらって最後まで作り上げたいと思います。ではでは