Help us understand the problem. What is going on with this article?

オセロを作ろう(素人編、途中段階)

More than 3 years have passed since last update.

この記事はSLP KBIT Advent Calendar 2016の16日目の記事です。

はじめに

今までの方々はなんかいろいろ技術的なことや作ってみたなど言っていますが正直

後輩ちゃん.png

なので、今活動でやっているオセロ作りについてはじめの段階だけですが書いてみようかと思います(素人なりに)

初期盤面を表示する

コマンドプロンプト上に作っていくわけですがオセロといえば、
オセロ2.jpg
こんな感じをまず想像しますよね

で、

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;

}

はいこんな感じです

これを出力してみよう!

オセロ3.png

よし!
まあこれじゃあ見づらいのでマスを追加して
オセロ1.png
おっ、結構いい感じ
だけど二次元配列のとこ長いなぁ

で、先輩に教えてもらいました

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)

オセロ4.png

実行結果がこちら
ひっくり返る処理はまだ入れていませんのでただ黒のコマが出るだけですが、できました。
が、まだまだ先は長そうです…

最後に

まだまだできないことが多いですが、教えてもらって最後まで作り上げたいと思います。

ではでは

以上!!.jpg

tamuchin
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした