一、首先說一下具體思路:
我們首先要想到的是三子棋的棋盤是乙個3*3的正方形棋盤,那麼這個棋盤我們可以用乙個二維陣列來實現。接下來就要想到具體要怎麼玩兒,首先讓電腦下乙個棋子走一步,然後玩家再下乙個棋子走一步。電腦下棋我們要產生一些隨機數,玩家下棋需要輸入具體的座標。最後就是判斷輸贏了:我們知道,三行三列還有兩斜如果都是電腦或者玩家的棋子,那麼對應的電腦或玩家獲勝。如果棋盤全部被佔滿,還沒有人獲勝,那麼就是平局。大概的思路就是這樣。
二、再說下具體的設計過程:
1.首先我們要定義並初始化我們的三子棋棋盤:定義乙個三行三列的二維陣列,並將其每個元素都初始化為空格。
2.接著需要列印顯示我們的棋盤。
3.然後就要實現電腦下棋的函式了:電腦下棋,需要產生一些隨機數,這些隨機數需要用到srand()函式和rand()函式。接著放棋子,放棋子也有條件,即只有當將要放的位置是空格時,才能放入棋子。
4.然後就是玩家下棋的函式了:玩家下棋具體實現方法是要輸入乙個(x,y)座標,確定要放棋子的位置。玩家放棋子也有條件,即1必須得在這個3*3棋盤內部,2只有當將要放的位置是空格時才能放入棋子。
5.最後一步是判斷輸贏。三行三列兩斜三行三列還有兩斜如果都是電腦或者玩家的棋子,那麼對應的電腦或玩家獲勝。如果棋盤全部被佔滿,還沒有人獲勝,那麼就是平局。我們規定如果電腦贏返回字元x,如果玩家贏返回字元o,如果是平局,就返回字元q。
三、我們需要建立乙個標頭檔案來定義具體實現遊戲需要的函式,即三子棋.h。需要乙個實現遊戲的原始檔,即三子棋.c。需要乙個用於測試的原始檔,即main.c。
四、最後,將具體實現**奉上。
三子棋.h 標頭檔案 用於定義各個函式
#ifndef __sanziqi__
#define __sanziqi__
#define row 3
#define col 3
//初始化棋盤
void initboard(char arr[row][col], int row, int col);
//列印棋盤
void printboard(char arr[row][col], int row, int col);
//電腦下棋
void computermove(char arr[row][col], int row, int col);
//人下棋
void playermove(char arr[row][col], int row, int col);
//判斷輸贏
char iswin(char arr[row][col], int row, int col);
#endif
三子棋.c 用於實現各個函式
#include"三子棋.h"
//初始化棋盤
void initboard(char arr[row][col], int row, int col)
}}//列印棋盤
void printboard(char arr[row][col], int row, int col)
printf("\n-------------\n");
}}//電腦下棋 首先產生隨機數種子 其次放入棋子,放入棋子時要判斷放入的位置是否為空格,如果是則放入
void computermove(char arr[row][col], int row, int col)
} while (1);
}//人下棋 首先要判斷放入棋子的位置是否在棋盤(3*3)內部,其次還要判斷將要放入棋子的位置是否為空格,如果是則放入
void playermove(char arr[row][col], int row, int col)
else
}else
} while (1);
}//判斷棋盤是否已滿函式 因為要宣告在函式內部,所以用static關鍵字修飾
static
int isfull(char arr[row][col], int row, int col)}}
return
1;//迴圈完了還沒有找到有空格的位置,則棋盤已滿,返回1
}//判斷輸贏 3行3列2斜,玩家贏或電腦贏。如果棋盤滿了還沒有一方贏,則為平局。
char iswin(char arr[row][col], int row, int col)
}//三列
for (i = 0; i < col; i++)
}//2斜
if ((arr[0][0] == arr[1][1]) && (arr[1][1] == arr[2][2]) && (arr[1][1] == 'x'))
if ((arr[0][2] == arr[1][1]) && (arr[1][1] == arr[2][0]) && (arr[1][1] == 'x'))
//判斷玩家贏
//三行
for (i = 0; i < row; i++)
}//三列
for (i = 0; i < col; i++)
}//2斜
if ((arr[0][0] == arr[1][1]) && (arr[1][1] == arr[2][2]) && (arr[1][1] == 'o'))
if ((arr[0][2] == arr[1][1]) && (arr[1][1] == arr[2][0]) && (arr[1][1] == 'o'))
//判斷棋盤是否已滿
if (isfull(arr,row,col))
return
' ';//如果以上情況全部沒有滿足,則返回空格
}
main.c 用於測試
#define _crt_secure_no_warnings 1
#include
#include
#include
#include"三子棋.h"
//選單函式
void menu()
//玩遊戲函式
void game(void)
playermove(arr, row, col);//玩家走一步
printboard(arr, row, col);//列印棋盤
ret = iswin(arr, row, col);//判斷輸贏
if (ret != ' ')//如果ret不是空格,則說明是其他情況(電腦贏或玩家贏或平局),此時遊戲已結束,所以break跳出
} while ( 1 );
if (ret == 'x') //若返回字元x 則電腦贏
else
if (ret == 'o')//若列印字元o 則玩家贏
else
if (ret == 'q')//若列印字元q 則為平局
}int main()
} while (choose);
system("pause");
return
0;}
小遊戲 三子棋(C語言實現)
在電腦中存放時間有點久了,先把 寫一下,後邊有空加 與注釋。實現 game.h檔案 define crt secure no warnings 1 ifndef game h define game h include include include includeenum option defin...
C語言實現三子棋小遊戲
三子棋,和五子棋的原理是一樣的,當玩家或者是電腦的某一方先將各自的三個棋子下成一條線時誰就贏,遊戲就會結束。遊戲會有三種結果 電腦贏 玩家贏 平局。在 中也需要這三種情況的判定。要寫程式,就要清楚 需要幾個模組,可以分為以下幾個 棋盤初始化 電腦 玩家分別走棋 輸贏的判定 先對頭檔案定義 頭檔名 s...
C語言實現三子棋小遊戲
大致思路 三子棋其實運用到的是簡單的3 3的二維陣列,由玩家和電腦對局,這裡預設玩家的棋子是 x 電腦的棋子是 0 當然你也可以用其他的字元。當棋盤上一行或者一列或者交叉被下滿相同的棋子,則一方獲勝。主要板塊 列印選單 列印棋盤 玩家下棋 判斷輸贏 電腦下棋 判斷輸贏 具體實現 1,列印選單 voi...