本文实例为大家分享了C语言编写五子棋游戏的具体代码,供大家参考,具体内容如下

一、构建棋盘

首先可以用一个二维数组来构建棋盘,下标表示位置,内容表示黑子白子或者空位。当数组内容为1时,该位置为白字,当数组为0时,该位置为白子,空位输出+

int w[11][11], flag = 0;

int a, b;

for (int k = 0; k < 11; k++)

printf("第%d列\t", k);

printf("\n");

for (int i = 0; i < 11; i++) {

for (int j = 0; j < 11; j++) {

if (w[i][j] == 0) printf("黑\t");

else if (w[i][j] == 1) printf("白\t");

else printf("+\t");

}

printf("第%d行\n\n", i);

}

二、判断位置超范围与错误输入

当输入的棋子坐标超出范围或者该位置已经存在棋子,则再次输入棋子坐标。其中flag作为标志作为判别黑手白手的标志。

if (flag == 0) {

printf("黑色下棋\n");

scanf("%d %d", &a, &b);

while (a < 0 || a>10 || b < 0 || b>10) {

printf("此位置超出范围,请重新输入:");

scanf("%d %d", &a, &b);

}

while (w[a][b] == 0 || w[a][b] == 1)

{

printf("此位置已有棋子,请重新输入:");

scanf("%d %d", &a, &b);

}

flag = 1;

w[a][b] = 0;

}

else {

printf("白色下棋\n");

scanf("%d %d", &a, &b);

while (a < 0 || a>10 || b < 0 || b>10) {

printf("此位置超出范围,请重新输入:");

scanf("%d %d", &a, &b);

}

while (w[a][b] == 0 || w[a][b] == 1)

{

printf("此位置已有棋子,请重新输入:");

scanf("%d %d", &a, &b);

}

三、判断胜负

在五子棋中,出现五个棋子排成一排或者一列或者斜排即可判为胜出。每当落下一个棋子,对该棋子前后上下斜排五个棋子进行判别,超过五个连续的一样颜色的棋子则胜出。

int A = 1, B = 1, jieguo = 0, C = 1, D = 1;

int x = 1, y = 1, m = 1, n = 1;

if (w[a][b] == 1) {

for (int i = 1; i < 5; i++) {

if (w[a][b + i] == 1) A++;

else break;

}

for (int i = 1; i < 5; i++) {

if (w[a][b - i] == 1) A++;

else break;

}

for (int i = 1; i < 5; i++)

{

if (w[a+i][b] == 1) C++;

else break;

}

for (int i = 1; i < 5; i++)

{

if (w[a - i][b] == 1) C++;

else break;

}

if (A > 4 || C > 4) jieguo = 1;//白棋胜利标志

else {

for (int i = 1; i < 5; i++) {

if (w[a+i][b + i] == 1) x++;

else break;

}

for (int i = 1; i < 5; i++) {

if (w[a-i][b - i] == 1) x++;

else break;

}

for (int i = 1; i < 5; i++)

{

if (w[a + i][b-i] == 1) y++;

else break;

}

for (int i = 1; i < 5; i++)

{

if (w[a - i][b+i] == 1) y++;

else break;

}

if (x > 4 || y > 4) jieguo = 1;

}

}

if (w[a][b] == 0) {

for (int i = 1; i < 5; i++) {

if (w[a][b + i] == 0) B++;

else break;

}

for (int i = 1; i < 5; i++) {

if (w[a][b - i] == 0) B++;

else break;

}

for (int i = 1; i < 5; i++)

{

if (w[a + i][b] == 0) D++;

else break;

}

for (int i = 1; i < 5; i++)

{

if (w[a - i][b] == 0) D++;

else break;

}

if (B > 4 || D > 4) jieguo = 2;//黑棋胜利标志

else {

for (int i = 1; i < 5; i++) {

if (w[a + i][b + i] == 0) m++;

else break;

}

for (int i = 1; i < 5; i++) {

if (w[a - i][b - i] == 0) m++;

else break;

}

for (int i = 1; i < 5; i++)

{

if (w[a + i][b - i] == 0) n++;

else break;

}

for (int i = 1; i < 5; i++)

{

if (w[a - i][b + i] == 0) n++;

else break;

}

if (m > 4 || n > 4) jieguo = 2;

}

}

程序完成

四、演示结果

五、源代码

int main() {

int w[11][11], flag = 0;

int a, b;

while (1) {

if (flag == 0) {

printf("黑色下棋\n");

scanf("%d %d", &a, &b);

while (a < 0 || a>10 || b < 0 || b>10) {

printf("此位置超出范围,请重新输入:");

scanf("%d %d", &a, &b);

}

while (w[a][b] == 0 || w[a][b] == 1)

{

printf("此位置已有棋子,请重新输入:");

scanf("%d %d", &a, &b);

}

flag = 1;

w[a][b] = 0;

}

else {

printf("白色下棋\n");

scanf("%d %d", &a, &b);

while (a < 0 || a>10 || b < 0 || b>10) {

printf("此位置超出范围,请重新输入:");

scanf("%d %d", &a, &b);

}

while (w[a][b] == 0 || w[a][b] == 1)

{

printf("此位置已有棋子,请重新输入:");

scanf("%d %d", &a, &b);

}

flag = 0;

w[a][b] = 1;

}

int A = 1, B = 1, jieguo = 0, C = 1, D = 1;

int x = 1, y = 1, m = 1, n = 1;

if (w[a][b] == 1) {

for (int i = 1; i < 5; i++) {

if (w[a][b + i] == 1) A++;

else break;

}

for (int i = 1; i < 5; i++) {

if (w[a][b - i] == 1) A++;

else break;

}

for (int i = 1; i < 5; i++)

{

if (w[a+i][b] == 1) C++;

else break;

}

for (int i = 1; i < 5; i++)

{

if (w[a - i][b] == 1) C++;

else break;

}

if (A > 4 || C > 4) jieguo = 1;//白棋胜利标志

else {

for (int i = 1; i < 5; i++) {

if (w[a+i][b + i] == 1) x++;

else break;

}

for (int i = 1; i < 5; i++) {

if (w[a-i][b - i] == 1) x++;

else break;

}

for (int i = 1; i < 5; i++)

{

if (w[a + i][b-i] == 1) y++;

else break;

}

for (int i = 1; i < 5; i++)

{

if (w[a - i][b+i] == 1) y++;

else break;

}

if (x > 4 || y > 4) jieguo = 1;

}

}

if (w[a][b] == 0) {

for (int i = 1; i < 5; i++) {

if (w[a][b + i] == 0) B++;

else break;

}

for (int i = 1; i < 5; i++) {

if (w[a][b - i] == 0) B++;

else break;

}

for (int i = 1; i < 5; i++)

{

if (w[a + i][b] == 0) D++;

else break;

}

for (int i = 1; i < 5; i++)

{

if (w[a - i][b] == 0) D++;

else break;

}

if (B > 4 || D > 4) jieguo = 2;//黑棋胜利标志

else {

for (int i = 1; i < 5; i++) {

if (w[a + i][b + i] == 0) m++;

else break;

}

for (int i = 1; i < 5; i++) {

if (w[a - i][b - i] == 0) m++;

else break;

}

for (int i = 1; i < 5; i++)

{

if (w[a + i][b - i] == 0) n++;

else break;

}

for (int i = 1; i < 5; i++)

{

if (w[a - i][b + i] == 0) n++;

else break;

}

if (m > 4 || n > 4) jieguo = 2;

}

}

for (int k = 0; k < 11; k++)

printf("第%d列\t", k);

printf("\n");

for (int i = 0; i < 11; i++) {

for (int j = 0; j < 11; j++) {

if (w[i][j] == 0) printf("黑\t");

else if (w[i][j] == 1) printf("白\t");

else printf("+\t");

}

printf("第%d行\n\n", i);

}

if (jieguo == 1) {

printf("白棋胜利");

break;

}

if (jieguo == 2) {

printf("黑棋胜利");

break;

}

}

return 0;

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

c语言编写五子棋报告,C语言编写五子棋游戏相关推荐

  1. C语言实践作业报告,c语言社会实践报告

    资料简介 c 语言社会实践报告 c 语言社会实践报告 随着个人素质的提升,越来越多的事务都会使用到报告,报告 中提到的所有信息应该是准确无误的. 相信许多人会觉得报告很难写 吧,下面是为大家的 c 语 ...

  2. c语言编写五子棋报告,c语言报告五子棋.pdf

    C 语言课程设计报告 c 题目: 简单的 五子棋 设计者: 方阳 专业班级: 软件工程1303班 学号: 311309060324 指导老师: 刘洁 所属系部: 计算机学院 2014年6月25 日 河 ...

  3. c语言初步实验报告,c语言实验报告(大一c语言实验报告答案)

    哪位帮我一下啊,我这有个作业,要写C语言程序设计实验报告,包括五个部. 最低0.27元/天开通百度文库会员,可在文库查看完整内容> 原发布者:aming7728081 计算机科学与技术系C语言实 ...

  4. 华北科技c语言综合实验报告,C语言综合性实验报告1.doc

    C语言综合性实验报告1.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档 ...

  5. c语言专业实习报告,C语言个人实习报告(范文1)

    <C语言个人实习报告.doc>由会员分享,可免费在线阅读全文,更多与<C语言个人实习报告>相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索. 1.好的学 ...

  6. c语言四则运算实验报告,c语言四则运算实验报告.doc

    c语言四则运算实验报告.doc 课程编号 1300050027 得分教师签名批改日期深 圳 大 学 实 验 报 告课程名称 C语言实验 实验名称 100以内的四则运算游戏 学 院 信息工程学院 指导教 ...

  7. 杂志订阅管理系统c语言实训报告,C语言程序设计报告—杂志订阅管理软件、、.doc...

    C语言程序设计报告-杂志订阅管理软件.. 中国地质大学(武汉)C语言课程设计报告 学 院: 专 业: 题 目: 杂志订阅管理系统 班 级: 姓 名: 学 号: 指导教师: 2011年1月9日 程序在最 ...

  8. c语言程序设计实验8,c语言程序设计实验报告8_c语言实验报告格式及实验内容_c语言设计报告...

    实验名称 计算出1000以内10个最大素数之和 实验目的 1.熟练掌握if.if-else.if-else if语句和witch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和s ...

  9. c语言考试系统设计报告,c语言课程设计报告单项选择题标准化考试系统.doc

    c语言课程设计报告单项选择题标准化考试系统.doc <C语言程序设计>课程设计题目:单项选择题标准化考试系统专业:计算机科学与技术班级:计科1001目录<C语言程序设计>课程设 ...

  10. c语言程序实习报告,c语言程序设计实习报告程序

    <c语言程序设计实习报告程序>由会员分享,可在线阅读,更多相关<c语言程序设计实习报告程序(12页珍藏版)>请在人人文库网上搜索. 1.include stdio.h/* 定义 ...

最新文章

  1. 【ACM】二叉搜索树(Binary Search Tree /BS Tree) 小结
  2. python操作neo4j
  3. 【c语言】蓝桥杯算法提高 统计平均成绩
  4. android手势放大自动还原,ImageView通过matrix实现手势缩放,放大,缩小 ,移动
  5. 查看端口被占用,被结束此端口占用
  6. Python基础教程(十):CGI编程、MySQL数据库
  7. Client does not support authentication protocol requested by server;
  8. RPC实现Provider服务端业务逻辑
  9. Hibernate- QBC-基本查询
  10. 腾讯云加入自媒体分享计划可以免费领取.cn域名啦
  11. Python画板画图之美
  12. win7纯净版系统锁定系统时间的设置方法
  13. Spring Cloud微服务之Mybatis-Plus代码生成器整合(四)
  14. mysql启动失败2005_数据库2005服务启动不了
  15. 任正非:华为不会拆分;以色列公司称可解锁所有 iOS 设备;Java 13 要来了! | 极客头条...
  16. 小规模零申报完整报税流程
  17. 计算机双人游戏玩不了,PC上的双人单机游戏
  18. 杭州第二机场选址的三个备选方案仁和、瓶窑、塘栖中选择瓶窑的理由。元芳,你怎么看?
  19. java-家庭作业3
  20. 常规配置中的CAN模块操作

热门文章

  1. 使用IDEA反编译class文件
  2. 基于JavaWEB+MySQL的宾馆管理系统设计与实现
  3. 应用--学生宿舍卫生管理系统
  4. 落实安全生产责任,施工单位双重预防体系智能化管理解决方案
  5. 零基础学FPGA(二):FPGA生产厂家及产品(呕心沥血,小白如何选择板卡)
  6. python-opencv 帧差法目标检测
  7. Kconfig使用介绍
  8. vue实现点击图片放大显示功能
  9. 典型相关分析(CCA)原理及例子
  10. 非对称密钥/对称密钥加解密工具