○×ゲーム

アバター
ideyan
記事: 2
登録日時: 15年前
住所: 京都

○×ゲーム

投稿記事 by ideyan » 14年前

ちょっと前に書いてみたもの。
ちゃんと読み解ける&なるべく行数を少なくを目指してみた。
まだ省ける{}とかあるけど見にくくなるのでキニシナイ。

勝利判定がお気に入りですw

CODE:

 
#include 
// NONE 0 : ○ 1 : × 2
int board[3][3],turn,i,win;
int main(){
 for(turn=-1; turn");
  while(!(scanf("%d",&i) && i>0 && --i<9 && !board[i/3][i%3]))scanf("%*[^\n]%*c");
  board[i/3][i%3] = turn%2 + 1;
  //勝利判定
  for(i=0;i<3;++i){
   if((board[0][i] & board[1][i] & board[2][i]) || (board[i][0] & board[i][1] & board[i][2]) ) win = turn%2 + 1;
  }
  if(board[1][1] & ((board[0][0]&board[2][2]) | (board[0][2]&board[2][0])) ) win = turn%2 + 1;
  
  PRINT:
  //盤面表示
  for(i=0;i<9;++i){
   if(!board[i/3][i%3]) printf((i+1)%3 ? "%2d":"%2d\n",i+1);
   else printf((i+1)%3 ? "%s":"%s\n",(board[i/3][i%3]&0x1) ? "○" : "×" );
  }
 }
 //勝敗表示
 if(!win) printf("引き分けです\n");
 else printf("%sの勝ち!\n", (win&0x01) ? "○" : "×");

 return 0;
}

アバター
あーる@Reputeless
記事: 84
登録日時: 15年前

Re: ○×ゲーム

投稿記事 by あーる@Reputeless » 14年前

なるほど、ビット演算の妙技!

アバター
パコネコ
記事: 139
登録日時: 15年前

Re: ○×ゲーム

投稿記事 by パコネコ » 14年前

コード短いですね。
ちょっと尊敬…