先看下效果


#include <stdio.h>
#include <stdlib.h>
#include<time.h>
void dyqp();//声明一下函数 打印棋盘
void dnxq();//声明一下函数 电脑下棋
void wjxq();//声明一下函数 玩家下棋
int pdsy();//声明一下函数 判断输赢

int  qp[9] = {0}; //棋盘数组 1表示人下,-1表示电脑下,0表示空的
int main(){
    int js;//结束标记,等于1表示游戏结束了
    dyqp();//打印棋盘
    printf("输入要下的位置\n");
    while (1){
        wjxq();
        js=pdsy();
        if (js == 1){//等于1表示游戏结束了
            break;
        }
        dnxq();
        js=pdsy();
        if (js == 1){//结束标记,等于1表示游戏结束了
            break;
        }
    }
    
    
    system("pause");
    return 0;
}

void dyqp(){//打印棋盘  1表示人下,-1表示下,0表示空的
    int i;
    printf("------------\n");
    for (i = 0; i <= 8; i++){
        if (qp[i] == 0){//0表示空的,空的打印下划线
            printf("__ |");
        }
        if (qp[i] == 1){
            printf("X  |");//1表示人下,人下打印X
        }
        if (qp[i] == -1){
            printf("O  |");//-1表示电脑下,电脑下打印O
        }
        if (i == 2 || i == 5||i==8){
            printf("\n");//打印换行
        }
    }
    printf("------------\n");
    return;
}
void dnxq(){//电脑下棋
    while (1){
        srand((unsigned int)time(NULL));
        int dn = rand() % 9;//电脑下棋,随机产生0-8
        if (qp[dn] == 0){//如果这个位置没人下过,就下,否则while循环,继续产生新的随机数
            qp[dn] = -1;
            break;
        }
    }    
    dyqp();//电脑下棋后打印棋盘
    return;
}
void wjxq(){//玩家下棋
    
        int wj; //表示玩家输入的位置  从0-8中选
        scanf_s("%d", &wj);
        qp[wj] = 1;
        dyqp();
    return ;
}
int pdsy(){// 判断输赢
    //0  1  2
    //3  4  5
    //6  7  8
    //如果三行 三列 2对角线等于3,就是玩家赢 等于-3就是电脑赢,都不满足就是和
    if (qp[0] + qp[1] + qp[2] == 3||
        qp[3] + qp[4] + qp[5] == 3 ||
        qp[6] + qp[7] + qp[8] == 3 ||

qp[0] + qp[3] + qp[6] == 3 ||
        qp[1] + qp[4] + qp[7] == 3 ||
        qp[2] + qp[5] + qp[8] == 3 ||

qp[0] + qp[4] + qp[8] == 3 ||
        qp[2] + qp[4] + qp[6] == 3
        ){
        printf("玩家赢\n");
        return 1;//返回1表示游戏结束了
    }
    else if (
        qp[0] + qp[1] + qp[2] == -3 ||
        qp[3] + qp[4] + qp[5] == -3 ||
        qp[6] + qp[7] + qp[8] == -3 ||

qp[0] + qp[3] + qp[6] == -3 ||
        qp[1] + qp[4] + qp[7] == -3 ||
        qp[2] + qp[5] + qp[8] == -3 ||

qp[0] + qp[4] + qp[8] == -3 ||
        qp[2] + qp[4] + qp[6] == -3

){
        printf("电脑赢\n");
        return 1;//返回1表示游戏结束了
    }
    else {//不是玩家赢,也不是电脑赢,并且棋盘不是空的,那就是和棋
        int i;
        for (i = 0; i <= 8; i++){
            if (qp[i] == 0){//等于0说明棋盘不空,返回
                return 0;
            }
        }
        printf("和棋\n");//都不等于0,和棋
        return 1;//返回1表示游戏结束了
    }

return 0;
}

C语言井字棋命令行版相关推荐

  1. 哈哈哈~井字棋(无心版),快来初步感受一下代码世界的乐趣吧

    文章目录 前言 正文 一,游戏实现基本流程 二.游戏实现步骤 1.创建工程及分配功能 2.给头文件上内容 3.当当当,主函数出场 4.游戏函数里面:打印游戏菜单 5.棋盘初始化 6.打印棋盘 7.玩家 ...

  2. c语言井字棋程序设计报告,井字棋游戏(课程设计)总结报告.doc

    井字棋游戏(课程设计)总结报告 C语言贪吃蛇游戏设计总结报告 PAGE PAGE 5 丽水学院 计算机信息学院 <C语言课程设计(短一)> 指 导 书 二 ○ 一一 年 三 附件二 封面格 ...

  3. C语言井字棋电脑相互对战

    用C语言实现的井字棋电脑相互对战游戏,仅作个人记录 head.c #include<stdio.h> #include<stdbool.h> #include<windo ...

  4. c语言井字棋程序框图,C语言实现井字棋(三子棋)

    本文实例为大家分享了C语言实现井字棋的具体代码,供大家参考,具体内容如下 一.实现思路 1.初始化数组 三子棋是九宫格的格式,所以用二维数组接收数据.用'O"代表电脑下的子,'X" ...

  5. C语言 VS2019编译器实现简易井字棋小游戏~

    文章目录 井字棋小游戏 游戏实现 一.创建新项目及游戏文件 二.引头文件,定义符号 三.主函数 打印菜单 四.开始游戏 1.创建二维数组 2.初始化棋盘 3.打印棋盘 4.玩家下棋 5.电脑下棋 6. ...

  6. 又是下棋篇——井字棋( •̀ ω •́ )✧具体实现过程

    C语言井字棋的实现方法之一 井字棋作为最简单的一种下棋类型,实现难度并不高,同时和我之前写的五子棋的实现本质是一样的. 通过判断四个方向上连续三个棋子是不是一致的,从而判断是否三子成线,赢得了游戏. ...

  7. C语言小游戏->井字棋

    井字棋想必大家都玩过,今天教大家一个用C语言写一个井字棋小游戏 这个游戏大致可以分为两个部分:游戏菜单和游戏过程. 首先就是创建一个menu()函数来写菜单页面 这里出现了不同指令对应的结果,即输入1 ...

  8. C语言实现小游戏之井字棋

    目录 前言 一.井字棋游戏的主流程 二.游戏部分 1.游戏函数 2.初始化棋盘 3.打印棋盘 4.玩家下棋 5.电脑下棋(两个难度等级) 6.判断游戏是否结束 三. 源码展示 总结 前言 这是我在学习 ...

  9. C语言第十课:编写井字棋游戏(综合练习1)

    目录 前言: 一.文件建立: 1.头文件game.h: 2.函数定义文件game.c: 3.工程测试文件test.c: 二.编写井字棋游戏: 1.程序整体执行思路: 2.menu菜单函数实现: 3.g ...

最新文章

  1. 人工智能激活千亿级交通安全市场
  2. 【解决】Word 在试图打开文件时遇到错误 请尝试下列方法:* xxx * xxx * xxx
  3. 【MATLAB】基本绘图 ( 线条设定 | 线条设定组合 )
  4. postman接口测试系列:接口参数化和参数的传递
  5. php程序员可能不了解的编程细节
  6. python列表推导式格式_Python列表推导式(for表达式)及用法
  7. ubuntu16 自启动mysql_Ubuntu16.04关闭apache/mysql/php的开机启动
  8. while循环语句用法_EXCEL退出DO LOOP循环语句|until、while
  9. Equipment delta download debug from ERP side
  10. powerbi的功能介绍_Power BI:1分钟快速生成可视化报表
  11. vue 项目如何引入微信sdk,使用微信接口
  12. sass报 error (Line XX: Invalid GBK character \xE4) 的解决办法
  13. 神经网络基础模型--Logistic Regression的理论和实践
  14. win7 计算器 android,win7计算器
  15. 笔记本电脑装android系统安装教程,电脑上安装Android 10小白教程,大屏Android用起来...
  16. Redis 哨兵安装-Centos
  17. ip地址与long数值互相转换
  18. Oracle什么情况使用omf,ORACLE OMF介绍
  19. java io broken pipe解决_报错!!java.io.IOException: 断开的管道 中文报错?Broken pipe?这次发生的报错不影响业务,已有解决方案...
  20. Flex布局实战:支付宝首页

热门文章

  1. Java基础入门必备词汇汇
  2. KubeEdge设备接入应用的调试
  3. 青楼梦-(在这里定一个小目标哈)
  4. 全文同音文言文——智侄治蛭
  5. ISO 11898,14229,15765,UDS的区别?
  6. 【Mac】Macbook Finder 从当前位置快速打开终端
  7. 做技术的,如何保持一个好心态!
  8. (附源码)springboot基于vue.js的掌上博客系统的设计与实现 毕业设计 063131
  9. 第七章第三题(计算数字的出现次数)(Count occurrence of numbers) - 编程练习题答案
  10. 英特尔中国研究院深度学习领域最新成果——“动态外科手术”算法