C语言实现三子棋
在学习了,一段时间的C语言后,这次程序可能更让我看到了一个学习的结果
//three_chess
//three_chess.h//创立头文件,用来存储函数声声明#ifndef _THREE_CHESS_H_#define _THREE_CHESS_H_#include <stdio.h>#include <windows.h>#include <time.h>#pragma warning(disable:4996)#define ROW 3#define COL 3void 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//three_chess.c//用来实现函数功能的源代码#define _CRT_SECURE_NO_WARNINGS 1#include "three_chess.h"void ShowUI(){ printf("##################################\n"); printf("## 1. Play 2. Exit ##\n"); printf("##################################\n"); printf("Please Select:> ");}void ComputerMove(char board[][COL], int row, int col){ while (1){ int x = rand() % row; int y = rand() % col; if (board[x][y] == ' '){ board[x][y] = '0'; 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!\n"); } } else{ printf("Enter Error, Try Again!\n"); } }}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]; } } 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\n"); printf("----------------\n"); 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("\n----------------\n"); } printf("%\n");}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! :)\n"); break; case 'O': printf("You Lose, Computer Win!\n :("); break; case 'E': printf("平局,恭喜!\n"); break; default: break; }}//main.c//主函数用来通过调用函数来实现使用功能#define _CRT_SECURE_NO_WARNINGS 1#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!\n"); break; default: printf("Please Enter Again!\n"); break; } } system("pause"); return 0;}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。