#include <stdio.h>
#include <stdlib.h> #define N 15 int chessboard[N + ][N + ] = { }; int whoseTurn = ; void initGame(void);
void printChessboard(void);
void playChess(void);
int judge(int, int); int main(void)
{
initGame(); while ()
{
whoseTurn++; playChess();
} return ;
} void initGame(void)
{
char c; printf("Please input \'y\' to enter the game:");
c = getchar();
if ('y' != c && 'Y' != c)
exit(); system("cls");
printChessboard();
} void printChessboard(void)
{
int i, j; for (i = ; i <= N; i++)
{
for (j = ; j <= N; j++)
{
if ( == i)
printf("%3d", j);
else if (j == )
printf("%3d", i);
else if ( == chessboard[i][j])
printf(" O");
else if ( == chessboard[i][j])
printf(" X");
else
printf(" *");
}
printf("\n");
}
} void playChess(void)
{
int i, j, winner; if ( == whoseTurn % )
{
printf("Turn to player 1, please input the position:");
scanf("%d %d", &i, &j); while (chessboard[i][j] != )
{
printf("This position has been occupied, please input the position again:");
scanf("%d %d", &i, &j);
} chessboard[i][j] = ;
}
else
{
printf("Turn to player 1, please input the position:");
scanf("%d %d", &i, &j); while (chessboard[i][j] != )
{
printf("This position has been occupied, please input the position again:");
scanf("%d %d", &i, &j);
} chessboard[i][j] = ;
} system("cls");
printChessboard(); if (judge(i, j))
{
if ( == whoseTurn % )
{
printf("Winner is player 1!\n");
exit();
}
else
{
printf("Winner is player 2!\n");
exit();
}
}
} int judge(int x, int y)
{
int i, j;
int t = - whoseTurn % ; for (i = x - , j = y; i <= x; i++)
{
if (i >= && i <= N - && t == chessboard[i][j] && t == chessboard[i + ][j] && t == chessboard[i + ][j] && t == chessboard[i + ][j] && t == chessboard[i + ][j])
return ;
}
for (i = x, j = y - ; j <= y; j++)
{
if (j >= && j <= N - && t == chessboard[i][j] && t == chessboard[i][j + ] && t == chessboard[i][j + ] && t == chessboard[i][j + ] && t == chessboard[i][j + ])
return ;
}
for (i = x - , j = y - ; i <= x, j <= y; i++, j++)
{
if (i >= && i <= N - && j >= && j <= N - && t == chessboard[i][j] && t == chessboard[i + ][j + ] && t == chessboard[i + ][j + ] && t == chessboard[i + ][j + ] && t == chessboard[i + ][j + ])
return ;
}
for (i = x + , j = y - ; i >= , j <= y; i--, j++)
{
if (i >= && i <= N - && j >= && j <= N - && t == chessboard[i][j] && t == chessboard[i - ][j + ] && t == chessboard[i - ][j + ] && t == chessboard[i - ][j + ] && t == chessboard[i - ][j + ])
return ;
} return ;
}

C之五子棋的更多相关文章

  1. 自己写的HTML5 Canvas + Javascript五子棋

    看到一些曾经只会灌水的网友,在学习了前端之后,已经能写出下载量几千几万的脚本.样式,帮助大众,成为受欢迎的人,感觉满羡慕的.我也想学会前端技术,变得受欢迎呀.于是心血来潮,开始学习前端知识,并写下了这 ...

  2. java swing 双人五子棋源代码

    import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Toolkit; impo ...

  3. HTML5 五子棋 - JS/Canvas 游戏

    背景介绍 因为之前用c#的winform中的gdi+,java图形包做过五子棋,所以做这个逻辑思路也就驾轻就熟,然而最近想温故html5的canvas绘图功能(公司一般不用这些),所以做了个五子棋,当 ...

  4. [收藏]C++简单五子棋

    #include<iostream> #include<iomanip> using namespace std; ; //棋盘行数 ; //棋盘列数 char p[X][Y] ...

  5. jQuery网页版五子棋小游戏源码下载

    体验效果:http://hovertree.com/texiao/game/4/ 网页五子棋源代码: <!DOCTYPE html> <html> <head> & ...

  6. js+html5双人五子棋(源码下载)

    代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" c ...

  7. jquery在线五子棋

    在线五子棋试玩地址:http://keleyi.com/game/12/ 以下是完整代码,保存到html文件打开也可以玩: <!DOCTYPE html> <html> < ...

  8. 五子棋AI清月连珠开源

    经过差不多两年的业余时间学习和编写,最近把清月连珠的无禁手部分完善得差不多了.这中间进行了很多思考,也有很多错误认识,到现在有一些东西还没有全面掌握,所以想通过开源于大家共同交流. 最近一直发表一些五 ...

  9. PyQt写的五子棋

    技术路线 GUI的实现 使用PyQt技术作为基础.PyQt是一个支持多平台的客户端开发SDK,使用它实现的客户端可以运行在目前几乎所有主流平台之上. 使用PyQt,Qt设计器实现UI,通过pyuic4 ...

  10. 浅析基本AI五子棋算法

    五子棋是所有棋类博弈中比较简单的了,这里介绍的也只是一种非常基本的AI策略.其实,包括之前的AI贪吃蛇,感觉这两个AI其实体现的都是一种建模思想,把一个现实中的问题模型化,抽象化,得到其一般特征,再设 ...

随机推荐

  1. ztree addNode editName removeNode

    1.ztree api中完全拥有以上操作的相关解释,及简单Demo. 2.主要是要学会将单独的效果组合起来使用. 2.1  如: 添加完新的Node节点之后,怎么立即进入新节点的编辑状态来修改名称(或 ...

  2. Delphi的几个跨平台小游戏例子。

    Embarcadero开源了几个FireMonkey的小游戏,支持Windows, Android,Ios, MacOS等. 源码地址: https://github.com/EmbarcaderoP ...

  3. Oracle 中 call 和 exec的区别

    今天发现了一个小东西,觉得很有意思,查找了一些资料,跟大家分享一下: 在sqlplus中: 在第三方提供的工具(如:plsqldev) 总结: exec是sqlplus的命令,只能在sqlplus中使 ...

  4. Autofac全面解析系列(版本:3.5) – [使用篇(推荐篇):2.解析获取]

    前言 Autofac是一套高效的依赖注入框架. Autofac官方网站:http://autofac.org/ Autofac在Github上的开源项目:https://github.com/auto ...

  5. [程序人生]前途无"亮‘’的大学

    转眼之间就到大四了,今天晚上很迷茫,很纠结,想了好多,好多,真的,长大之后,自从第一次失恋之后,第一次会想到这么的多.     嗯,先自我介绍哈吧,我是从云南的大山里走出来的孩子,什么样的大山,就是到 ...

  6. JavaScript一个经典问题

    看下面代码 <ul id="demo"> <li></li> <li></li> <li></li&g ...

  7. 【转】深入浅出Android Support Annotation

    [转自]http://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0427/2797.html http://www.flysnow.org/201 ...

  8. Android多媒体录制--MediaRecorder视频录制

    Android使用MediaRecorder类进行视频的录制. 需要注意,使用MediaRecorder 录音录像 的设置代码步骤一定要按照API指定的顺序来设置,否则报错 步骤为: 1.设置视频源, ...

  9. IOS中程序如何进行推送消息(本地推送,远程推送)2(上)

    未看过本地推送的,可以提前看一下本地推送. http://www.cnblogs.com/wolfhous/p/5135711.html =============================== ...

  10. Cent OS 6.4安装mysql

    Cent OS6.4 RPM安装mysql 一.卸载掉原有mysql 因为目前主流Linux系统版本基本上都集成了mysql数据库在里面 如下命令来查看我们的操作系统上是否已经安装了mysql数据库 ...