先看下效果


#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. 【软件测试】4、测试用例的设计
  2. 面向对象编程 - 练习题
  3. Python(88)_双下划线方法
  4. java虚拟机源码怎么看_java虚拟机JVM第4讲:从源代码到机器码,发生了什么?
  5. 移动数据网络类型是nr_便携式移动网络的快速搭建方法
  6. AcWing 4801 选数(二维费用背包的建立)
  7. 使用hexo+GitHub搭建步骤
  8. 罚函数(penalty function)的设计
  9. 【AAAI2021】NLP所有方向论文列表(情感分析、句法、NER、对话/问答、关系抽取、KD等)...
  10. 音视频的采集、编码、封包成 mp4 输出
  11. 【Arduino实验17 L298N 电机驱动模块】
  12. C语言读取松下PLC数据,松下PLC数据表在程序中的使用
  13. 新版标准日本语高级_第13课
  14. 暮然回首,发现自己已经老了
  15. 小机器人显示服务器异常,机器人常见异常报警处理、及日常维护保养。
  16. wordpress友联_WordPress制作独立的友情链接(Links)页面
  17. 如何用空气质量查询API接口进行快速开发
  18. 数商云采购管理系统方案助力采购平台:缩短采购周期、降本增效
  19. 笔记:FPGA与VHDL语言学习1
  20. 在C#中调用Win32函数EnumWindows枚举所有窗口。

热门文章

  1. mt7620芯片处理器核心资料
  2. 郑州轻工业大学ACM(zzuli OJ 54)
  3. 主营女性内容生产,木棉说获A轮3000万融资
  4. 百度网盘官方推出的“下载提速”方法 — 免会员
  5. 美国一年就印了6个币圈市值出来,钱都去哪了?
  6. 通过OpenSSL生成证书并让Chrome浏览器识别为安全终极办法
  7. 关于对话框与GetDocument()函数的使用心得
  8. Excel中文转拼音(完整版)
  9. 如何在bios里调节风扇转速
  10. 360浏览器 Adobe Flash Player插件怎么开启