1.头文件部分
#ifndef _THREE_CHESSH
#define _THREE_CHESSH

#include<stdio.h>
#include<windows.h>
#include<string.h>
#include<time.h>
#pragma warning(disable:4996)

#define ROW 3
#define COL 3

void ShowUI();
void Game();
void ComputerMove(char board[ROW][COL], int row, int col);
void PlayerMove(char board[][COL], int row, int col);
void ShowBoard(char board[][COL], int row, int col);
char Judge(char board[][COL], int row, int col);

#endif

2.主函数部分
#include"Three_Chess.h"

int main()
{
int select = 0;
int quit = 0;
while (!quit)
{
ShowUI(); //打印游戏菜单
scanf("%d", &select); //用户进行选择
switch (select)
{
case 1: //进入游戏函数
Game();
break;
case 2: //退出游戏
quit = 1;
printf("ByeBye!\n");
break;
default:
printf("Please Enter Again!\n");
break;
}
}
system("pause");
return 0;
}

3.游戏函数部分
#define _CRT_SECURE_NO_WARNINGS 1
#include"THREE_CHESS.h"
void ShowUI()
{
printf("\n");
printf("
1、GAME 2、EXIT \n");
printf("
\n");
printf("Please Select:\n");
}
void ComputerMove(char board[][COL], int row, int col)
{
while (1)
{
int x = rand() % row;
int y = rand() % col;
if (board[x][y] == ' ') //判断此位置是否为空,如果为空就赋值'O'表示电脑走在此位置
{
board[x][y] = 'O';
break; //退出循环
}
}
}
void PlayerMove(char board[][COL], int row, int col)
{
int x, y;
while (1)
{
printf("Please enter position->x y:\n");
scanf("%d %d", &x, &y); //输入坐标
if (x >= 1 && x <= row && y >= 1 && y <= col)
{ //判断输入的坐标是否满足条件
if (board[x - 1][y - 1] == ' ') //用户输入的下标是从1开始的,而数组下标是从0开始的,所以这里要对x和y减1
{
board[x - 1][y - 1] = 'X'; //用户将X下入棋盘
break;
}
else
{
printf("Your place is taken,Try Again:\n");
}
}
else
{
printf("Enter error,Try Again:\n");
}
}
}
char Judge(char board[][COL], int row, int col)//判断函数
{
int i = 0;
int j = 0;
for (i = 0; i < row; i++)
{
if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][2] != ' ')
{
return board[i][0];
}
}
for (i = 0; i < col; i++)
{
if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[2][i] != ' ')
{
return board[0][i];
}
}
if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[2][2] != ' ')
{
return board[0][0];
}
if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[2][0] != ' ')
{
return board[0][2];
}

for (i = 0; i < row; i++)//判断是否棋盘放满了
{for (j = 0; j < col; j++){if (board[i][j] == ' '){return 'N';           //继续游戏}}
}
//平局
return 'E';              

}
void ShowBoard(char board[][COL], int row, int col)
{
system("cls"); //清屏
printf(" 1 2 3\n");
printf("---------------\n");
int i = 0;
int j = 0;
for (i = 0; i < row; i++)
{
printf("%d |", i + 1);
for (j = 0; j < col; j++)
{
printf(" %c |", board[i][j]);
}
printf("\n---------------\n");
}
printf("\n");
}
void Game()
{
char board[ROW][COL]; //定义棋盘(用二维数组实现)
memset(board, ' ', sizeof(board)); //将棋盘中的元素变成空格
char result = 'N';
srand((unsigned long)time(NULL));
while (1)
{
ComputerMove(board, ROW, COL);
ShowBoard(board, ROW, COL);
result = Judge(board, ROW, COL);
if (result != 'N') //X玩家赢,O电脑赢,E平局,N继续
{
break;
}
PlayerMove(board, ROW, COL);
ShowBoard(board, ROW, COL);
result = Judge(board, ROW, COL);
if (result != 'N') //X玩家赢,O电脑赢,E平局,N继续
{
break;
}
}
switch (result)
{
case 'X':
printf("Congratulations!You Win!\n");
break;
case 'O':
printf("Damn!You Lose!\n");
break;
case 'E':
printf("Dogfall!\n");
break;
default:
break;
}
}

转载于:https://blog.51cto.com/14239789/2376259

用C语言实现三子棋游戏相关推荐

  1. c语言程序下三子棋,C语言实现三子棋游戏(初级版)

    本文实例为大家分享了C语言实现三子棋游戏的具体代码,供大家参考,具体内容如下 game.h #include #include #include #define ROW 3 #define COL 3 ...

  2. C语言实现三子棋游戏 代码+思路+电脑下棋算法

    C语言实现三子棋游戏 代码+思路+电脑下棋算法 重点: 当检测到电脑已经两子连续时,将会尝试获得胜利. 在检测到玩家即将胜利(连城两子)时,进行拦截 尝试胜利的优先级高于拦截,意味着如果玩家不能再下一 ...

  3. 【C语言】三子棋游戏的实现(玩家VS玩家 or 玩家VS电脑)

    目    录 一.三子棋游戏介绍 二.游戏功能函数分析 1 菜单显示函数 2 菜单选择函数 3 选择确认函数 4 显示当前棋盘状态函数 5 棋盘初始化函数 6 玩家下棋函数 7 电脑下棋函数 8 棋局 ...

  4. 用C语言实现三子棋游戏(附上思路+项目展示+源代码)

    文章目录 前言 一.三子棋游戏整体实现思路 二.实现步骤 分模板实现 (以及具体应用实列) 1.test.c 源文件讲解: 2. game.c 源文件讲解: 3.game.h 源文件讲解 三 game ...

  5. 使用c语言实现三子棋游戏

    下面简介如何使用c语言的基础语法实现三子游戏的底层逻辑: 首先是菜单模块 使用switch语句进入游戏模块 前置交互完成,开始进入游戏函数. 第一部分棋盘创建,使用二维数组实现. a.初始化棋盘 为什 ...

  6. C语言实现三子棋游戏(规范化)

    `在复习了数组之后,对有些经典的数组题进行了,其中一道就是三子棋游戏这一功能的实现.下面附上我的个人理解和代码,希望各位大佬不吝指教. 首先有一个万能游戏模板,在c语言中有好多实现游戏的代码,我总结了 ...

  7. C语言程序设计——三子棋游戏

    三子棋游戏又叫井字棋游戏,是很多人小时候都玩过的一种小游戏,游戏的玩法是两名玩家在三行三列的九个格子子里依次下棋,若一方的棋子有三个在横.竖,斜线三种中的任何一种连成一条线就获得游戏胜利.接下来就让我 ...

  8. C语言实现三子棋游戏(棋盘可自行扩展)

    目录 三子棋简单介绍 实现方式 游戏外部测试(test.c文件) 游戏内容具体实现(game.c和game.h) 三子棋简单介绍 大家都玩过五子棋吧,三子棋和这个类似,就是三子连成一线就获得胜利. 大 ...

  9. C语言实现三子棋游戏—可扩展到任意N子棋

    C语言实现三子棋 游戏介绍 游戏编程思路 游戏代码详解 主函数 游戏菜单函数 游戏逻辑函数 初始化棋盘 打印棋盘 玩家下棋 电脑下棋 判断输赢 完整代码 test.c game_chess.c gam ...

  10. c语言:三子棋游戏(二维数组的运用)

    三子棋游戏(又称9宫格游戏): 游戏规则: 玩家和电脑随机下子,当一方的三子连成一条线,可以为 横连  纵连  斜连.或者棋盘下满则此时判断为平局,游戏结束 实现程序的思路: 首先我们需要定义游戏菜单 ...

最新文章

  1. JAVA中List的几个方法
  2. flink报错:Error: Static methods in interface require -target:jvm-1.8 已解决
  3. oracle11g R2 出现新增的表在导出的时候报EXP-00011: xx does not exist
  4. 《Objective-C基础教程》第二章 对C的扩展
  5. 代理模式(多线程实现状态监控)
  6. 计算机毕设-文献摘要,毕设摘要翻译,要人工翻译,不要电脑网站翻译的。
  7. 中移M5311-NBIOT-低功耗OPENCPU开发-MQTT
  8. Netty工作笔记0059---Netty私聊实现思路
  9. android常用的工厂模式,Android的设计模式-简单工厂模式
  10. 网络学习笔记(一):TCP连接的建立与关闭
  11. left join 最后一条_一条Mysql查询语句的西天取经之路,你真的了解吗?
  12. python如何实现循环_如何构造python循环
  13. 接口测试搭建之JMeter接口测试与SoapUI接口测试
  14. 如何通过WebEx Meeting进行远程IT协作?
  15. Git 学习(篇六 --储藏与清理)
  16. 三菱FX5U连接MQTT
  17. python nlp 句子提取_自然语言16.1_Python自然语言处理学习笔记之信息提取步骤分块(chunking)...
  18. Steam 网络联机配置代码
  19. Python微信远程控制摄像头-拍摄女朋友坐电脑前聊天时表情
  20. shell脚本一键安装jdk(三台)

热门文章

  1. Tomcat - 源码分析Tomcat是如何处理一个Servlet请求的
  2. linux安装mysql8.0.18_Linux安装MySQL8.0
  3. Docker 安装JDK1.8
  4. uml 时序图_UML学习-14种UML图
  5. 凸透镜成像动画可拖动_经典四图八问!这道中考物理题,彻底解决凸透镜成像规律!...
  6. Ubuntu下C语言Debug工具GDB【1】安装和使用
  7. 如何在Ubuntu18.04安装Tesla T4板的驱动程序
  8. mysql pdo使用存储过程_PDO调用存储过程的问题
  9. Matlab-实时编辑器介绍
  10. 本月 上月 php,显示本月,上月,今天,今年以及各时间起点与