三子棋小程序
来源:互联网 发布: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
- 三子棋小程序
- 三子棋小程序
- 程序
- 程序
- 程序
- 程序!~~`````
- 程序
- 程序
- 程序
- 程序
- 程序
- 程序
- 程序
- 程序
- 程序
- 程序
- 程序
- 程序
- 闭包
- 实现自定义顶部标题栏(自定义控件)
- 【安全牛学习笔记】答疑(Conky、Goagent、Linux4.4内核发布),手动漏洞挖掘
- zhuce
- spring mvc常见面试题1
- 三子棋小程序
- Cookies.简要
- Monitor项目开发走过的路~自定义AlertDialog,设置子view
- 1203随笔
- mysql存储树形结构的数据
- JAVA利用第三方平台发送短信验证码。
- Leetcode | Edit Distance
- 对InnoDB和MyISAM存储引擎的理解
- 【安全牛学习笔记】APPSCAN