怎样用C语言实现五子棋,C语言实现五子棋

可以称得上史上最简单的五子棋版本了。

可以使用curses库来改进页面和下棋方式。

并且对于输入的坐标没有进行鉴别,如果输入的坐标超过棋盘大小,就会段错误退出。

我改进了一点,但是还是没有完全避免这个问题。

/*

*Gobang.c

*/

#include

#include

#define N 15

int chessboard[N+1][N+1] = {0};

int whoseTurn = 0;

void initGame();

void printChessboard();

void playChess();

int judge(int x, int y);

int main()

{

initGame();

while(1)

{

whoseTurn++;

playChess();

}

return 0;

}

void initGame()

{

char c;

printf("Input Y to enter the game: ");

c = getchar();

if (c != 'y' && c != 'Y')

{

exit(0);

}

system("clear");

printChessboard();

}

void printChessboard()

{

int i,j;

for (i = 0; i <= N; i++)

{

for (j = 0; j <= N; j++)

{

if (0 == i)

{

printf("%3d", j);

}

else if(0 == j)

{

printf("%3d", i);

}

else if (1 == chessboard[i][j])

{

printf(" X");

}

else if (2 == chessboard[i][j])

{

printf(" O");

}

else

{

printf(" *");

}

}

printf("\n");

}

}

void playChess()

{

int i, j, winner;

if (1 == whoseTurn % 2)

{

printf("Turn to player 1, please input the position: ");

scanf("%d %d", &i, &j);

while(chessboard[i][j] != 0 || i > N || i < 0 || j > N || j < 0)

{

printf("your position is taken, choose another: ");

scanf("%d %d", &i, &j);

}

chessboard[i][j] = 1;

}

else

{

printf("Turn to player 2, please input the position: ");

scanf("%d %d", &i, &j);

while(chessboard[i][j] != 0 || i > N || i < 0 || j > N || j < 0)

{

printf("your position is taken, choose another: ");

scanf("%d %d", &i, &j);

}

chessboard[i][j] = 2;

}

system("clear");

printChessboard();

if (judge(i, j))

{

if (1 == whoseTurn % 2)

{

printf("player1 win\n");

exit(0);

}

else

{

printf("player2 win\n");

exit(0);

}

}

}

int judge(int x, int y)

{

int i, j, k;

int t = 2 - whoseTurn % 2;

const int step[4][2] = {{-1, 0}, {0, -1}, {1, 1}, {1, 0}};

for (i = 0; i < 4; i++)

{

const int d[2] = {-1, 1};

int count = 1;

for (j = 0; j < 2; ++j)

{

for (k = 1; k <= 4; k++)

{

int row = x + k*d[j]*step[i][0];

int col = y + k*d[j]*step[i][1];

if (row > 1 && row <= N && col >= 1 && col <= N &&

chessboard[x][y] == chessboard[row][col])

{

count++;

}

else

{

break;

}

}

}

if (count >= 5)

{

return 1;

}

}

return 0;

}

来源:https://www.cnblogs.com/wanghao-boke/p/12016551.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334225.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jasperreports_JasperReports:棘手的部分

jasperreports如果您使用Java进行编程的时间足够长&#xff0c;则有可能需要为业务用户生成报告。 就我而言&#xff0c;我已经看到几个项目使用JasperReportsLibrary来生成PDF和其他文件格式的报告。 最近&#xff0c;我荣幸地观察了Mike和他的团队使用上述报告库以及他们所面…

电脑运行adb闪退_adb+python进阶使用

之前文章有提到过使用python加adb刷视频&#xff0c;今天带来进阶版——无线多台手机。首先要使用adb连接多台手机&#xff0c;手机和电脑肯定要在统一局域网内。1.打开手机开发者模式&#xff0c;并通过USB接口链接电脑。2.打开cmd&#xff1a;输入adb tcpip 5555, 会得到相关…

MacBook 强制关机的四种方法

文章目录一、强制关机二、强制断电三、安全关闭&#xff08;老款 MacBook&#xff09;四、强制关闭一、强制关机 长按电源键&#xff0c;5 秒左右 二、强制断电 ShiftControlOption电源键 三、安全关闭&#xff08;老款 MacBook&#xff09; ControlOptionCommand电源键。…

python存储和读取数据时出现错误_python读取json文件存sql及codecs读取大文件问题...

preface: 最近帮师兄处理json文件&#xff0c;需要读到数据库里面&#xff0c;以备其后续从数据库读取数据。数据是关于yelp网站里面的: https://github.com/Yelp/dataset-examples&#xff0c;http://www.yelp.com/dataset_challenge/. 涉及到一些json和sql的问题&#xff0c;…

Mac OS/macOS 关机的命令

文章目录一、立即关机二、10 分钟后关机三、晚上 8 点关机四、立即重启一、立即关机 sudo halt 或者 sudo shutdown -h now 二、10 分钟后关机 sudo shutdown -h 10 三、晚上 8 点关机 sudo shutdown -h 20:00 四、立即重启 sudo reboot 或者 sudo shutdown -r now

使用枚举映射_用EnumMaps映射枚举键

使用枚举映射这是一种在JDK中存在很长时间的类型&#xff0c;当我们要定义以枚举类型作为键的映射时&#xff0c;这种类型会派上用场&#xff1a; EnumMap是一种特殊的Map 。 我们将为给定的枚举创建一个映射&#xff1a; public enum CoffeeType {ESPRESSO, POUR_OVER, FREN…

linux 划ext4,linux – 有没有像ext4这样的’快速’格式?

严格的答案像-E lazy_itable_init这样的解决方案不会改变结果,只会加快进程.这是明确要求的,在许多情况下人们需要更多.额外奖励在大多数情况下,您实际上需要一些与您的使用模式匹配的选项,不仅可以加快文件系统的创建速度,还可以加快使用速度并增加可用空间.我刚做了一个测试.…

java office在线编辑_国外10个最受欢迎的 Java 开发的 CMS 系统

CMS是Content Management System的缩写&#xff0c;意为"内容管理系统"&#xff0c;它具有许多基于模板的优秀设计&#xff0c;可以加快网站开发的速度和减少开发的成本。CMS的功能并不只限于文本处理&#xff0c;它也可以处理图片、Flash动画、声像流、图像甚至电子…

apache kafka_Apache Kafka简介

apache kafka什么是Apache Kafka&#xff1f; Apache Kafka是一个分布式流系统&#xff0c;具有发布和订阅记录流的功能。 在另一方面&#xff0c;它是企业消息传递系统。 它是一个快速&#xff0c;水平可扩展和容错的系统。 Kafka有四个核心API&#xff0c; 生产者API&#x…

Mac OS 查看系统版本信息/硬件信息的命令

文章目录一、查看硬盘信息二、查看系统内核信息三、查看 OS 版本信息一、查看硬盘信息 liaowenxiongdeMacBook-Air:~ liaowenxiong$ system_profiler SPHardwareDataType Hardware:Hardware Overview:Model Name: MacBook AirModel Identifier: MacBookAir7,2Processor Name: …

人脸特征值能存放在sql server中吗_SQL运行内幕:从执行原理看调优的本质

原文链接&#xff1a;https://www.cnblogs.com/arthinking/p/13205303.html相信大家看过无数的MySQL调优经验贴了&#xff0c;会告诉你各种调优手段&#xff0c;如&#xff1a;避免 select *&#xff1b;join字段走索引&#xff1b;慎用in和not in&#xff0c;用exists取代in&a…

rest资源设计_REST资源何时应获得其自己的地址?

rest资源设计在纯粹的REST方法中&#xff0c;所有端点&#xff08;起始端点除外&#xff09;都是不透明的&#xff0c;因此不需要发布其各种详细信息。 即使使用这种方法&#xff0c;本文中的要点也很重要&#xff0c;因为服务器逻辑将必须确定何时需要结束点。 介绍 在REST体…

百度地图android绘图类,Class:android总类/android离线地图类

出自百度地图API跳转到&#xff1a;导航,搜索com.baidu.mapapi类 MKOfflineMapjava.lang.Object∟ com.baidu.mapapi.MKOfflineMappublic class MKOfflineMapextends java.lang.Object离线地图类(只支持老版离线地图)。字段摘要方法摘要返回类型方法booleanstart(int cityID)启…

android webviwe 头布局,Android布局问题,带有WebView下方的按钮

您需要使用android:layout_above“id/btnok”作为您的webview,并填写_parent作为webview的宽度和高度。但是,需要注意的是,在1.5及以下版本中,为了正确识别XML,需要指定相对布局视图。换句话说,您必须先使用按钮,然后使用WebView,因为WebView将引用该按钮。我认为这在1.6或2.0中…

简述python的编程规范_python编程规范

一 代码风格&#xff1a;(0)参考google代码规范&#xff1a;*链接&#xff1a;http://zh-google-styleguide.readthedocs.org/en/latest/google-python-styleguide/(1)缩进&#xff1a;*python通过缩进对齐来表达代码逻辑&#xff1a;同一层次的语句必须有相同的缩进&#xff0…

ckeditor回显带标签_Spring Boot中带有CKEditor的AJAX

ckeditor回显带标签1.概述 在本文中&#xff0c;我们将介绍如何在Spring Boot中使用CKEditor 。 在本教程中&#xff0c;我们将导入一个包含大量数据的XML文档&#xff0c;对使用GET请求将一组数据加载到CKEditor实例的能力进行编程&#xff0c;并执行POST请求以保存CKEditor的…

android 可行性分析,可行性研究项目分析程序与步骤

项目分析程序项目分析分析工作步骤分析程序框架分段实施方法第一阶段初期工作1、收集资料。包括业主的要求&#xff0c;业主已经完成的研究成果&#xff0c;市场、厂址、原料、能源、运输、维修、共用设施、环境、劳动力来源、资金来源、税务、设备材料价格、物价上涨率等有关资…

原码一位乘法器设计_十分钟带你彻底搞懂原码、反码、补码

点击上方“程序员大白”&#xff0c;选择“星标”公众号重磅干货&#xff0c;第一时间送达编辑 | 程序员大白公众号来源丨https://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html仅作学术交流&#xff0c;如有侵权&#xff0c;请联系删文本篇文章讲解了计算…