c言語プログラミング三子棋(井字棋)

4844 ワード

ヘッダファイル(test.h):
#ifndef _THREE_CHESS_H_//        ,  [    #pragma once]
#define _THREE_CHESS_H_

#include 
#include 
#include 
#pragma warning(disable:4996)//VS   scanf        

#define ROW 3
#define COL 3//   

void ShowUI();
void Game();
void ComputerMove(char board[][COL], int row, int col);
void ShowBoard(char board[][COL], int row, int col);
char Judge(char board[][COL], int row, int col);
void PlayerMove(char board[][COL], int row, int col);//    

#endif

ソースファイル:(test.c)
#include "three_chess.h"

void ShowUI()//  
{
    printf("##################################
"); printf("## 1. Play 2. Exit ##
"); printf("##################################
"); printf("Please Select:> "); } void ComputerMove(char board[][COL], int row, int col)// { while (1){ int x = rand() % row; int y = rand() % col;// , 3 if (board[x][y] == ' '){ board[x][y] = 'O'; break; } } } void PlayerMove(char board[][COL], int row, int col)// { int x, y; while (1){ printf("Please Enter Your Pos(x,y):> "); scanf("%d %d", &x, &y);// if (x >= 1 && x <= row && y >= 1 && y <= col){ if (board[x-1][y-1] == ' '){// board[x - 1][y - 1] = 'X'; break; } else{ printf("Enter Pos Is Not OK, Try Again!
"); } } else{ printf("Enter Error, Try Again!
"); } } } char Judge(char board[][COL], int row, int col)// { int i = 0; int j = 0; // for (; i < row; i++){ if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && \ board[i][0] != ' '){// return board[i][0]; ‘X’‘O’ } } for (i = 0; i < col; i++){ 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[1][1] != ' '){// return board[1][1]; } if (board[0][2] == board[1][1] && board[1][1] == board[2][0] &&\ board[1][1] != ' '){// return board[1][1]; } // for (i = 0; i < row; i++){ for (j = 0; j < col; j++){ if (board[i][j] == ' '){ return 'N'; } } } return 'E'; } void ShowBoard(char board[][COL], int row, int col)// { printf(" 1 2 3
"); printf("-----------------
"); int i = 0; int j = 0; for (; i < row; i++){ printf("%d |", i + 1); for (j = 0; j < col; j++){ printf(" %c |", board[i][j]); } printf("
-----------------
"); } printf("
"); } void Game()// { char board[ROW][COL]; memset(board, ' ', sizeof(board)); char result = 'N'; srand((unsigned long)time(NULL)); while (1){ system("cls");// ComputerMove(board, ROW, COL); ShowBoard(board, ROW, COL); result = Judge(board, ROW, COL); if (result != 'N'){//'X' 'O' 'E' 'N' break; } PlayerMove(board, ROW, COL); ShowBoard(board, ROW, COL); result = Judge(board, ROW, COL); if (result != 'N'){//'X' 'O' 'E' 'N' break; } } switch (result){ case 'X': printf("You Win! :)
"); break; case 'O': printf("You Lose, Computer Win! :(
"); break; case 'E': printf(" , !
"); break; default: break; } }

実行ファイル:(main.c)
#include "three_chess.h"

int main()
{
    int select = 0;
    int quit = 0;
    while (!quit){
        ShowUI();
        scanf("%d", &select);
        switch (select){
        case 1:
            Game();
            break;
        case 2:
            quit = 1;
            printf("Bye,Bye!
"); break; default: printf("Please Enter Again!
"); break; } } return 0; }