C之五子棋
- #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之五子棋的更多相关文章
- 自己写的HTML5 Canvas + Javascript五子棋
看到一些曾经只会灌水的网友,在学习了前端之后,已经能写出下载量几千几万的脚本.样式,帮助大众,成为受欢迎的人,感觉满羡慕的.我也想学会前端技术,变得受欢迎呀.于是心血来潮,开始学习前端知识,并写下了这 ...
- java swing 双人五子棋源代码
import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Toolkit; impo ...
- HTML5 五子棋 - JS/Canvas 游戏
背景介绍 因为之前用c#的winform中的gdi+,java图形包做过五子棋,所以做这个逻辑思路也就驾轻就熟,然而最近想温故html5的canvas绘图功能(公司一般不用这些),所以做了个五子棋,当 ...
- [收藏]C++简单五子棋
#include<iostream> #include<iomanip> using namespace std; ; //棋盘行数 ; //棋盘列数 char p[X][Y] ...
- jQuery网页版五子棋小游戏源码下载
体验效果:http://hovertree.com/texiao/game/4/ 网页五子棋源代码: <!DOCTYPE html> <html> <head> & ...
- js+html5双人五子棋(源码下载)
代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" c ...
- jquery在线五子棋
在线五子棋试玩地址:http://keleyi.com/game/12/ 以下是完整代码,保存到html文件打开也可以玩: <!DOCTYPE html> <html> < ...
- 五子棋AI清月连珠开源
经过差不多两年的业余时间学习和编写,最近把清月连珠的无禁手部分完善得差不多了.这中间进行了很多思考,也有很多错误认识,到现在有一些东西还没有全面掌握,所以想通过开源于大家共同交流. 最近一直发表一些五 ...
- PyQt写的五子棋
技术路线 GUI的实现 使用PyQt技术作为基础.PyQt是一个支持多平台的客户端开发SDK,使用它实现的客户端可以运行在目前几乎所有主流平台之上. 使用PyQt,Qt设计器实现UI,通过pyuic4 ...
- 浅析基本AI五子棋算法
五子棋是所有棋类博弈中比较简单的了,这里介绍的也只是一种非常基本的AI策略.其实,包括之前的AI贪吃蛇,感觉这两个AI其实体现的都是一种建模思想,把一个现实中的问题模型化,抽象化,得到其一般特征,再设 ...
随机推荐
- floyd离散,最小环
Description 杭州有N个景区,景区之间有一些双向的路来连接,现在8600想找一条旅游路线,这个路线从A点出发并且最后回到A点,假设经过的路线为V1,V2,....VK,V1,那么必须满足K& ...
- mongodb安装与使用
一.在linux服务器中安装mongodb 1.首先你要有一台安装有linux系统的主机 2.从mongoDB官网下载安装包:http://www.mongodb.org/downloads 3.将下 ...
- 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第7章 - 利用AdaBoost元算法提高分类性能. 核心思想 在使用某个特定的算法是, ...
- Java的集合框架
01.为什么要使用集合框架? 解析:如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象,那么可以使用Java集合框架. 如果启用集合的删除方法,那么集合中所有元素的索引会自动维护. 集合 ...
- jsoup html采集器
package com.forex.collect; import java.io.IOException;import java.util.HashMap;import java.util.Iter ...
- AJAX请求中含有数组解决办法
当我们发送AJAX请求的数据中带有数组时,是不能像普通JSON数据一样,直接放在data里发送给后台,比如有这样一个数据需要发送给后台: { "orderId": 22, &quo ...
- C# DevExpress 的gridControl或gridView数据导出失败解决方法
来自:http://blog.csdn.net/lybwwp/article/details/8049464 谢谢 在使用DevExpress 的GridPanel控件的时候出现了一个莫名其妙的现象, ...
- 优于CoreData的Realm数据库基础教程
Realm 是一个跨平台的移动数据库引擎,于 2014 年 7 月发布,准确来说,它是专门为移动应用所设计的数据持久化解决方案之一. Realm 可以轻松地移植到您的项目当中,并且绝大部分常用的功能( ...
- 手动设定实例变量的KVO实现监听
手动设定实例变量的KVO实现监听 如果将一个对象设定成属性,这个属性是自动支持KVO的,如果这个对象是一个实例变量,那么,这个KVO是需要我们自己来实现的. 以下给出源码供君测试: Student.h ...
- 20个简化开发任务的 JavaScript库
所谓JavaScript库就是预先写好的可以简化基于JavaScript的应用程序开发的,尤其是Ajax和其它以web为中心的技术的 JavaScript代码集.JavaScript主要用于写内嵌于H ...