C言語コードは三子将棋のミニゲームを実現します。
本論文の例では、C言語での三目並べゲームの具体的なコードを共有しています。参考にしてください。具体的な内容は以下の通りです。
設計の考え方
三目並べのC言語設計の考え方:
1.インタフェースを設計する:プレーヤーが実行したらすぐに一つのインターフェースが見えますが、この時インタフェースはプレイヤーに選択させる語句が必要です。つまりゲームをするか、または操作を終了するかを選択できます。インターフェイスデザインはswich文の実現が必要で、ゲームの設計オプションをゼロにします。つまり、ゲームを終了する時にwhileを直接終了します。
2.ゲームの実現:ゲームを選択すると、ゲームを起動する関数を呼び出します。ゲームには、あるべき内容があります。
(1)ゲーム内の碁盤のデザイン:三目並べは三行三列の一つの碁盤で、関数によって印刷されます。
(2)プレイヤーの移動:プレイヤーはそれぞれの座標を入力して、プレイヤーに属するタグをボードに印刷し、コンピュータは同じ位置で印刷できません。
(3)コンピュータの移動:コンピュータは直ちにコントロールするべきで、つまりランド関数を呼び出して、timeと時間を使ってランダムにします。
(4)勝ち負けの処理:ここでは勝ち負けを判定する条件を提示する必要があります。つまり、任意の行または一列または対角線が同じであれば勝ちとなります。マークの記号でプレイヤーが勝つかそれともコンピュータが勝つかを判断します。ボードがいっぱいになっていても勝ち負けが判断されないなら、引き分けとなります。
(5)関数の呼び出し処理:関数呼び出し時に、一歩進むごとに、対応するボードを印刷してプレイヤーに見せ、必要な関数のヘッダファイルと必要な定義の行列定数を頭ファイルに直接定義し、関数宣言を中に入れ、コードの中でCOLとROWだけで表現すればいいです。ボードを変更する必要がある時、ヘッダファイルのdefineで定義されているCOLおよびROWを修正するだけでよい。
コードの実装:
まずゲームのインターフェースコードです。直接printfで印刷すればいいです。
もっと面白い経典ミニゲームはテーマを実現して、みんなに共有します。
C++クラシックミニゲームまとめ
pythonクラシックミニゲームまとめ
pythonテトリスゲーム集合
JavaScript経典ゲームは遊んで止まらないです。
java経典の小さいゲームのまとめ
javascript経典ミニゲームのまとめ
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
設計の考え方
三目並べのC言語設計の考え方:
1.インタフェースを設計する:プレーヤーが実行したらすぐに一つのインターフェースが見えますが、この時インタフェースはプレイヤーに選択させる語句が必要です。つまりゲームをするか、または操作を終了するかを選択できます。インターフェイスデザインはswich文の実現が必要で、ゲームの設計オプションをゼロにします。つまり、ゲームを終了する時にwhileを直接終了します。
2.ゲームの実現:ゲームを選択すると、ゲームを起動する関数を呼び出します。ゲームには、あるべき内容があります。
(1)ゲーム内の碁盤のデザイン:三目並べは三行三列の一つの碁盤で、関数によって印刷されます。
(2)プレイヤーの移動:プレイヤーはそれぞれの座標を入力して、プレイヤーに属するタグをボードに印刷し、コンピュータは同じ位置で印刷できません。
(3)コンピュータの移動:コンピュータは直ちにコントロールするべきで、つまりランド関数を呼び出して、timeと時間を使ってランダムにします。
(4)勝ち負けの処理:ここでは勝ち負けを判定する条件を提示する必要があります。つまり、任意の行または一列または対角線が同じであれば勝ちとなります。マークの記号でプレイヤーが勝つかそれともコンピュータが勝つかを判断します。ボードがいっぱいになっていても勝ち負けが判断されないなら、引き分けとなります。
(5)関数の呼び出し処理:関数呼び出し時に、一歩進むごとに、対応するボードを印刷してプレイヤーに見せ、必要な関数のヘッダファイルと必要な定義の行列定数を頭ファイルに直接定義し、関数宣言を中に入れ、コードの中でCOLとROWだけで表現すればいいです。ボードを変更する必要がある時、ヘッダファイルのdefineで定義されているCOLおよびROWを修正するだけでよい。
コードの実装:
まずゲームのインターフェースコードです。直接printfで印刷すればいいです。
void meun()
{
printf("****************
");
printf("*****0.Exit*****
");
printf("*****1.Play*****
");
printf("****************
");
}
そして三目並べのボードを作ります。
void ShowBoard(char board[][COL], int row, int col)
{
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
printf(" %c ",board[i][j]);
if (j < col-1)
{
printf("|");
}
}
printf("
");
if (i < row - 1)
{
for (int j = 0; j < col; j++)
{
printf("---");
if (j < col - 1)
{
printf("|");
}
}
printf("
");
}
}
}
プレイヤーの移動が実現します。特に、ユーザーが入力した座標と配列との対応付けの下付き関係を実現します。プレイヤーが入力した座標に対応する配列下付きは1つを減らすべきです。
void PlayerMove(char board[][COL], int row, int col)
{
int x = 0;
int y = 0;
while (1)
{
printf(" :
");
scanf("%d%d",&x,&y);
if (x >= 1 && x <= 3 && y >= 1 && y <= 3)
{
if (board[x - 1][y - 1] == ' ')
{
board[x - 1][y - 1] = 'X';
break;
}
}
else
{
printf(" ,
");
}
}
}
コンピュータ将棋の機能を実現します。
void ComputerMove(char board[][COL], int row, int col)
{
while (1)
{
srand((unsigned)time(NULL));
int x = rand() % ROW;
int y = rand() % COL;
if (board[x][y] == ' ')
{
board[x][y] = 'O';
break;
}
}
}
勝ち負けの処理(コードと考え方が一致しています。IsWin関数(勝負判定)、IsFull(引き分け判定)があります。
char IsWin(char board[][COL], int row, int col)
{
for (int i = 0; i < row; i++)
{
if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][0]!=' ')
{
return board[i][0];
}
if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[0][i] != ' ')
{
return board[0][i];
}
if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[0][0] != ' ')
{
return board[0][0];
}
if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' ')
{
return board[0][2];
}
if (IsFull(board, row, col) == 1)
{
return 'Q';
}
}
return ' ';
}
static int IsFull(char board[][COL], int row, int col)
{
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
if (board[i][j] == ' ')
{
return 0;
}
}
}
return 1;
}
最後に、関数呼び出しの問題です。デザインされたコード機能を呼び出して、ゲーム機能を実現します。
void game()
{
char board[ROW][COL] = {0};
InitBoard(board, ROW, COL);
ShowBoard(board, ROW, COL);
int ret = 0;
while (1)
{
PlayerMove(board, ROW, COL);
ComputerMove(board, ROW, COL);
ShowBoard(board, ROW, COL);
ret = IsWin(board, ROW, COL);
if (ret != ' ')
{
break;
}
}
if (ret == 'X')
{
printf("
");
}
if (ret == 'O')
{
printf("
");
}
if (ret == 'Q')
{
printf("
");
}
}
メイン関数を入り口として、プレイヤーが自由にゲームに入るか、終了するかを選択します。
int main()
{
int input = 0;
do
{
meun();
printf(" :");
scanf("%d",&input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("
");
break;
default:
printf(" ,
");
break;
}
} while (input);
return 0;
}
いくつかの呼び出しが必要なライブラリ関数および定義は、関数宣言をカスタムヘッダファイルに置いて呼び出します。
#ifndef _GAME_H_
#define _GAME_H_
#include<stdio.h>
#include<stdlib.h>
#pragma once
#define ROW 3
#define COL 3
void InitBoard(char board[][COL],int row,int cow);
void ShowBoard(char board[][COL], int row, int col);
void PlayerMove(char board[][COL], int row, int col);
void ComputerMove(char board[][COL], int row, int col);
char IsWin(char board[][COL], int row, int col);
#endif
実行結果もっと面白い経典ミニゲームはテーマを実現して、みんなに共有します。
C++クラシックミニゲームまとめ
pythonクラシックミニゲームまとめ
pythonテトリスゲーム集合
JavaScript経典ゲームは遊んで止まらないです。
java経典の小さいゲームのまとめ
javascript経典ミニゲームのまとめ
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。