C语 三子棋小游戏
#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语 三子棋小游戏的更多相关文章
- React + Ts 实现三子棋小游戏
在这里阅读效果更佳 还记得当年和同桌在草稿纸上下三子棋的时光吗 今天我们就用代码来重温一下年少(假设你有react基础,没有也行,只要你会三大框架的任意一种,上手react不难) 游戏规则 双方各执一 ...
- 根据之前的博文,我把给同学做的三子棋小游戏的代码发出来,只是界面很丑很丑,AI算法很笨很笨,过几天我传到网盘上,提供大家下载娱乐
background_image_filename = 'blackground.png' black_mouse_image_filename = 'black.png' white_mouse_i ...
- 井字棋小游戏(C语言)
最近沉迷于<NetHack>.<DCSS>等字符游戏,对其很感兴趣,于是用C语言写了个字符界面的井字棋小游戏.欢迎大家指教. 编写时遇到了一些问题,我原先准备用循环,直到读取到 ...
- c语言小游戏-三子棋的完成
三子棋的实现 一.实现思路 1.初始化数组 三子棋是九宫格的格式,所以用二维数组接收数据.用‘O’代表电脑下的子,‘X’代表玩家下的子.未下子的时候初始化 ’ ‘(space).则二维数组为“char ...
- [HTML5实现人工智能]小游戏《井字棋》发布,据说IQ上200才能赢
一,什么是TicTacToe(井字棋) 本 游戏 为在下用lufylegend开发的第二款小游戏.此游戏是大家想必大家小时候都玩过,因为玩它很简单,只需要一张草稿纸和一只笔就能开始游戏,所以广受儿 ...
- 『HTML5实现人工智能』小游戏《井字棋》发布,据说IQ上200才能赢【算法&代码讲解+资源打包下载】
一,什么是TicTacToe(井字棋) 本游戏为在下用lufylegend开发的第二款小游戏.此游戏是大家想必大家小时候都玩过,因为玩它很简单,只需要一张草稿纸和一只笔就能开始游戏,所以广受儿童欢迎. ...
- 介绍一款Android小游戏--交互式人机对战五子棋
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6589025 学习Android系统开发之余,编 ...
- “倔驴”一个h5小游戏的实现和思考(码易直播)——总结与整理
3月23日晚上8点半(中国队火拼韩国的时候),做了一期直播分享.15年做的一个小游戏,把核心代码拿出来,现场讲写了一遍,结果后面翻车了,写错了两个地方,导致运行效果有点问题,直播边说话边写代码还真不一 ...
- JQuery&原生js ——实现剪刀石头布小游戏
前言 jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库( 或JavaScript框架).jQuery设计的宗旨是“write L ...
随机推荐
- samba的安装和配置
samba是Linux系统上的一种文件共享协议,可以实现Windows系统访问Linux系统上的共享资源,现在介绍一下如何在Ubuntu 14.04上安装和配置samba 实验环境 Ubuntu 14 ...
- java web 学习笔记 编码问题总结
java web 学习笔记 编码问题总结 1.非form表单中提交的中文参数---------------------------传递给Servlet服务器时,默认以iso-8859-1解码 ...
- Opencv如何捕获摄像头视频-OpenCV步步精深
捕获摄像头实时图像 这一点非常非常重要,因为这一点关乎了以后我们进行各种各样的识别(人脸识别,车牌识别等等有趣的识别).opencv提供了一个接口,可以轻松的让我们实现这个功能.我们先来看一段代码,根 ...
- 2017值得一瞥的JavaScript相关技术趋势
2017值得一瞥的JavaScript相关技术趋势从属于笔者的Web 前端入门与工程实践,推荐阅读2016-我的前端之路:工具化与工程化获得更多关于2016年前端总结.本文主要内容翻译自,笔者对于每个 ...
- Android架构: MVC 新浪微博
由于项目的需要,最近研究了一下需要连接网络项目的MVC架构,参考了一下一个新浪微博的开发架构 http://www.open-open.com/lib/view/open1345524526767.h ...
- WPF 快捷键读写txt
因为git提交需要写这次做的,所以我想弄个东西来帮我写 WPF可以使用快捷键,快捷键主要使用InputBindings,WPF读写文件很简单 我每次都要写 第一句标题 之后就是我写的修改 然后加上我名 ...
- SQL Server Alwayson概念总结
一.alwayson概念 “可用性组” 针对一组离散的用户数据库(称为“可用性数据库” ,它们共同实现故障转移)支持故障转移环境. 一个可用性组支持一组主数据库以及一至八组对应的辅助数据库(包括一个主 ...
- Myeclipse10连接SqlServer2012
本文纯手打!!!! 对于我们这些刚学java的小白,可是真费劲啊!!!! 要用java连接数据库 首先是要通过JDBC驱动 要先去下载一个sqljdbc4.jar,我这里放百度云盘了, 下载地址:链 ...
- C++向量(08)
在数组生存期内,数组的大小是不会改变的.向量是一维数组的类版本,它与数组相似,其中的元素项总是连续存储的,但它和数组不同的是:向量中存储元素的多少可以在运行中根据需要动态地增长或缩小.向量是类模板,具 ...
- 数据权限设计——基于EntityFramework的数据权限设计方案:一种设计思路
前言:“我们有一个订单列表,希望能够根据当前登陆的不同用户看到不同类型的订单数据”.“我们希望不同的用户能看到不同时间段的扫描报表数据”.“我们系统需要不同用户查看不同的生产报表列”.诸如此类,最近经 ...