三子棋小程序

来源:互联网 发布:java反射调用静态方法 编辑:程序博客网 时间:2024/06/06 15:49

#define _CRT_SECURE_NO_WARNINGS 1

#include"game.h";

 

void menu()

{

printf("*******************************\n");

printf("**1.play               0.exit**\n");

printf("*******************************\n");

printf("*********请进行选择************\n");

 

 

}

 

void Printfmenu(char arr[ROW][COL],int row,int col)

{

printf(" %c | %c | %c |\n", arr[0][0], arr[0][1], arr[0][2]);

printf("  \n");

printf(" %c | %c | %c |\n", arr[1][0], arr[1][1], arr[1][2]);

printf("  \n");

printf(" %c | %c | %c |\n", arr[2][0], arr[2][1], arr[2][2]);

printf("  \n");

 

}

void Inint(char arr[ROW][COL],int row,int col,int set)

{

memset(&arr[0][0], set, row*col*sizeof(char));

}

 

int main()

{

int n = 0;

int set = ' ';

char arr[ROW][COL];

do{

Inint(arr, ROW, COL, set);

menu();

scanf("%d", &n);

 

switch (n)

{

case 1:

game(arr,ROW,COL);

 

case 0:

break;

 

 

default:

printf("输入错误请重新输入\n");

}

menu();

scanf("%d", &n);

} while (n);

}

 

*********************************************************************************************game.c*****************************************************

#define _CRT_SECURE_NO_WARNINGS 1

#include"game.h"

 

 

 

void  game(char arr[ROW][COL],int row,int col)

{

int win = 6;

while (win)

{

 

Printfmenu(arr, ROW, COL);

Userplay(arr, ROW, COL);

Printfmenu(arr, ROW, COL);

win = Win(arr, ROW, COL);

if (win == 1)

{

 

printf("您赢了\n");

break;

}

if (win == 4)

{

 

printf("平局了\n");

break;

}

Computerplay(arr, ROW, COL);

Printfmenu(arr, ROW, COL);

win = Win(arr, ROW, COL);

if ((win == 1) || (win == 2) || (win == 3))

{

 

printf("您输了\n");

break;

}

if (win == 4)

{

 

printf("平局了\n");

break;

}

 

 

 

system("cls");

}

}

 

void  Userplay(char arr[ROW][COL],int row,int col)

{

int i = 1;

int x = 0;

int y = 0;

while (i)

{

printf("玩家走:");

printf("请输入下棋坐标\n");

scanf("%d %d", &x, &y);

 

if (x >= 1 && x <= ROW&&y >= 1 && y <= COL)

{

if (arr[x - 1][y - 1] !=' ')

{

 

printf("该位置已经被操作,不可重复操作\n");

i = 1;

}

else

{

arr[x - 1][y - 1] = 'X';

i = 0;

}

}

else

printf("坐标越界,不可操作\n");

}

 

}

 

 

 

 

void  Computerplay(char arr[ROW][COL],int row,int col)

{

int i = 1;

printf("电脑走\n");

srand((unsigned)time(NULL));

int x = 0;

int y = 0;

while (i)

{

 

x = rand() % 3;

y = rand() % 3;

if (arr[x ][y ] ==' ')

{

i = 0;

arr[x][y] = 'O';

}

}

 

}

int Win(char arr[ROW][COL],int row,int col)

{

int x = 0;

int y = 0;

int i = 0;

  //横着一样

 

for (x = 0; x <ROW; x++)

{

i = 0;

//if ((arr[x][0] == arr[x][1]) && (arr[x][1] == arr[x][2]) && (arr[x][1] !=' '))

for (y = 0; y < COL-1; y++)

{

if ((arr[x][y] ==arr[x][y + 1]) && (arr[x][y] !=' '))

i++;

}

if (i == COL - 1)

return 1;

}

//竖着一样

for (y = 0; y < COL; y++)

{

i = 0;

//if ((arr[0][x] == arr[1][x]) && (arr[1][x] == arr[2][x]) && (arr[1][x] != ' '))

for (x = 0; x < ROW-1; x++)

{

if ((arr[x][y] ==arr[x+1][y]) && (arr[x][y] !=' '))

i++;

}

if (i == ROW - 1)

return 1;

}

//对角线一样

i = 0;

for (x = 0,y=0; x < ROW-1; x++,y++)

{

if ((arr[x][y] ==arr[x + 1][y + 1]) && (arr[x][y] !=' '))

i++;

else

break;

}

if (i == ROW - 1)

return 1;

i = 0;

for (x = 0, y = COL-1; x < ROW - 1; x++, y--)

{

 

if ((arr[x][y] ==arr[x + 1][y - 1]) && (arr[x][y] !=' '))

i++;

else

break;

 

}

if (i == ROW - 1)

return 1;

/*if ((arr[0][0] == arr[1][1]) && (arr[1][1] == arr[2][2]) && (arr[1][1] != ' '))

return 1;

if ((arr[0][2] == arr[1][1]) && (arr[1][1] == arr[2][0]) && (arr[1][1] != ' '))

return 1;*/

//满了平局

for (x = 0; x < ROW; x++)

{

for (y = 0; y < COL; y++)

{

if (arr[x][y] !=' ')

i++;

}

}

if (i == row*col)

return 4;

else

return 5;

}

*********************************************************************************************game.h****************************************************

 

//用于存放三子棋程序所有的头文件 以及函数的声明等等

#ifndef _GAME_H_

#define _GAME_H_

 

 

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

#include<string.h>

 

 

#define ROW 3

#define COL 3

 

void  Userplay(char arr[ROW][COL],int row, int col);

void  Computerplay(char arr[ROW][COL],int row, int col);

void  game(char arr[ROW][COL],int row, int col);

void Printfmenu(char arr[ROW][COL],int row, int col);

int Win(char arr[ROW][COL],int row, int col);

 

#endif 

 

 

原创粉丝点击