C言語の簡単な3-ゲームゲーム

ここでは3つの文書、作成した
.Cすなわちgame.hテスト.Cゲームを
、次の特定のコードである
game.h

#define _CRT_SECURE_NO_WARNINGS

#define行3
の#defineランク3

書式#include <stdio.hに>
する#include <stdlib.h>に含ま
する#include <TIME.H>

空meun();
無効プレイ(char型の編曲は、int型のB、INT);
ボイド入力(チャーARRは、int型のB、INT)。
空play_game(char型の編曲は、int型のB、INT);
int型の勝利(CHAR編曲、int型A、INT B)。

test.cの

#include「game.h」

ゲームボイド()
{
int型RET = 0;
int型retu = 0;
int型K = 0;
CHAR ARR [行] [ランク] = {0};
DO
{
MeUn(); //プリントメニュー
のscanf( "%dの"、 K&);
スイッチ(K)
{
ケース1:
INPUT(ARR、ライン、ランク); //配列の初期化
の遊びを(編曲、ライン、ランク) ; // 設定されたテーブルが
行う
{
play_moveを(ARR、ライン、ランク); //プレイヤーは取る
;(ARR、ライン、ランク)を再生
RET =勝利(ARR、ライン、ランク);
IF(RET == 1)
{
のprintf( "プレイヤーの勝利\ N-");
BREAK;
}
IF(フル(ARR、ライン、ランク))
{
のprintf() "\ N-を描く";
BREAK;
}
のprintf( "\ N-");
computer_move(ARR、ライン、ランク); //行くコンピュータ
(ARR、ライン、ランク)を再生;
RET =勝利(ARR、ライン、ランク);
IF(RET == 1)
{
のprintf( "PCが\ N-勝つ");
BREAK;
}
}しばらく(2);
ケース0:
printf( "N- \ゲームオーバー");
BREAK;
デフォルト:
のprintf( "入力エラーが、N- \再入力してください");
}
}
しばらく(K = 0!);
}

メインINT()
{
にsrand((unsigned int型)時間(NULL))。
ゲーム();
システム(「一時停止」)。
0を返します。
}

game.c
の#include「game.h」

空meun()//印刷メニュー
{
のprintf( " \ N-");
のprintf( "
入力1:再生\ N-を");
のprintf( "
0を入力します。quit \ N-");
のprintf( "
**** \ N- 「);
}
ボイドINPUT(チャーARR [行] [ランク]、int型A、int型B)
{
int型I = 0;
INT J = 0;
のための(I = 0; Iは++)//配列を初期化する;私は<
{
(J = 0; J <B; J ++)用
{
ARR [I] [J] = '';
}
}
}
ボイドプレイ(チャーARR [行] [ランク]、INT A、INT B)//印刷フォーム
{
0 = I値int、
int型J = 0;
のための(I = 0;私は<; Iは++)
{
ため(J = 0; J <B - 1; J ++)
{
printf( "%cの|"、ARR [I] [J]);
}
のprintf( "%のC『 ARR [I] [2]);
のprintf(』の\ n");
(私は、< - 1)場合
、{
ため(J = 0; J <B-1; J ++)
{
のprintf( " - |");
}
のprintf( " - ")。
printf( "\ n")を。
}
}
}
ボイドplay_move(int型B INTチャーARR [行] [ランク])//玩家走
{
int型のx = 0。
int型、Y = 0。
(1)しながら、
{
のprintf(「请输入你的的坐标\ n」);
scanf関数( "%のD"、&x)は、
scanf関数( "%のD"、&Y)。
IF(X - 1> = 0 && X - 1 <= 2 && Y - 1> = 0 && Y - 1 <= 2)
{
IF(ARR [X-1] [Y-1] == ''
) {
ARR [X-1] [Y-1] = '*'。
ブレーク;
}
他IF(ARRの[Y-1] = ''![1-X])
{
のprintf( "これは既存の要素の座標、再入力してください\ N-");
}
}

{
のprintf(「入力エラーは、再入力してください\ N- ");
}
}
}
ボイドcomputer_move(ARR CHAR [行] [ランク]、int型、int型B)// PCの外出
{
ながら(1)。
{
int型X = RAND()%線と、
INT Y = RAND( )%ランク;
IF((X> = 0 && X <= 2 && Y> = 0 && Y <= 2)&&(ARR [X] [Y] == ''))
{
ARR [X] [Y] = '#';
BREAK;
}
}
}
int型勝利(ARR CHAR [行] [ランク]、int型、int型B)を決定する勝者と敗者//
{
(ARR [0] [0] == ARR [0] [IF 1。 !] && ARR [0] [1] == ARR [0] [2] && ARR [0] [0] = '')。
復帰1。
それ以外の場合(ARR [1] [0] == ARR [1] [1] && ARR [1] [1] == ARR [1] [2] && ARR [1] [0]!= '「)
のリターン1;
それ以外の場合(ARR [2] [0] == ARR [2] [1] && ARR [2] [1] == ARR [2] [2] && ARR [2] [0]!= '「)
のリターン1;
それ以外の場合(ARR [0] [0] == ARR [1] [0] && ARR [1] [0] == ARR [2] [0] && ARR [0] [0]!= '「)
のリターン1;
それ以外の場合(ARR [0] [1] == ARR [1] [1] && ARR [1] [1] == ARR [2] [1] && ARR [0] [1]!= '「)
のリターン1;
それ以外の場合(ARR [0] [2] == ARR [1] [2] && ARR [1] [2] == ARR [2] [2] && ARR [1] [2]!= '「)
のリターン1;
それ以外の場合(ARR [0] [0] == ARR [1] [1] && ARR [1] [1] == ARR [2] [2] && ARR [0] [0]!= '「)
のリターン1;
他の場合(ARR [2] [0] == ARR [1] [1] &&
ARR [1] [1] == ARR [0] [2] && ARR [2] [0] = '「)! リターン1。
それ以外
の戻り0;
}
(int型B INTチャーARR [行] [ランク])完全int型
{
; I = 0 int型
int型J = 0;
用(i = 0; iは<; iは++)
{
ため(J = 0; J <B; J ++)
{
IF(ARR [I] [J] == '「)
{
0を返します。
}
}
}
1を返します。
}

おすすめ

転載: blog.csdn.net/belongHWL/article/details/90347281