c语言三子棋小游戏,经过二维数组构建棋盘.利用七个个函数数组
void Init();\\构建棋盘函数
void meau();\\游戏菜单char Iswin();\\判断输赢测试
int Isfull();\\判断棋盘是否下满spa
来实现逻辑.code
头文件 game.h游戏
#ifndef _GAME_H__ #define _GAME_H_ #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<time.h> #define LOW 3 #define ROW 3 void Init(); void meau(); void display(); void player(); void computer(); char Iswin(); int Isfull(); #endif _GAME_H_棋盘成一个二维数组,可经过LOW,ROW修改棋盘大小.对函数进行声明.
源文件 text.cit
#include "game1.h" void meau() { printf("***************************\n"); printf("****1.play 2.exit****\n"); printf("***************************\n"); } int text(char arr[ROW][LOW]) { char ret = '0'; Init(arr); do { display(arr); player(arr); display(arr); Iswin(arr); Isfull(arr); if (Iswin(arr) != ' ') { ret = Iswin(arr); break; } computer(arr); } while (ret != ' '); display(arr); if (ret == 'X') { printf("玩家赢\n"); } else if (ret == '@') { printf("电脑赢\n"); } if (Iswin(arr) == 'F') { printf("平局\n"); } } int main() { char arr[ROW][LOW] = { 0 }; meau(); printf("请选择:>"); int a = 0; char b = '0'; while (1) { scanf("%d", &a); switch (a) { case 1:text(arr); break; case 2: printf("游戏结束"); return 0; default: printf("请从新选择"); break; } } }主函数,函数测试部分.
源文件 game.cio
#include"game1.h" void Init(char arr[ROW][LOW]) { int i = 0; int j = 0; for (i = 0; i < ROW; i++) { for (j = 0; j < LOW; j++) { arr[i][j] = ' '; } } } void display(char arr[ROW][LOW]) { int i = 0; for (i = 0; i < ROW; i++) { printf("%c |%c |%c \n",arr[0][i],arr[1][i],arr[2][i]); if (i < 2) { printf("--|--|--"); } printf("\n"); } } void player(char arr[ROW][LOW]) { int x = 0; int y = 0; while (1) { printf("请输入坐标>"); scanf("%d%d", &x, &y); x--; y--; if (arr[y][x] == ' ') { arr[y][x] = 'X'; break; } else { printf("输入坐标无效"); continue; } } } void computer(char arr[ROW][LOW]) { int x = 0; int y = 0;
int rand();
int srand();
srand((unsigned)time(NULL)); while (1) { x = rand() % 3; y = rand() % 3; if (arr[y][x]== ' ') { arr[y][x] = '@'; break; } else if (arr[y][x]=='X') continue; } } int Isfull(char arr[ROW][LOW]) { int i = 0; int j = 0; for (i = 0; i < ROW; i++) { for (j = 0; j < LOW; j++) { if (arr[i][j] == ' ') return 0; } } return 1; } char Iswin(char arr[ROW][LOW]) { int ret = 0; int i = 0; for (i = 0; i < ROW; i++) { if ((arr[i][0] == arr[i][1]) && (arr[i][2] == arr[i][1])) { return arr[i][0]; } } for (i = 0; i < LOW; i++) { if ((arr[0][i] == arr[1][i]) && (arr[2][i] == arr[1][i])) { return arr[0][i]; } } if ((arr[0][0] == arr[1][1]) && (arr[1][1] == arr[2][2])) { return arr[0][0]; } if ((arr[0][2] == arr[1][1]) && (arr[1][1] == arr[2][0])) { return arr[2][0]; } ret = Isfull(arr); if (ret == 1) { return 'F'; } return ' '; }函数逻辑的实现.
结束还应对如下几点进行测试:class
玩家是否可以取得胜利im
电脑是否可以取得胜利
是否可以产平生局