#include <stdio.h>
#include <Windows.h>
#include<time.h>
#define row 3
#define list 3 void init_Board(char board[row][list]) //对二维数组元素全部赋值为 “ ”
{
memset(board,' ',row*list*sizeof(char));
} void display_Board(char board[row][list])//画出棋谱
{
system("cls");
int i = ;
for (i = ; i < row; i++)
{
printf(" %c |%c | %c\n", board[i][], board[i][], board[i][]);
if (i != ){
printf(" --|--|--\n");
}
}
printf("(X代表玩家,0代表电脑)\n") ;
} void man_Play(char board[row][list]) //玩家下“子”
{
int i = ;
int j = ;
flag:
printf("选择一个坐标:\n");
scanf("%d", &i);
if (i > || i <)
{
printf("横坐标越界,重输:\n");
goto flag;
}
scanf("%d", &j);
if (j > || j <)
{
printf("纵坐标越界,重输:\n");
goto flag;
}
if (board[i-][j-] == ' ')
board[i-][j-]='X';
else
{
printf("所选位置已被下过,请重新输入\n");
goto flag;
}
} char is_Win(char board[row][list])
{
int i = ;
int j = ;
for (i = ; i < row; i++)
{
if ((board[i][] == board[i][]) && (board[i][] == board[i][]))
return board[i][];
}
for (j = ; j < row; j++)
{
if ((board[][j] == board[][j]) &&( board[][j] == board[][j]))
return board[][j];
}
if ((board[][] == board[][]) && (board[][] == board[][]))
return board[][];
if ((board[][] == board[][]) && (board[][] == board[][]))
return board[][];
return ' ';
}
void computer_Play(char board[row][list]) //电脑下“子”
{
int i = ;
int j = ;
while ()
{
srand((int)time());//设置随机种子
i = rand() % ; //产生随机数
j = rand() % ;
if (board[i][j] == ' ')
{
board[i][j] = '';
break;
}
}
} int is_Full(char board[row][list])
{
int i = ;
int j = ;
int count = ;
for (i = ; i < row;i++)
for (j = ; j < list; j++)
{
if (board[i][j] == ' ')
count++;
}
return count;
} int main()
{
char board[row][list];
init_Board(board);
display_Board(board);
while ()
{
if ((is_Full(board) > ))
{
man_Play(board);
display_Board(board);
printf("\n");
if (is_Win(board) == 'X')
{
printf("玩家胜\n");
break;
}
}
else
{
printf("平局!");
break;
}
if ((is_Full(board) >))
{
computer_Play(board);
display_Board(board);
printf("\n");
if (is_Win(board) == )
{
printf("电脑胜\n");
break;
}
}
else
{
printf("平局!");
break;
}
}
printf("游戏结束!\n");
system("pause");
return ;
}

C语 三子棋小游戏的更多相关文章

  1. React + Ts 实现三子棋小游戏

    在这里阅读效果更佳 还记得当年和同桌在草稿纸上下三子棋的时光吗 今天我们就用代码来重温一下年少(假设你有react基础,没有也行,只要你会三大框架的任意一种,上手react不难) 游戏规则 双方各执一 ...

  2. 根据之前的博文,我把给同学做的三子棋小游戏的代码发出来,只是界面很丑很丑,AI算法很笨很笨,过几天我传到网盘上,提供大家下载娱乐

    background_image_filename = 'blackground.png' black_mouse_image_filename = 'black.png' white_mouse_i ...

  3. 井字棋小游戏(C语言)

    最近沉迷于<NetHack>.<DCSS>等字符游戏,对其很感兴趣,于是用C语言写了个字符界面的井字棋小游戏.欢迎大家指教. 编写时遇到了一些问题,我原先准备用循环,直到读取到 ...

  4. c语言小游戏-三子棋的完成

    三子棋的实现 一.实现思路 1.初始化数组 三子棋是九宫格的格式,所以用二维数组接收数据.用‘O’代表电脑下的子,‘X’代表玩家下的子.未下子的时候初始化 ’ ‘(space).则二维数组为“char ...

  5. [HTML5实现人工智能]小游戏《井字棋》发布,据说IQ上200才能赢

    一,什么是TicTacToe(井字棋)   本 游戏 为在下用lufylegend开发的第二款小游戏.此游戏是大家想必大家小时候都玩过,因为玩它很简单,只需要一张草稿纸和一只笔就能开始游戏,所以广受儿 ...

  6. 『HTML5实现人工智能』小游戏《井字棋》发布,据说IQ上200才能赢【算法&代码讲解+资源打包下载】

    一,什么是TicTacToe(井字棋) 本游戏为在下用lufylegend开发的第二款小游戏.此游戏是大家想必大家小时候都玩过,因为玩它很简单,只需要一张草稿纸和一只笔就能开始游戏,所以广受儿童欢迎. ...

  7. 介绍一款Android小游戏--交互式人机对战五子棋

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6589025 学习Android系统开发之余,编 ...

  8. “倔驴”一个h5小游戏的实现和思考(码易直播)——总结与整理

    3月23日晚上8点半(中国队火拼韩国的时候),做了一期直播分享.15年做的一个小游戏,把核心代码拿出来,现场讲写了一遍,结果后面翻车了,写错了两个地方,导致运行效果有点问题,直播边说话边写代码还真不一 ...

  9. JQuery&原生js ——实现剪刀石头布小游戏

    前言 jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库( 或JavaScript框架).jQuery设计的宗旨是“write L ...

随机推荐

  1. SELECT与SET对变量赋值

    SQL Server 中对已经定义的变量赋值的方式用两种,分别是 SET 和 SELECT. 对于这两种方式的区别,SQL Server 联机丛书中已经有详细的说明,但很多时候我们并没有注意,其实这两 ...

  2. MySQL中变量的总结

    本文对MySQL中局部变量.用户变量.系统变量的理解进行总结. 一.局部变量 局部变量由DECLARE语句声明: DECLARE var_name[,...] type [DEFAULT value] ...

  3. win10 uwp 列表模板选择器

    本文主要讲ListView等列表可以根据内容不同,使用不同模板的列表模板选择器,DataTemplateSelector. 如果在 UWP 需要定义某些列的显示和其他列不同,或者某些行的显示和其他行不 ...

  4. 张高兴的 Windows 10 IoT 开发笔记:HC-SR04 超声波测距模块

    HC-SR04 采用 IO 触发测距.下面介绍一下其在 Windows 10 IoT Core 环境下的用法. 项目运行在 Raspberry Pi 2/3 上,使用 C# 进行编码. 1. 准备 H ...

  5. uva 10118,记忆化搜索

    这个题debug了长达3个小时,acm我不能放弃,我又回来了的第一题! 一开始思路正确,写法不行,结果越改越乱 看了网上某神的代码,学习了一下 coding+debug:4小时左右,记忆化搜索+dp类 ...

  6. Java IO(IO流)-2

    IO流 第一部分 (OutputStreamWriter BufferOutputStream) 转换流 超类为Reader和Writer 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流 ...

  7. 快速排序算法分析--C++版

    快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试喜欢考这个. 快速排序是C.R.A.Hoar ...

  8. NOIP2015运输计划(树上前缀和+LCA+二分)

    Description 公元 2044 年,人类进入了宇宙纪元. L 国有 n 个星球,还有 n−1 条双向航道,每条航道建立在两个星球之间,这 n−1 条航道连通了 L 国的所有星球. 小 P 掌管 ...

  9. WSGI框架及Paste+Pastedeploy+route+webob开发

    一.前言 WSGI服务器 一个Web服务器网关接口 (WSGI)服务器实现了WSGI接口的Web服务器端运行的Python的Web应用程序. 为什么需要WSGI? 传统的Web服务器不理解或有任何方式 ...

  10. Java基础总结--流程控制

    Java流程控制* 顺序结构--最常见的执行情况,语句按照出现的先后次序依次执行.* 判断结构--对条件进行判断,执行相应的语句.有三种常见的形式< if(判断条件){语句;}--为真执行语句, ...