#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. RN 常见问题

    React/RCTBridgeModule.h not found #import <React/RCTBridgeModule.h> 全部替换为 #import "RCTBri ...

  2. Js全选 添加和单独删除

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. SAP资产折旧,消息编号AA687:在上一年结算之后您只能记帐到新的一年

    问题:公司****在2015年底没有固定资产,忽略了月结的必要步骤,在2016年1-5月份一直没有计提折旧,再进行折旧时提示"在上一年结算之后您只能记帐到新的一年" 原因: sap ...

  4. JFinal快速上手及注意事项

    官方手册虽然写的很详细但是忽略的很多小的细节方面,不看源码,网络资料又少,很多新手找不到解决办法.所以养成出了问题,多看源码的习惯 部署helloJFinal 项目结构 - 相关代码 `package ...

  5. 在HTM中显示播放视频

    注意:video中source 源文件地址src替换成你的video路径<html>    <button onclick="playPause();">播 ...

  6. (转) Redis学习教程--基本命令

    原文出自:http://www.cnblogs.com/woshimrf/p/5198361.html 目录 全局操作:1.redis是key-value存储的,放在内存中,并在磁盘持久化的数据结构存 ...

  7. 【ASP.NET MVC 学习笔记】- 01 理解MVC模式

    本文参考:http://www.cnblogs.com/willick/p/3195560.html 1.MVC模式是软件系统的一种架构模式,它将软件分为三大模块: 模型(Model):封装业务逻辑以 ...

  8. Linux系统用户管理

    一.Linux账户 广义上讲,Linux的账户包括用户账户和组账户两种. Linux系统下的用户账户有两种,普通用户和超级用户.普通用户在系统中的任务就是普通工作,管理员在系统上的任务就是对普通用户和 ...

  9. Python[1,1]

    ####################################################################################### //只是为了凑够150字 ...

  10. 【JavaEE】企业面试问题-Java基础

    1. Java基础部分   1.1 Java中的方法覆盖(Overwrite)和方法重载(Overloading)是什么意思? 重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的 ...