1.创建项目环境

2创建游戏主题

3game的实现

4下棋:

5判断输赢

1创建项目环境:

game.h——放头文件

game.c——存放函数

test.c——游戏逻辑

2 创建游戏主题

我们这里先创建游戏主题,其中包括菜单,游戏构架(在test.c实现)

void menu()
{printf("#######################################################\n");printf("#####    1. play             0.exit               #####\n");printf("#######################################################\n");}void test()
{int intput = 0;srand((unsigned int)time(NULL));时间戳do{menu();printf("请选择:>");scanf_s("%d", &intput);switch (intput){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("选择错误,小笨蛋\n");break;}}while(intput);
}int main()
{test();return 0;
}

3game的实现

test.c

void game()
{char ret = 0;char board[ROW][COL] = {0};//初始化棋盘InitBoard(board, ROW, COL);//打印棋盘DisplayBoard(board,ROW,COL);}

game.h

#define ROW 3
#define COL 3void InitBoard(char board[ROW][COL], int row, int col);初始化棋盘
void DisplayBoard(char board[ROW][COL], int row, int col);打印棋盘

game.c

#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] = ' ';}}
}void DisplayBoard(char board[ROW][COL], int row, int col)
{int i = 0;for (i = 0; i < row; i++){//打印一行的数据int j = 0;for (j = 0; j < col; j++){printf(" %c ", board[i][j]);if (j < col - 1){printf("|"); }}printf("\n");//打印份隔行if (i < row - 1){for (j = 0; j < col; j++){printf("---");if (j < col - 1){printf("|");}}printf("\n");}}
}

4下棋

4.1玩家下棋;

test.c

void game()
{char ret = 0;char board[ROW][COL] = {0};//初始化棋盘InitBoard(board, ROW, COL);//打印棋盘DisplayBoard(board,ROW,COL);PlayerMove(board, ROW, COL);}

game.c

void PlayerMove(char board[ROW][COL], int row, int col)
{printf("玩家走:>\n");//判断x,y的合法性while (1){int x = 0;int y = 0;printf("请输入要下的坐标:>\n");scanf_s("%d%d", &x, &y);if (x >= 1 && x <= row && y >= 1 && y <= col){if (board[x - 1][y - 1] == ' '){board[x - 1][y - 1] = '*';break;}else{printf("坐标被占用\n");}}else{printf("小笨猪坐标非法,请重新输入\n");}}
}

4.2电脑下棋,这里使用时间戳来实现,所以就比较憨憨

test.c

void game()
{char ret = 0;char board[ROW][COL] = {0};//初始化棋盘InitBoard(board, ROW, COL);//打印棋盘DisplayBoard(board,ROW,COL);PlayerMove(board, ROW, COL);DisplayBoard(board, ROW, COL);
}

game.c

void ComputerMove(char board[ROW][COL], int row, int col)
{int x = 0;int y = 0;printf("电脑走:>\n");while (1){x = rand() % row;y = rand() % col;if (board[x][y] == ' '){board[x][y] = '#';break;}}}

5判断输赢

test.c

void game()
{char ret = 0;char board[ROW][COL] = {0};//初始化棋盘InitBoard(board, ROW, COL);//打印棋盘DisplayBoard(board,ROW,COL);//下棋while (1){//玩家下PlayerMove(board, ROW, COL);DisplayBoard(board, ROW, COL);//判断玩家是否赢了ret = IsWin(board,ROW,COL);if (ret != 'c'){break;}//电脑下ComputerMove(board, ROW, COL);DisplayBoard(board, ROW, COL);//电脑是否赢了ret = IsWin(board,ROW,COL);if (ret != 'c'){break;}}if (ret == '*')printf("玩家赢了\n");else if (ret == '#')printf("电脑赢了\n");elseprintf("平局\n");DisplayBoard(board, ROW, COL);
}

geme.c

//返回1表示棋盘满了
//返回0表示棋盘没满static int IsFull(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++){if (board[i][j] == ' '){return 0;}}}return 1;
}char IsWin(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][1];}}/*竖三列*/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] != ' '){return board[0][0];}if (board[2][0] == board[1][1] && board[1][1] == board[0][2] && board[2][0] != ' '){return board[2][0];}//判断平局if (1 == IsFull(board, ROW, COL)){return 'Q';}return 'c';
}

最后是完整的代码

game.h
//#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define ROW 3
#define COL 3void InitBoard(char board[ROW][COL], int row, int col);
void DisplayBoard(char board[ROW][COL], int row, int col);
void PlayerMove(char board[ROW][COL], int row, int col);
void ComputerMove(char board[ROW][COL], int row, int col);
//告诉我们四种状态
//玩家赢了-*
//电脑赢了-#
//平局-Q
//继续-Cchar IsWin(char board[ROW][COL], int row, int col);
test.c#define _CRT_SECURE_NO_WARNINGS
//#include"game.c"
#include"game.h"
void menu()
{printf("#######################################################\n");printf("#####    1. play             0.exit               #####\n");printf("#######################################################\n");}
//游戏实现
void game()
{char ret = 0;char board[ROW][COL] = {0};//初始化棋盘InitBoard(board, ROW, COL);//打印棋盘DisplayBoard(board,ROW,COL);//下棋while (1){//玩家下PlayerMove(board, ROW, COL);DisplayBoard(board, ROW, COL);//判断玩家是否赢了ret = IsWin(board,ROW,COL);if (ret != 'c'){break;}//电脑下ComputerMove(board, ROW, COL);DisplayBoard(board, ROW, COL);//电脑是否赢了ret = IsWin(board,ROW,COL);if (ret != 'c'){break;}}if (ret == '*')printf("玩家赢了\n");else if (ret == '#')printf("电脑赢了\n");elseprintf("平局\n");DisplayBoard(board, ROW, COL);
}void test()
{int intput = 0;srand((unsigned int)time(NULL));do{menu();printf("请选择:>");scanf_s("%d", &intput);switch (intput){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("选择错误,小笨蛋\n");break;}}while(intput);
}int main()
{test();return 0;
}
game.c#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] = ' ';}}
}void DisplayBoard(char board[ROW][COL], int row, int col)
{int i = 0;for (i = 0; i < row; i++){//打印一行的数据int j = 0;for (j = 0; j < col; j++){printf(" %c ", board[i][j]);if (j < col - 1){printf("|"); }}printf("\n");//打印份隔行if (i < row - 1){for (j = 0; j < col; j++){printf("---");if (j < col - 1){printf("|");}}printf("\n");}}
}void PlayerMove(char board[ROW][COL], int row, int col)
{printf("玩家走:>\n");//判断x,y的合法性while (1){int x = 0;int y = 0;printf("请输入要下的坐标:>\n");scanf_s("%d%d", &x, &y);if (x >= 1 && x <= row && y >= 1 && y <= col){if (board[x - 1][y - 1] == ' '){board[x - 1][y - 1] = '*';break;}else{printf("坐标被占用\n");}}else{printf("小笨猪坐标非法,请重新输入\n");}}
}void ComputerMove(char board[ROW][COL], int row, int col)
{int x = 0;int y = 0;printf("电脑走:>\n");while (1){x = rand() % row;y = rand() % col;if (board[x][y] == ' '){board[x][y] = '#';break;}}}
//返回1表示棋盘满了
//返回0表示棋盘没满static int IsFull(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++){if (board[i][j] == ' '){return 0;}}}return 1;
}char IsWin(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][1];}}/*竖三列*/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] != ' '){return board[0][0];}if (board[2][0] == board[1][1] && board[1][1] == board[0][2] && board[2][0] != ' '){return board[2][0];}//判断平局if (1 == IsFull(board, ROW, COL)){return 'Q';}return 'c';
}

三子棋(时间智障版)相关推荐

  1. 用Python制作五子棋人机对弈(人工智障版和升级AI版)

    智障版截图: 智能版截图: 可能遇到的问题: No module named 'pyqt5'解决办法 智障版源码: 背景: muzm.jpg window.py from PyQt5.QtWidget ...

  2. 【三子棋】C语言版——妈咪级讲解

    大家好,今天为大家带来三子棋C语言版讲解,这个游戏看着简单,但是对于我这种新手实现起来还是有一定难度的,废话少说,直接开冲. 目录 一.事先准备 二.用户交互画面 三.三子棋棋盘的初始化和打印 四.玩 ...

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

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

  4. <C语言>代码实现与自己创造的“人工智障”进行三子棋对弈,并且艰难的让电脑赢!

    目录 文章目录 前言 一.创建文件项目 二.具体实现步骤 1.呈现菜单,并实现玩家可一直游玩游戏 2.选择进入游戏后,打印棋盘 2.1初始化棋盘 2.2打印棋盘 3.打印棋盘后,玩家和电脑开始轮番下棋 ...

  5. C语言实现三子棋(不是人工智障哈哈哈)

    目前为止学了分支,循环,数组和函数,现在利用这些知识来写一个三子棋小游戏来巩固加深所学哈哈哈 目录 1.测试结果 2. 整体思路 3.代码模块解读 (1).打印菜单 (2).初始化棋盘 (3).打印棋 ...

  6. C语言实现“人工智障”三子棋

    文章目录 前言 一.成品展示 主界面展示: 二.实现步骤 1.初始化棋盘 2.打印棋盘 3.玩家电脑落子 4. 判断胜负 5.游戏逻辑实现 总结 前言 相信不少小伙伴在学校上的时候肯定都玩过三子棋吧, ...

  7. 三子棋的实现,人工智能与人工智障

    1.菜单 我们先进行菜单打印的实现,如下: void menu() {printf("**********************************************\n&quo ...

  8. 万字解析:带你走进五子棋(普通版)和三子棋的世界(C语言)

    今天,我们来再来实现一个大家都不陌生的小项目:三子棋. 1,三子棋 1,思路分析 写一个小项目,必不可少的是思路的构建.写一个游戏,我们首先需要一个菜单,这是最基本的,让用户来选择是否要玩这个游戏.如 ...

  9. C语言 进阶版三子棋小游戏

    目录 前言 游戏运行效果: 游戏代码: 1.test.c文件 2.  game.h头文件 3.  game.c 一.框架部分 二.游戏函数实现 1.创建数组并初始化 2.打印数组 3.玩家下棋 4.电 ...

最新文章

  1. utf8 连接 mysql_mysql配置为支持utf8的连接方式只要改client就可以了吗
  2. 比特币要升级成为“比特币现金”
  3. 阿里云企业邮箱收费吗
  4. Linux 如何获取PAGE size的大小?
  5. socketserver和socket的补充(验证客户端合法性)
  6. angularjs -- 监听angularJs列表数据是否渲染完毕
  7. mybatis基础总结01
  8. java 变量 安全访问_访问java变量
  9. 最近纠结致死的一个java报错java.net.SocketException: Connection reset 终于得到解决
  10. 微积分中BW定理指的是什么
  11. 波兰表达式和逆波兰表达式
  12. python分号_在Python中拆分分号分隔的字符串
  13. opencv (五十二)Shi-Tomas角点检测
  14. android p蓝色壁纸,iPhone和Android的最佳蓝色系壁纸分享
  15. 手机客户端使用ConnectBot软件远程登录服务器
  16. 机房收费系统(VB.NET)——超详细的报表制作过程
  17. access violation c语言,请教大家:出现Access violation怎么办?
  18. 螺钉式接线端子 KF128/ DG128/ MG128
  19. 01-初步认识数据库管理系统测试题
  20. web2.0 时代我们需要什么样的阅读---转载

热门文章

  1. pwlink用作USB转TTL,进入HC-05的AT模式
  2. 判断手机是否处于静音、震动、正常模式
  3. VSCode常用插件及配置修改
  4. 2020-10-24 车机UI的SystemUI修改
  5. VMware的linux虚拟机玩耍 [2] (环境配置与一些软件安装)
  6. CF869E The Untended Antiquity 解题报告
  7. 1、字符串与数字相互转换
  8. Java相同类型的两个对象比较属性值,得到不同属性的名称和对应的值,附代码实例
  9. 泰山OFFICE技术讲座:标点关系穷举研究-03
  10. php 实现店铺装修5