C言語コードは簡単な三子将棋ゲームを実現します。


本論文の例では、C言語コードを共有し、簡単な三目並べゲームの具体的なコードを実現します。参考にしてください。具体的な内容は以下の通りです。
1.三目並べゲームのルール
白黒の一種です。三目並べは民間の伝統的な遊びで、九宮棋、囲いチャーチ、竜一匹、井字棋などとも言います。正方形の対角線をつないで、双方に対して順次3つの双方の駒を並べて、自分の3つの駒を1本の線に歩くのでさえすれば、相手は負けます。しかし、多くの場合は引き分けとなることがあります。

2.設計の考え方
ゲームの流れ:
1.ボードを作成し、初期化し、すべての位置をスペースに設定します。
2.ボードを印刷する
3.プレイヤーは座標(row,col)を入力してドロップします。
4.判定勝負
5.コンピュータがランダムに落下する
6.勝負を判断する
具体的な実現:
1.盤を3×3の二次元配列で表し、配列の各要素はcharタイプです。
2.「x」はプレイヤー1を表し、「o」はプレイヤー2を表し、スペースは空白となります。
3.rand&srand制御コンピュータのランダム落下
3.コードの詳細
(1).3はファンタジー数字であり、混乱を避けるためにマクロ定義を使用する

#define MAX_ROW 3
#define MAX_COL  3
char chessBoard[3]3];
char chessBoard[MAX_ROW][MAX_COL];
グローバル変数として定義することを推奨しません。
(2)初期化関数は、ボードの各位置をスペースに初期化します。

void init(char chess[MAX_ROW][MAX_COL]) 
{
 for (int row = 0; row < MAX_ROW; row++)
 {
  for (int col = 0; col < MAX_COL; col++)
  {
   chess[row][col] = ' ';
  }
 }
}
(3)ボードを印刷します

void print(char chess[MAX_ROW][MAX_COL])
{
 printf("+---+---+---+
"); for (int row = 0; row < MAX_ROW; row++) { printf("|"); for (int col = 0; col < MAX_COL; col++) { printf(" %c |", chess[row][col]); } printf("
+---+---+---+
"); } }
記号の調整を繰り返すことで、ボードを確定します。

(4)プレイヤー落下
入力値が合法かどうかを判断するには、オフラインで表示してはいけません。合法でないと再入力します。
また、入力位置にサブがあるかどうかは、ユーザーに再入力を促す場合があります。

void playerMove(char chessBoard[MAX_ROW][MAX_COL]) 
{
 printf("    ....
"); while (1) { printf(" (row col): "); int row = 0; int col = 0; scanf("%d %d", &row, &col); if (row < 0 || row >= MAX_ROW || col < 0 || col >= MAX_COL) { printf(" ! !
"); continue; } if (chessBoard[row][col] != ' ') { printf(" , !
"); continue; } chessBoard[row][col] = 'x'; break; } }
(5)勝負を判断する
xに戻ると、プレイヤーの勝利を表します。oに戻ります。コンピュータが勝ったという意味です。勝負がつかないことを表す。
;はqを返して、引き分けを表します。

char isGameOver(char chessBoard[MAX_ROW][MAX_COL]) 
{
 //     ,     ,      
 for (int row = 0; row < MAX_ROW; row++) {
  if (chessBoard[row][0] != ' '
   && chessBoard[row][0] == chessBoard[row][1]
   && chessBoard[row][0] == chessBoard[row][2])
  {
   return chessBoard[row][0];
  }
 }
 for (int col = 0; col < MAX_COL; col++) {
  if (chessBoard[0][col] != ' '
   && chessBoard[0][col] == chessBoard[1][col]
   && chessBoard[0][col] == chessBoard[2][col]) 
  {
   return chessBoard[0][col];
  }
 }
 if (chessBoard[0][0] != ' '
  && chessBoard[0][0] == chessBoard[1][1]
  && chessBoard[0][0] == chessBoard[2][2]) 
 {
  return chessBoard[0][0];
 }
 if (chessBoard[0][2] != ' '
  && chessBoard[0][2] == chessBoard[1][1]
  && chessBoard[0][2] == chessBoard[2][0])
 {
  return chessBoard[0][2];
 }
 //       
 //      
 if (isFull(chessBoard)) 
 {
  return 'q';
 }
 //     
 return ' ';
}
(6)パソコンが落ちました
落下位置の前に子があるかどうかを判断する必要があります。

void computerMove(char chessBoard[MAX_ROW][MAX_COL]) 
{
 while (1) {
  int row = rand() % MAX_ROW;
  int col = rand() % MAX_COL;
  if (chessBoard[row][col] != ' ') 
  {
   continue;
  }
  chessBoard[row][col] = 'o';
  break;
 }
}
(7)ボード関数を判断する
1満0未満

int isFull(char chessBoard[MAX_ROW][MAX_COL]) 
{
 //     ,        
 for (int row = 0; row < MAX_ROW; row++) 
 {
  for (int col = 0; col < MAX_COL; col++) 
  {
   if (chessBoard[row][col] == ' ') 
   {
    return 0;
   }
  }
 }
 return 1;
}
4.完全コード

include <stdio.h>
#include <stdlib.h>
#define MAX_ROW 3
#define MAX_COL 3
void init(char chess[MAX_ROW][MAX_COL]) 
{
 for (int row = 0; row < MAX_ROW; row++)
 {
  for (int col = 0; col < MAX_COL; col++)
  {
   chess[row][col] = ' ';
  }
 }
}

void print(char chess[MAX_ROW][MAX_COL])
{
 printf("+---+---+---+
"); for (int row = 0; row < MAX_ROW; row++) { printf("|"); for (int col = 0; col < MAX_COL; col++) { printf(" %c |", chess[row][col]); } printf("
+---+---+---+
"); } } void playerMove(char chessBoard[MAX_ROW][MAX_COL]) { printf(" ....
"); while (1) { printf(" (row col): "); int row = 0; int col = 0; scanf("%d %d", &row, &col); if (row < 0 || row >= MAX_ROW || col < 0 || col >= MAX_COL) { printf(" ! !
"); continue; } if (chessBoard[row][col] != ' ') { printf(" , !
"); continue; } chessBoard[row][col] = 'x'; break; } } void computerMove(char chessBoard[MAX_ROW][MAX_COL]) { while (1) { int row = rand() % MAX_ROW; int col = rand() % MAX_COL; if (chessBoard[row][col] != ' ') { continue; } chessBoard[row][col] = 'o'; break; } } // 1 , 0 int isFull(char chessBoard[MAX_ROW][MAX_COL]) { for (int row = 0; row < MAX_ROW; row++) { for (int col = 0; col < MAX_COL; col++) { if (chessBoard[row][col] == ' ') { return 0; } } } return 1; } char isGameOver(char chessBoard[MAX_ROW][MAX_COL]) { for (int row = 0; row < MAX_ROW; row++) { if (chessBoard[row][0] != ' ' && chessBoard[row][0] == chessBoard[row][1] && chessBoard[row][0] == chessBoard[row][2]) { return chessBoard[row][0]; } } for (int col = 0; col < MAX_COL; col++) { if (chessBoard[0][col] != ' ' && chessBoard[0][col] == chessBoard[1][col] && chessBoard[0][col] == chessBoard[2][col]) { return chessBoard[0][col]; } } if (chessBoard[0][0] != ' ' && chessBoard[0][0] == chessBoard[1][1] && chessBoard[0][0] == chessBoard[2][2]) { return chessBoard[0][0]; } if (chessBoard[0][2] != ' ' && chessBoard[0][2] == chessBoard[1][1] && chessBoard[0][2] == chessBoard[2][0]) { return chessBoard[0][2]; } if (isFull(chessBoard)) { return 'q'; } return ' '; } int main() { char chessBoard[MAX_ROW][MAX_COL]; init(chessBoard); char winner = ' '; while (1) { print(chessBoard); playerMove(chessBoard); winner = isGameOver(chessBoard); if (winner != ' ') { break; } computerMove(chessBoard); winner = isGameOver(chessBoard); if (winner != ' ') { break; } } if (winner == 'x') { printf(" !
"); } else if (winner == 'o') { printf(" !
"); } else { printf(" !
"); } system("pause"); return 0; }
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。