C语言编程三子棋程序代码,C语言实现三子棋源代码
本文实例为大家分享了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语言实现三子棋源代码相关推荐
- python语言能够整合各类程序代码-python语言概述
python语言的发展 python语言诞生于1990年,由Guide van Rossum设计并领导开发. python语言是开源项目的优秀代表,其解释器的全部代码都是开源的. 编写Hello程序 ...
- c语言编程员工管理的代码,员工信息管理完整(含附源代码).doc
西安郵電學院 高级语言课程设计报告 题 目: 员 工 信 息 管 理 系 统 系部名称 : 电信系 专业名称 : 电子科学与技术 班 级 : 科技0701 班内序号 : 33 学生姓名 : 贾 春 阳 ...
- c语言实现udp 聊天程序代码,C语言用UDP 实现局域网聊天程序源码.doc
您所在位置:网站首页 > 海量文档  > 计算机 > C/C++资料 C语言用UDP 实现局域网聊天程序源码.doc1 ...
- c语言编程学生管理系统的代码,C语言学生管理系统源代码.doc
C语言学生成绩管理系统源代码,保证能用-- #include "malloc.h" #include "stdio.h" #include "stdl ...
- c语言小学生加法考试题程序4,c语言编程题与答案4.doc
c语言编程题与答案4 c语言编程题及答案(三) 1. 给小学生出加法考试题 编写一个程序,给学生出一道加法运算题,然后判断学生输入的答案对错与否,按下列要求以循序渐进的方式编程. 程序1 通过输入两个 ...
- linux+下c语言编程项目,精通UNIX下C语言编程与项目实践
cc -I //include 目录 -L //静态库目录?动态也可以 -l //小写L,接静态库名称?动态也可以 -DXXX='"XXFF"' //-D直接定义宏 -c 只编译 ...
- c语言编程学多久,丰城c语言编程学习,丰城学c语言编程的学校,丰城学c语言编程一般要多久才能学会...
丰城c语言编程学习,丰城学c语言编程的学校,丰城学c语言编程一般要多久才能学会 首页 > 软件 > 丰城c语言编程学习 作者:镀金池 发布时间:2018-04-09 16:40 在之后 ...
- 湛江C语言培训,湛江c语言编程学习,湛江学c语言编程报班,湛江学c语言编程自学好还是报班好...
湛江c语言编程学习,湛江学c语言编程报班,湛江学c语言编程自学好还是报班好 首页 > C语言 > 湛江c语言编程学习 作者:镀金池 发布时间:2017-10-19 09:51 在Swi ...
- c语言程序设计自学跟谁好,双辽c语言编程学习,双辽学c语言编程哪个好,双辽学c语言编程自学好还是报班好...
双辽c语言编程学习,双辽学c语言编程哪个好,双辽学c语言编程自学好还是报班好 首页 > 软件 > 双辽c语言编程学习 作者:镀金池 发布时间:2017-12-07 05:48 一个C语 ...
- c语言程序设计需要学多久,九江c语言编程学习,九江学c语言编程报班,九江学c语言编程一般要多久才能学会...
九江c语言编程学习,九江学c语言编程报班,九江学c语言编程一般要多久才能学会 首页 > C语言 > 九江c语言编程学习 作者:镀金池 发布时间:2017-10-18 14:11 据ID ...
最新文章
- cookie的简单学习
- LINQ标准查询操作符
- 在GridView中的批量删除!
- 【重点EI会议推荐】机器学习主题方向论文征稿:2021计算机、物联网与控制工程国际学术会议(CITCE 2021)...
- IntelliJ IDEA for Mac在MacOS模式下的版本控制/本地历史记录快捷键(VCS and Local History Shortcut)
- HTML学习笔记:贵美主页框架演示
- 【原创】分享一个分析函数统计案例
- 【手写数字识别】基于matlab GUI模板匹配手写数字识别【含Matlab源码 094期】
- java 线程池的原理与实现_Java线程池原理及实现
- 我们——程序员应该关注,功能?设计?
- 计算机硬盘吱吱响,电脑硬盘吱吱响怎么回事
- ClickHouse安装部署
- 邹城机器人产业园出租_华丰机器人产业园写字楼出租出售租赁出租我们是专
- app系统服务器出错怎么回事,app连接服务器出错
- 企业微信机器人脚本python_python3 企业微信机器人发送图片
- 为什么说C++太复杂(复杂到哪了?)
- mysql的partition_MySQL分区(Partition)
- NOI / 1.5编程基础之循环控制——02:财务管理
- 抖音赚钱记,新手如何玩转抖音,每天赚300起(连载九)
- 笔记本连接不上外接显示器_如何将多个外接显示器连接到笔记本电脑
热门文章
- 51单片机数字电压表仿真设计_LCD显示
- 《认知与设计——理解UI设计准则》笔记(1) 我们感知自己的期望
- 详解电源反接使用MOS管保护电路原理及其优势
- python考拉兹猜想_考拉兹猜想的变体
- 【LaTeX试卷】天津大学仁爱学院高等数学试卷 LaTeX模板
- PM notifier
- Win10 如何删除系统盘大文件hiberfil.sys
- android电视识别多区u盘,电视机插入U盘,识别不了APK?原因都在这了
- 命令行如何 copy 文件内容到剪切板(clipboard)?
- SSH known_hosts / authorized_keys 的解释