欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言實現(xiàn)簡易三子棋游戲

 更新時間:2021年04月29日 08:26:20   作者:研冰堅  
這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡易三子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

利用數(shù)組來創(chuàng)建一個三子棋小游戲的步驟如下:

1、建立一個可以容納九個元素的3*3棋盤。并初始化,使所有位置都為三。
2、打印棋盤,使其盡可能美觀。
3、玩家通過輸入坐標(row,col)來落子。
4、判斷輸贏(是否有三個棋子相連)。
5、電腦隨機落子(利用時間戳,實現(xiàn)真隨機)。
6、判斷輸贏。

實現(xiàn)代碼如下:

#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("+--+--+--+\n");
 for (int row = 0; row < MAX_ROW; row++){
  printf("|");
  for (int col = 0; col < MAX_COL; col++){
   printf("%c |", chess[row][col]);
  }
  printf("\n+--+--+--+\n");
 }
}
//玩家落子
void playerMove(char chessBoard[MAX_ROW][MAX_COL]){
 while (1){
  printf("請落子(row col)\n");
  int row = 0;
  int col = 0;
  scanf("%d %d", &row  &col);//錄入玩家落子信息
  if (row >= MAX_ROW || row < 0 || col < 0 || col >= MAX_COL){
   printf("落子錯誤,請重新落子:\n");
   continue;
  }//判斷玩家落子的合法性。
  else if (chessBoard[row][col] != ' '){
   printf("您輸入的位置已經(jīng)有棋子,請重新輸入:\n");
   continue;
  }//判斷該位置是否已有棋子。
  else{
   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] = '0';
  break;
 }
}
//判斷棋盤是否已滿,如果滿輸出0,沒滿輸出1.
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 1;
   }
  }
 }
 return 0;
}
//判斷誰獲勝,可以約定如果返回‘x'玩家獲勝
//如果返回‘0'電腦獲勝
//返回‘ '則表示還未結(jié)束
//返回 's'表示和棋
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 's';
 }//判斷是否和棋
 return ' ';
}
//前面函數(shù)的調(diào)用
int main(){
 char chessBoard[MAX_ROW][MAX_COL];
 init(chessBoard);
 char winner = ' ';
 while (1){
  print(chessBoard);//打印棋盤
  playerMove(chessBoard);//玩家落子
  winner = isGameover(chessBoard);
  if (winner != ' '){
   //游戲結(jié)束"
   break;
  }
  computerMove(chessBoard);//電腦落子
  winner = isGameover(chessBoard);
  if (winner != ' '){
   //游戲結(jié)束
   break;
  }
 }
//輸出最終結(jié)果。
 if (winner = 'x'){
  printf("恭喜你,你贏了!\n");
 }
 else if(winner = '0'){
  printf("蠢,你輸了!\n");
 }
 else{
  printf("和棋!\n");
 }
 return 0;
}

實現(xiàn)結(jié)果如下圖:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++實現(xiàn)圖書管理系統(tǒng)最新版

    C++實現(xiàn)圖書管理系統(tǒng)最新版

    這篇文章主要為大家詳細介紹了C++實現(xiàn)圖書管理系統(tǒng)最新版,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • c語言 跳臺階問題的解決方法

    c語言 跳臺階問題的解決方法

    本篇文章是對c語言中跳臺階問題的解決方法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • 通過實例詳解C語言函數(shù)返回值

    通過實例詳解C語言函數(shù)返回值

    函數(shù)的返回值是指函數(shù)被調(diào)用之后,執(zhí)行函數(shù)體中的程序段所取得的并返回給主調(diào)函數(shù)的值,下面這篇文章主要給大家介紹了關(guān)于C語言函數(shù)返回值的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • C++冒泡排序及其優(yōu)化算法

    C++冒泡排序及其優(yōu)化算法

    這篇文章主要為大家介紹了C++冒泡排序及其優(yōu)化算法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2021-11-11
  • C語言實現(xiàn)通訊錄小項目

    C語言實現(xiàn)通訊錄小項目

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)通訊錄小項目,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C++中如何修改const變量你知道嗎

    C++中如何修改const變量你知道嗎

    這篇文章主要為大家詳細介紹了C++修改const變量,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 深入解析C++程序中激發(fā)事件和COM中的事件處理

    深入解析C++程序中激發(fā)事件和COM中的事件處理

    這篇文章主要介紹了深入解析C++程序中激發(fā)事件和COM中的事件處理,是C++事件操作的基礎(chǔ),需要的朋友可以參考下
    2016-01-01
  • C++實現(xiàn)簡單掃雷小游戲

    C++實現(xiàn)簡單掃雷小游戲

    這篇文章主要為大家詳細介紹了C++實現(xiàn)簡單掃雷小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • 簡單了解C++語言中的二元運算符和賦值運算符

    簡單了解C++語言中的二元運算符和賦值運算符

    這篇文章主要介紹了C++語言中的二元運算符和賦值運算符,文中列出了可重載的運算符列表,需要的朋友可以參考下
    2016-01-01
  • C語言實現(xiàn)堆的簡單操作的示例代碼

    C語言實現(xiàn)堆的簡單操作的示例代碼

    堆(heap)是計算機科學(xué)中一類特殊的數(shù)據(jù)結(jié)構(gòu)的統(tǒng)稱。堆通常是一個可以被看做一棵樹的數(shù)組對象。本文介紹了C語言中堆的一些簡單操作,需要的可以參考一下
    2022-11-11

最新評論