C语言:井字棋盘的实现

#include <stdio.h>

void chessboard(int arr[][3], int len){                  //棋盘初始化

int i = 0;

int j = 0;

for (i = 0; i < len; i++){

for (j = 0; j < len; j++){

arr[i][j] = ‘ ‘;

}

}

}

void print(int arr[][3], int len){                    //显示函数

int i = 0;

for (i = 0; i < 3; i++){

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

printf("\n");

if (i != 2){

printf("___|___|___");

printf("\n");

}

}

}

void computer(int arr[][3], int len){                         //电脑下棋函数

int i = 0;

int j = 0;

int flag = 0;

for (i = 0; i < len; i++){

for (j = 0; j < len; j++){

if (arr[i][j] == ‘ ‘){

arr[i][j] = ‘0‘;          //找到一个符合的位置就下棋

flag = 1;

break;

}

}

if (flag == 1)

break;

else if (flag == 0)

continue;

}

print(arr,len );

Is_win(arr, len);

}

void player(int arr[][3] ,int len){                    //玩家下棋函数

int x = 0;

int y = 0;

flag: printf("请输入棋子坐标:\n");

scanf_s("%d %d", &x, &y);                  //输入棋子坐标

if (arr[x - 1][y - 1] == ‘ ‘){

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

computer(arr ,len );

player(arr, len);

}

else if ((arr[x - 1][y - 1] == ‘0‘) || (arr[x - 1][y - 1] == ‘X‘)){

printf("这里不能落子!\n");

goto flag;

}

}

int  Is_win(int arr[][3], int len){

int i = 0;

int ret = 0;

for (i = 0; i < 3; i++){

if (arr[i][0] == arr[i][1] && arr[i][0] == arr[i][2]){                 //行判断

ret = arr[i][0];

}

}

for (i = 0; i < 3; i++){

if (arr[0][i] == arr[1][i] && arr[0][i] == arr[2][i]){                //列判断

ret = arr[0][i ];

}

}

if (( arr[0][0]) == arr[1][1] &&  arr[0][0] == arr[2][2]){             //\方向判断

ret = arr[0][0];

}

if (arr[0][2] == arr[1][1] && arr[0][2]== arr[2][0] ){              //  /方向判断

ret = arr[0][2];

}

if (ret == ‘X‘){

printf("你赢了!\n");

exit(0);

}

else if (ret == ‘0‘){

printf("电脑赢了!\n");

exit(0);

}

return 0;

}

int main(){                                            //主函数

int len = 0;                                 //数组长度

int chess[3][3];                          //定义数组

len = sizeof(chess ) / sizeof(chess[0]);

chessboard(chess,len );

print(chess, len);

player(chess, len);

return  0;

}

时间: 2024-10-25 12:13:58

C语言:井字棋盘的实现的相关文章

python井字棋算法及代码

井字棋盘看起来像一个大的井字符号(#),有9 个空格,可以包含X.O 或关于落子问题由于只能采用键盘输入,所以需要对棋盘进行坐标表示:即直接用1-9个9个数字来表示位置,7|8|9-+-+-4|5|6-+-+-1|2|3其索引顺序与数字键盘上的数字键排列一致,下棋时看着数字键下,较为简便.计算机的算法--寻找最佳落子位置首先简单的将棋盘划分为三个部分--中心(1),角(4),边(4).中心虽然只有一个但却不是最重要的,三个部分落子的优先顺序依次为:角.中心.边.因此,井字棋的计算机算法计算最佳落

程序设计入门—Java语言 第五周编程题 2井字棋(5分)

2 井字棋(5分) 题目内容: 嗯,就是视频里说的那个井字棋.视频里说了它的基本思路,现在,需要你把它全部实现出来啦. 你的程序先要读入一个整数n,范围是[3,100],这表示井字棋棋盘的边长.比如n=3就表示是一个3x3的棋盘.然后,要读入n行,每行n个数字,每个数字是1或0,依次表示[0,0]到[n-1,n-1]位置上的棋子.1表示X,0表示O(大写字母O). 你的程序要判断其中是否存在某一方获胜,获胜的条件是存在整行或整列或整条对角线或整条反对角线上是相同的棋子.如果存在,则输出代表获胜一

井字棋的最优策略竟是先占角!

http://www.guokr.com/article/4754/ 井字棋可能是最简单的棋类游戏了,它简单到了成年人之间玩几乎总是平局的地步.因此,这个游戏貌似最多只能哄哄小孩子.不过,对井字棋游戏中所有可能的情况进行一番细致的分析,你会发现一个你或许不会料到的惊人结论——先手的最优策略不是稳坐正中央,而是先占一个角! 几年前,果壳网小编曾经自己动手写过一个和人下井字棋的电脑程序,运行之后却发现电脑先走时总爱把第一步棋下在角上:检查程序代码许久后才意识到,电脑程序可能并没有问题.人们往往有一个

人工智能博弈树算法做的井字棋游戏

不会输,超碉!井字棋这个游戏真是太无聊啦! 算法大概就是,有一个给状况进行估价的函数,深搜每种状况,假设每个人都按对自己最有利的方式走(假设玩家也是不傻),最后让电脑走出最有利的一步. 代码: 1 //#pragma comment(linker, "/STACK:102400000,102400000") 2 #include<cstdio> 3 #include<cmath> 4 #include<iostream> 5 #include<

[游戏学习22] MFC 井字棋 双人对战

>_<:太多啦,感觉用英语说的太慢啦,没想到一年做的东西竟然这么多.....接下来要加速啦! >_<:注意这里必须用MFC和前面的Win32不一样啦! >_<:这也是第一次出现MFC游戏,其框架和逻辑的写法和Win32有很大的区别,建议先看一下MFC的基础再理解代码: >_<:TicTac.h 1 #define EX 1 //该点左鼠标 2 #define OH 2 //该点右鼠标 3 4 class CMyApp : public CWinApp 5 {

C++井字棋游戏,DOS界面版

据说有一个能保证不败的算法.明天看看先再写个PVC版的. 正题.今天无聊写了个井字棋游戏,顺便逐渐让自己习惯良好的代码风格,放上来给新手学习学习. jzq2.cpp /* N字棋游戏PVP版,DOS版 本棋盘可扩充,仅仅需调整检測条件就可以,其它接口不需改变. 非人机对战型.PVP类型; @author:天下无双 @date:2014-5-25 @version:1.0 */ #include <iostream> #include <string> #define INVALID

井字棋

题目描述 对于一个给定的井字棋棋盘,请设计一个高效算法判断当前玩家是否获胜. 给定一个二维数组board,代表当前棋盘,其中元素为1的代表是当前玩家的棋子,为0表示没有棋子,为-1代表是对方玩家的棋子. 测试样例: [[1,0,1],[1,-1,-1],[1,-1,0]] 返回:true //判断每行每列每个对角线上的值是否都为1 class Board { public: bool checkWon(vector<vector<int> > board) { int len =

井字棋游戏升级版 - TopTicTacToe项目 简介

一.游戏简介 井字棋是一款世界闻名的游戏,不用我说,你一定知道它的游戏规则. 这款游戏简单易学,玩起来很有意思,不过已经证明出这款游戏如果两个玩家都足够聪明的话, 是很容易无法分出胜负的,即我们得到的结果是平局. 我们的项目,就是井字棋游戏的升级版!游戏有九个小棋盘,每个棋盘构成了整体布局的一部分,要想获得游戏的胜利,你要把握整个局势才行! 二.亮点 创新 传统的井字棋只有九个格,玩法简单,但是变化也相当有限.初玩者很容易被这新颖的游戏吸引住,但是玩了一段时间后,很容易摸出规律,很轻松达到不败的

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

一,什么是TicTacToe(井字棋) 本游戏为在下用lufylegend开发的第二款小游戏.此游戏是大家想必大家小时候都玩过,因为玩它很简单,只需要一张草稿纸和一只笔就能开始游戏,所以广受儿童欢迎.可能我说了半天,对它名字不熟悉的朋友也不懂我在说神马.那没关系,我就引用Wiki(维基百科)的介绍作为大家对它名字的认识,顺便也勾起我们儿时的回忆: 井字棋,大陆.台湾又称为井字游戏.圈圈叉叉:另外也有打井游戏.OX棋的称呼,香港多称井字过三关.过三关,是种纸笔游戏.两个玩家,一个打圈(O),一个打