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

效果如下:

代码实现:

头文件部分

#pragma once

#include

#include

#include

#define ROW 3

#define COL 3

//函数声明

void Initboard(char board[ROW][COL], int row, int col);

void Displayboard(char board[ROW][COL], int row, int col);

Player(char board[ROW][COL], int row, int col);

Computer(char board[ROW][COL], int row, int col);

char Judge(char board[ROW][COL], int row, int col);

函数部分

#include "game.h"

void Initboard(char board[ROW][COL], int row, int col)

{

int i = 0;

int j = 0;

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

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

board[i][j] = ' ';

}

//棋盘

// x | x | x

//---|---|---

// x | x | x

//---|---|---

// x | x | x

void Displayboard(char board[ROW][COL], int row, int col)

{

int i = 0;

int j = 0;

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

{

//打印一行数据

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

{

printf(" %c ", board[i][j]);

if (j < col - 1)

printf("|");

}

printf("\n");

//打印分隔行

if(i

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

{

printf("---");

if (j < col - 1)

printf("|");

}

printf("\n");

}

}

Player(char board[ROW][COL], int row, int col)

{

while (1)

{

int x = 0;

int y = 0;

printf("请输入你的棋子坐标(如第一行第一列为1 1):\n");

scanf("%d%d", &x, &y);

if (x <= row && x >= 1 && y <= col && y >= 1)

{

if (board[x - 1][y - 1] == ' ')

{

board[x - 1][y - 1] = '*';

break;

}

else

{

printf("该处已有棋子,请重新输入\n");

continue;

}

}

else

printf("坐标范围错误,请重新输入");

}

}

Computer(char board[ROW][COL], int row, int col)

{

int x = 0;

int y = 0;

while (1)

{

x = rand() % ROW;

y = rand() % COL;

if (board[x][y] == ' ')

{

board[x][y] = '#';

break;

}

}

}

int IsFull(char board[ROW][COL], int row, int col)//返回1表示棋盘已满,0表示棋盘没满

{

int i, j;

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

{

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

if (board[i][j] == ' ')

return 0;

}

return 1;

}

char Judge(char board[ROW][COL], int row,int col)

{

int i = 0;

//行有三个相连的情况

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

{

if (board[i][0] == board[i][1] && board[i][1]==

board[i][2] && board[i][0] != ' ')

return board[i][0];

}

//列有三个相连的情况

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

{

if (board[0][i] == board[1][i] && board[1][i]==

board[2][i] && board[0][i] != ' ')

return board[0][i];

}

//对角线三个相连的情况

if (board[0][0] == board[1][1]&& board[1][1]==board[2][2]&&board[0][0]!=' '

|| board[0][2] == board[1][1]&&board[1][1] == board[2][0]&&board[0][2] != ' ')

return board[1][1];

//平局的情况(棋盘满了)

if (IsFull( board , ROW,COL) ==1)

{

return 'E';

}

return 'C';

}

主函数部分

#include "game.h"

void menu()

{

printf("***************************\n");

printf("***1.开始游戏 0.退出游戏***\n");

printf("***************************\n");

printf("请输入数字1或0:");

}

void game()

{

char r;

char board[ROW][COL] = { 0 };

//初始化棋盘(清空棋盘)

Initboard(board, ROW, COL);

//打印棋盘

Displayboard(board, ROW, COL);

//人机对弈

while (1)

{

Player(board, ROW, COL);

Displayboard(board, ROW, COL);

r = Judge(board, ROW, COL);

if (r != 'C')

break;

Computer(board, ROW, COL);

Displayboard(board, ROW, COL);

r = Judge(board, ROW, COL);

if (r != 'C')

break;

}

//判断输赢

if (r == '*')

{

printf("玩家赢\n");

}

else if (r == '#')

{

printf("电脑赢\n");

}

else if (r == 'E')

{

printf("平局\n");

}

}

int main()

{

srand((unsigned int)time(NULL));

int input = 0;

do

{

menu();

scanf("%d", &input);

switch (input)

{

case 1:

printf("开始游戏\n");

game();

break;

case 0:

printf("退出游戏\n");

break;

default:

printf("请输入正确的选项\n");

break;

}

} while (input);

printf("游戏结束!");

return 0;

}

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

C语言编程三子棋程序代码,C语言实现三子棋源代码相关推荐

  1. python语言能够整合各类程序代码-python语言概述

    python语言的发展 python语言诞生于1990年,由Guide van Rossum设计并领导开发. python语言是开源项目的优秀代表,其解释器的全部代码都是开源的. 编写Hello程序 ...

  2. c语言编程员工管理的代码,员工信息管理完整(含附源代码).doc

    西安郵電學院 高级语言课程设计报告 题 目: 员 工 信 息 管 理 系 统 系部名称 : 电信系 专业名称 : 电子科学与技术 班 级 : 科技0701 班内序号 : 33 学生姓名 : 贾 春 阳 ...

  3. c语言实现udp 聊天程序代码,C语言用UDP 实现局域网聊天程序源码.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspC/C++资料 C语言用UDP 实现局域网聊天程序源码.doc1 ...

  4. c语言编程学生管理系统的代码,C语言学生管理系统源代码.doc

    C语言学生成绩管理系统源代码,保证能用-- #include "malloc.h" #include "stdio.h" #include "stdl ...

  5. c语言小学生加法考试题程序4,c语言编程题与答案4.doc

    c语言编程题与答案4 c语言编程题及答案(三) 1. 给小学生出加法考试题 编写一个程序,给学生出一道加法运算题,然后判断学生输入的答案对错与否,按下列要求以循序渐进的方式编程. 程序1 通过输入两个 ...

  6. linux+下c语言编程项目,精通UNIX下C语言编程与项目实践

    cc -I  //include 目录 -L //静态库目录?动态也可以 -l //小写L,接静态库名称?动态也可以 -DXXX='"XXFF"' //-D直接定义宏 -c 只编译 ...

  7. c语言编程学多久,丰城c语言编程学习,丰城学c语言编程的学校,丰城学c语言编程一般要多久才能学会...

    丰城c语言编程学习,丰城学c语言编程的学校,丰城学c语言编程一般要多久才能学会 首页 > 软件 > 丰城c语言编程学习 作者:镀金池   发布时间:2018-04-09 16:40 在之后 ...

  8. 湛江C语言培训,湛江c语言编程学习,湛江学c语言编程报班,湛江学c语言编程自学好还是报班好...

    湛江c语言编程学习,湛江学c语言编程报班,湛江学c语言编程自学好还是报班好 首页 > C语言 > 湛江c语言编程学习 作者:镀金池   发布时间:2017-10-19 09:51 在Swi ...

  9. c语言程序设计自学跟谁好,双辽c语言编程学习,双辽学c语言编程哪个好,双辽学c语言编程自学好还是报班好...

    双辽c语言编程学习,双辽学c语言编程哪个好,双辽学c语言编程自学好还是报班好 首页 > 软件 > 双辽c语言编程学习 作者:镀金池   发布时间:2017-12-07 05:48 一个C语 ...

  10. c语言程序设计需要学多久,九江c语言编程学习,九江学c语言编程报班,九江学c语言编程一般要多久才能学会...

    九江c语言编程学习,九江学c语言编程报班,九江学c语言编程一般要多久才能学会 首页 > C语言 > 九江c语言编程学习 作者:镀金池   发布时间:2017-10-18 14:11 据ID ...

最新文章

  1. cookie的简单学习
  2. LINQ标准查询操作符
  3. 在GridView中的批量删除!
  4. 【重点EI会议推荐】机器学习主题方向论文征稿:2021计算机、物联网与控制工程国际学术会议(CITCE 2021)...
  5. IntelliJ IDEA for Mac在MacOS模式下的版本控制/本地历史记录快捷键(VCS and Local History Shortcut)
  6. HTML学习笔记:贵美主页框架演示
  7. 【原创】分享一个分析函数统计案例
  8. 【手写数字识别】基于matlab GUI模板匹配手写数字识别【含Matlab源码 094期】
  9. java 线程池的原理与实现_Java线程池原理及实现
  10. 我们——程序员应该关注,功能?设计?
  11. 计算机硬盘吱吱响,电脑硬盘吱吱响怎么回事
  12. ClickHouse安装部署
  13. 邹城机器人产业园出租_华丰机器人产业园写字楼出租出售租赁出租我们是专
  14. app系统服务器出错怎么回事,app连接服务器出错
  15. 企业微信机器人脚本python_python3 企业微信机器人发送图片
  16. 为什么说C++太复杂(复杂到哪了?)
  17. mysql的partition_MySQL分区(Partition)
  18. NOI / 1.5编程基础之循环控制——02:财务管理
  19. 抖音赚钱记,新手如何玩转抖音,每天赚300起(连载九)
  20. 笔记本连接不上外接显示器_如何将多个外接显示器连接到笔记本电脑

热门文章

  1. 51单片机数字电压表仿真设计_LCD显示
  2. 《认知与设计——理解UI设计准则》笔记(1) 我们感知自己的期望
  3. 详解电源反接使用MOS管保护电路原理及其优势
  4. python考拉兹猜想_考拉兹猜想的变体
  5. 【LaTeX试卷】天津大学仁爱学院高等数学试卷 LaTeX模板
  6. PM notifier
  7. Win10 如何删除系统盘大文件hiberfil.sys
  8. android电视识别多区u盘,电视机插入U盘,识别不了APK?原因都在这了
  9. 命令行如何 copy 文件内容到剪切板(clipboard)?
  10. SSH known_hosts / authorized_keys 的解释