1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define N 15
  5.  
  6. int chessboard[N + ][N + ] = { };
  7.  
  8. int whoseTurn = ;
  9.  
  10. void initGame(void);
  11. void printChessboard(void);
  12. void playChess(void);
  13. int judge(int, int);
  14.  
  15. int main(void)
  16. {
  17. initGame();
  18.  
  19. while ()
  20. {
  21. whoseTurn++;
  22.  
  23. playChess();
  24. }
  25.  
  26. return ;
  27. }
  28.  
  29. void initGame(void)
  30. {
  31. char c;
  32.  
  33. printf("Please input \'y\' to enter the game:");
  34. c = getchar();
  35. if ('y' != c && 'Y' != c)
  36. exit();
  37.  
  38. system("cls");
  39. printChessboard();
  40. }
  41.  
  42. void printChessboard(void)
  43. {
  44. int i, j;
  45.  
  46. for (i = ; i <= N; i++)
  47. {
  48. for (j = ; j <= N; j++)
  49. {
  50. if ( == i)
  51. printf("%3d", j);
  52. else if (j == )
  53. printf("%3d", i);
  54. else if ( == chessboard[i][j])
  55. printf(" O");
  56. else if ( == chessboard[i][j])
  57. printf(" X");
  58. else
  59. printf(" *");
  60. }
  61. printf("\n");
  62. }
  63. }
  64.  
  65. void playChess(void)
  66. {
  67. int i, j, winner;
  68.  
  69. if ( == whoseTurn % )
  70. {
  71. printf("Turn to player 1, please input the position:");
  72. scanf("%d %d", &i, &j);
  73.  
  74. while (chessboard[i][j] != )
  75. {
  76. printf("This position has been occupied, please input the position again:");
  77. scanf("%d %d", &i, &j);
  78. }
  79.  
  80. chessboard[i][j] = ;
  81. }
  82. else
  83. {
  84. printf("Turn to player 1, please input the position:");
  85. scanf("%d %d", &i, &j);
  86.  
  87. while (chessboard[i][j] != )
  88. {
  89. printf("This position has been occupied, please input the position again:");
  90. scanf("%d %d", &i, &j);
  91. }
  92.  
  93. chessboard[i][j] = ;
  94. }
  95.  
  96. system("cls");
  97. printChessboard();
  98.  
  99. if (judge(i, j))
  100. {
  101. if ( == whoseTurn % )
  102. {
  103. printf("Winner is player 1!\n");
  104. exit();
  105. }
  106. else
  107. {
  108. printf("Winner is player 2!\n");
  109. exit();
  110. }
  111. }
  112. }
  113.  
  114. int judge(int x, int y)
  115. {
  116. int i, j;
  117. int t = - whoseTurn % ;
  118.  
  119. for (i = x - , j = y; i <= x; i++)
  120. {
  121. if (i >= && i <= N - && t == chessboard[i][j] && t == chessboard[i + ][j] && t == chessboard[i + ][j] && t == chessboard[i + ][j] && t == chessboard[i + ][j])
  122. return ;
  123. }
  124. for (i = x, j = y - ; j <= y; j++)
  125. {
  126. if (j >= && j <= N - && t == chessboard[i][j] && t == chessboard[i][j + ] && t == chessboard[i][j + ] && t == chessboard[i][j + ] && t == chessboard[i][j + ])
  127. return ;
  128. }
  129. for (i = x - , j = y - ; i <= x, j <= y; i++, j++)
  130. {
  131. 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 + ])
  132. return ;
  133. }
  134. for (i = x + , j = y - ; i >= , j <= y; i--, j++)
  135. {
  136. 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 + ])
  137. return ;
  138. }
  139.  
  140. return ;
  141. }

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. floyd离散,最小环

    Description 杭州有N个景区,景区之间有一些双向的路来连接,现在8600想找一条旅游路线,这个路线从A点出发并且最后回到A点,假设经过的路线为V1,V2,....VK,V1,那么必须满足K& ...

  2. mongodb安装与使用

    一.在linux服务器中安装mongodb 1.首先你要有一台安装有linux系统的主机 2.从mongoDB官网下载安装包:http://www.mongodb.org/downloads 3.将下 ...

  3. 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第7章 - 利用AdaBoost元算法提高分类性能. 核心思想 在使用某个特定的算法是, ...

  4. Java的集合框架

    01.为什么要使用集合框架? 解析:如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象,那么可以使用Java集合框架. 如果启用集合的删除方法,那么集合中所有元素的索引会自动维护. 集合 ...

  5. jsoup html采集器

    package com.forex.collect; import java.io.IOException;import java.util.HashMap;import java.util.Iter ...

  6. AJAX请求中含有数组解决办法

    当我们发送AJAX请求的数据中带有数组时,是不能像普通JSON数据一样,直接放在data里发送给后台,比如有这样一个数据需要发送给后台: { "orderId": 22, &quo ...

  7. C# DevExpress 的gridControl或gridView数据导出失败解决方法

    来自:http://blog.csdn.net/lybwwp/article/details/8049464 谢谢 在使用DevExpress 的GridPanel控件的时候出现了一个莫名其妙的现象, ...

  8. 优于CoreData的Realm数据库基础教程

    Realm 是一个跨平台的移动数据库引擎,于 2014 年 7 月发布,准确来说,它是专门为移动应用所设计的数据持久化解决方案之一. Realm 可以轻松地移植到您的项目当中,并且绝大部分常用的功能( ...

  9. 手动设定实例变量的KVO实现监听

    手动设定实例变量的KVO实现监听 如果将一个对象设定成属性,这个属性是自动支持KVO的,如果这个对象是一个实例变量,那么,这个KVO是需要我们自己来实现的. 以下给出源码供君测试: Student.h ...

  10. 20个简化开发任务的 JavaScript库

    所谓JavaScript库就是预先写好的可以简化基于JavaScript的应用程序开发的,尤其是Ajax和其它以web为中心的技术的 JavaScript代码集.JavaScript主要用于写内嵌于H ...