C言語は簡単な操作台の三子将棋のゲームを実現します。
C言語で簡単な操作台三子将棋ゲームを実現します。
まず、ゲームの基本的な流れを確定します。
1、ボードを作成して初期化します。ボードを二次元配列と見なす)
2、ボードを印刷して表示します。
3、プレイヤーは落子します。
4、勝負関係を判定する。プレイヤーが勝てばゲームを終了します。)
5、コンピュータの落下(ランダム位置の落下)。
6、勝負関係を判定する(パソコンが勝てば、ゲームから退出する。そうでなければ、ステップ2に戻って実行を続けます。)
第一歩は、ここではmenu()関数を構成することにより、簡単なインタラクティブメニューを作成して、プレイヤーとインタラクションして、ゲームを開始するかどうかを判断します。
1.イニシャルinit()関数を構築します。3*3の二次元配列を初期化し、それを碁盤とし、配列要素を全部0に初期化します。
勝ちました
失敗しました
ここに駒があります
もっと面白い経典ミニゲームはテーマを実現して、みんなに共有します。
C++クラシックミニゲームまとめ
pythonクラシックミニゲームまとめ
pythonテトリスゲーム集合
JavaScript経典ゲームは遊んで止まらないです。
java経典の小さいゲームのまとめ
javascript経典ミニゲームのまとめ
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
まず、ゲームの基本的な流れを確定します。
1、ボードを作成して初期化します。ボードを二次元配列と見なす)
2、ボードを印刷して表示します。
3、プレイヤーは落子します。
4、勝負関係を判定する。プレイヤーが勝てばゲームを終了します。)
5、コンピュータの落下(ランダム位置の落下)。
6、勝負関係を判定する(パソコンが勝てば、ゲームから退出する。そうでなければ、ステップ2に戻って実行を続けます。)
第一歩は、ここではmenu()関数を構成することにより、簡単なインタラクティブメニューを作成して、プレイヤーとインタラクションして、ゲームを開始するかどうかを判断します。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int menu() {
printf("====================
");
printf("1.
");
printf("0.
");
printf("====================
");
printf(" : ");
int choice = 0;
scanf("%d", &choice);
return choice;
}
int main() {
while (1) {
int choice = menu();
if (choice == 1) {
//game();// game 。
}
else if (choice == 0) {
printf("goodbye!
");
break;
}
}
system("pause");
return 0;
}
第二ステップは、第一ステップで呼び出したゲーム関数を構成する。game()関数はコア機能関数であり、その主な任務は基本プロセスを完成することである。1.イニシャルinit()関数を構築します。3*3の二次元配列を初期化し、それを碁盤とし、配列要素を全部0に初期化します。
void init(char chessBoard[MAX_ROW][MAX_COL]) {
// = “ ”。
for (int row = 0; row < MAX_ROW; row++) {
for (int col = 0; col < MAX_COL; col++) {
chessBoard[row][col] = ' ';
}
}
}
2.ボード印刷print Board()関数を構築します。forループで3*3のボードをプリントアウトします。
void printChessBoard(char chessBoard[MAX_ROW][MAX_COL]) {
// 。
printf("+---+---+---+
");
for (int row = 0; row < MAX_ROW; row++) {
printf("| %c | %c | %c |
", chessBoard[row][0],
chessBoard[row][1], chessBoard[row][2]);
printf("+---+---+---+
");
}
}
3.プレイヤー落子player Move()関数を構築し、プレイヤーは行列座標を入力することで落子します。この過程では、プレイヤーが入力した行列の座標がボードの正しい位置にあるかどうかを判断します。2.プレイヤーが入力した行の座標位置に駒があるかどうか。
void playerMove(char chessBoard[MAX_ROW][MAX_COL]) {
// . 。
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(" [0, 2]
");
continue;
}
// 。
if (chessBoard[row][col] != ' ') {
printf(" !
");
continue;
}
// 。 “X” 。
chessBoard[row][col] = 'x';
break;
}
}
4.コンピュータの落下を制御するために、computterMove()関数を構築する。コンピュータで一連の乱数を生成して、碁盤の座標範囲内に置くようにします。
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;
}
}
この関数モジュールでは、コンピュータ落下子のランダム位置の生成は、ランド()関数によって制御されており、ランダムシードを設定することによって「疑似ランダム」の出現を回避する必要があることに注意が必要である。
srand((unsigned int)time(0));// 。
5.isWin()関数を構築して、勝利するかどうかを判断します。この関数の戻り結果を約束するためのものです。'x'はプレイヤーの勝利を表します。o'はコンピュータが勝ったという意味です。勝負がつかないことを表す。qは引き分けを表します。
char isWin(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[2][0] != ' '
&& chessBoard[2][0] == chessBoard[1][1]
&& chessBoard[2][0] == chessBoard[0][2]) {
return chessBoard[2][0];
}
// 。 。
// isFull 。
if (isFull(chessBoard)) {
return 'q';
}
return ' ';
}
6.isFull()関数を作成して、ボードに空きがあるかどうかを判断して、引き分けと判断します。
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;
}
最後に、上記のいくつかの機能関数を組み合わせて呼び出すことによって、最終的なゲーム関数の全体的なアーキテクチャを得ることができます。
void game() {
// 1.
char chessBoard[MAX_ROW][MAX_COL] = { 0 };
init(chessBoard);//
char winner = ' ';
while (1) {
// 2.
printChessBoard(chessBoard);
// 3. ( )
playerMove(chessBoard);
// 4.
winner = isWin(chessBoard);
if (winner != ' ') {
break;
}
// 5. ( )
computerMove(chessBoard);
// 6.
winner = isWin(chessBoard);
if (winner != ' ') {
break;
}
}
printChessBoard(chessBoard);
if (winner == 'x') {
printf(" , !
");
}
else if (winner == 'o') {
printf(" , ! !
");
}
else {
printf(" , !
");
}
}
運行スクリーンショットは以下の通りです。勝ちました
失敗しました
ここに駒があります
もっと面白い経典ミニゲームはテーマを実現して、みんなに共有します。
C++クラシックミニゲームまとめ
pythonクラシックミニゲームまとめ
pythonテトリスゲーム集合
JavaScript経典ゲームは遊んで止まらないです。
java経典の小さいゲームのまとめ
javascript経典ミニゲームのまとめ
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。