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

  • 0
    いいね
  • 0
    コメント

    この記事は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

    この投稿は SLP_KBIT Advent Calendar 201616日目の記事です。