#include <stdio.h>
// 盤面
int table[8][8];
// 現在のターン
int turn = 1;
///////////////////////////
// draw() 関数
// 画面に盤面を描画します。
///////////////////////////
void draw(){
for(int y=0; y<8; y++){
for(int x=0; x<8; x++){
switch( table[x][y] ){
case 0:
printf( "□" );
break;
case 1:
printf( "●" );
break;
case -1:
printf( "○" );
break;
}
}
printf( "\n" );
}
}
///////////////////////////
// drawTurn() 関数
// 現在のターンを表示します
///////////////////////////
void drawTurn(){
if( turn == 1 ){
printf( "黒(1P)の番です。\n" );
}else if( turn == -1 ){
printf( "白(2P)の番です。\n" );
}
}
///////////////////////////
// nextTurn() 関数
// ターンを入れ替えます
///////////////////////////
void nextTurn(){
turn = -turn;
}
///////////////////////////
// isEnd() 関数
// ゲームが終了しているかを判定します。
// ゲームが終了していれば 0 を返し、
// まだ終了していなければ 1 を返します。
///////////////////////////
int isEnd(){
for(int x=0; x<8; x++){
for(int y=0; y<8; y++){
if( table[x][y] == 0 ){
return 1;
}
}
}
return 0;
}
///////////////////////////
// put() 関数
// 駒を置く位置を入力させます。
// 駒を置ける位置への入力があった場合は 0 を、
// 駒を置けない位置への入力があった場合は 1 を返します。
///////////////////////////
intput(){
int x, y;
// 駒を置くX座標の入力を受け付けます
printf( "駒を置くX座標(0~7) ... " );
scanf( "%d", &x );
if( x < 0 ){
return 1;
}
if( x >= 8 ){
return 1;
}
// 駒を置くY座標の入力を受け付けます
printf( "駒を置くY座標(0~7) ... " );
scanf( "%d", &y );
if( y < 0 ){
return 1;
}
if( y >= 8 ){
return 1;
}
// table 変数を見て置こうとしている場所が 0 でなければ、『1』を返す
if( table[x][y] != 0 ){
return 1;
}
// turnItem() 関数に入力された位置を渡して、相手の駒をひっくり返す処理を行います。
if( turnItem( x, y ) == 1 ){
// 1枚もひっくり返せなかった場合は、『1』を返す
return 1;
}
return 0;
}
///////////////////////////
// result() 関数
// 結果表示
///////////////////////////
void result(){
int result = 0;
for(int x=0; x<8; x++){
for(int y=0; y<8; y++){
result += table[x][y];
}
}
if( result > 0 ){
printf( "黒(1P)の勝ちです。" );
}else if( result < 0 ){
printf( "白(2P)の勝ちです。" );
}else{
printf( "引き分けです。" );
}
}
///////////////////////////
// main() 関数
// プログラム本体
///////////////////////////
int main(){
// 盤面をすべて 0(何も置かれていない) で初期化します。
for(int x=0; x<8; x++){
for(int y=0; y<8; y++){
table[x][y] = 0;
}
}
// センターの黒と白を配置します。
table[3][3] = 1;
table[4][4] = 1;
table[3][4] = -1;
table[4][3] = -1;
// ゲームが終了するまでループします。
while( isEnd() == 1 ){
// 盤面を表示します。
draw();
// 現在 黒(1P)の番か白(2P)の番かを表示します。
drawTurn();
// 駒を配置する場所を選択させます。
if( put() == 0 ){
// 黒(1P)と白(2P)の順番を入れ替えます。
nextTurn();
}else{
printf( "そこには置けません\nもう一度選択してください。\n" );
}
}
// 結果を表示。
result();
return0;
}