分别创建test.c   game.c 两个源文件,以及game.h头文件

  这里的三子棋游戏是指棋盘为3*3,玩家与电脑之间的对决,先将各自的棋下为一排(横/竖/斜)者获胜,电脑所    下位置是随机产生

1. game.h中用于函数定义,如下:

#ifndef __GAME_H__
#define __GMME_H__#define ROWS 3
#define COLS 3void init_board(char board[ROWS][COLS], int rows,int  cols);//初始化棋盘void display_board(char board[ROWS][COLS], int rows, int  cols);//打印棋盘void player_move(char board[ROWS][COLS], int rows, int  cols);//实现玩家下棋的函数void computer_move(char board[ROWS][COLS], int rows, int  cols);//实现电脑下棋的函数char check_win(char board[ROWS][COLS], int rows, int  cols);//判断输赢的函数#endif //__GAME_H__

  2. test.c用于存放主函数,如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include"game.h"void menu()  //打印菜单
{printf("*********  1.PLAY  ********\n");printf("*********          ********\n");printf("*********  0.EXIT  ********\n");
}
void game()
{int ret = 0;char board[ROWS][COLS] = { 0 };init_board(board, ROWS, COLS);display_board(board, ROWS, COLS);while (1){printf("player move;\n");player_move(board, ROWS, COLS);display_board(board, ROWS, COLS);ret = check_win(board, ROWS, COLS);if (ret != ' ')break;printf("computer move:\n");computer_move(board, ROWS, COLS);display_board(board, ROWS, COLS);check_win(board, ROWS, COLS);if (ret != ' ')break;}if (ret == 'X')  {printf("Congratulatons! player win!\n");}else if (ret == '0'){printf("Undortunately! player lost!\n");}else{printf("It's tie,play again?\n");}
}
enum  Option
{EXIT,//0PLAY //1
};
int main()
{int input = 0;srand((unsigned int)time(NULL));do{menu();printf("please chose:>");scanf("%d", &input);switch(input){case PLAY:game();break;case EXIT:break;default:printf("default!please chose again!\n");break;}} while (input);system("pause\n");return 0;
}

3.game.c中实现游戏的函数

#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>void init_board(char board[ROWS][COLS], int rows, int  cols)
{memset(board, ' ', sizeof(char)*rows*cols);//用来设置内存的函数(指定内存地址,初始化,内存大小)
}
void display_board(char board[ROWS][COLS], int rows, int  cols)
{int i = 0;for (i = 0; i < rows; i++){printf(" %c | %c | %c \n", board[i][0], board[i][1], board[i][2]);if (i != rows - 1)printf("---|---|---\n");}
}
void player_move(char board[ROWS][COLS], int rows, int  cols)
{int x = 0;int y = 0;/*printf("please enter the coordinates:>");scanf("%d%d", &x, &y);*//*x--;y--;*/while (1){printf("please enter the coordinates:>");scanf("%d%d", &x, &y);x--;y--;if ((x >= 0) && (x <= rows - 1) && (y >= 0) && (y <= cols - 1)){if (board[x][y] == ' '){board[x][y] = 'X';break;}else{printf("please enter again:>\n");}}}
}
void computer_move(char board[ROWS][COLS], int rows, int  cols)
{while (1){int x = rand() % 3;int y = rand() % 3;if (board[x][y] == ' '){board[x][y] = '0';break;}}
}
static int is_full(char board[ROWS][COLS], int rows, int  cols)//仅在此文件内使用
{int i = 0;int j = 0;for (i = 0; i < rows; i++){for (j = 0; j < cols; j++){if (board[i][j] == ' ')return 0;}}return 1;//表示棋盘已满
}
char check_win(char board[ROWS][COLS], int rows, int  cols)//三行三列和两个交叉行
{int i = 0;for (i = 0; i < rows; i++){if ((board[i][0] == board[i][1]) && (board[i][1] == board[i][2]) && (board[i][1] != ' ')){return board[i][1];}}for (i = 0; i < cols; i++){if ((board[0][i] == board[1][i]) && (board[1][i] == board[2][i]) && (board[1][i] != ' ')){return board[1][i];}}if ((board[0][0] == board[1][1]) && (board[1][1] == board[2][2]) && (board[1][1] != ' ')){return board[1][1];}if ((board[0][2] == board[1][1]) && (board[1][1] == board[2][0]) && (board[2][2] != ' ')){return board[1][1];}if (is_full(board, rows, cols)){return 'q';//棋盘满了}return ' ';
}

c语言编程实现简单三子棋游戏相关推荐

  1. 如何用C语言来实现【三子棋游戏】

    目录 一.前言 二.思维导图 三.思路分析 四.运行结果 五.算法细节 1.游戏相关的测试 2.游戏函数的声明 3.游戏函数的实现 (1)初始化棋盘的函数 (2)打印棋盘的函数 (3)玩家下棋的函数 ...

  2. c语言程序设计中三子棋游戏,C语言实现简易版三子棋游戏

    本文实例为大家共享了C语言实现三子棋游戏的详细代码,供大家参考,详细内容如下 什么是多文件? 多数大型的工程的头文件和源文件非常多,我们也不可能把所有的代码都写在同一个文件里,这样也不方便代码的阅读与 ...

  3. 【C语言】简单三子棋游戏/井字棋游戏

    基本实现思路: 写出棋盘界面 通过二维数组来编辑棋子 玩家下棋/电脑下棋(随机) 输赢/平局的判断 在程序中,新建出两个源文件:"test.c" 和 "game.c&qu ...

  4. C语言实现人机模式三子棋游戏

    三子棋规则:在九宫格棋盘上,只要将自己的三个棋子走成一条线(横排.竖排.对角线),就算对方输了. 接下来,我们就开始用C语言实现这款操作简单容易上手的小游戏.我们采用多文件方式实现: game.h// ...

  5. 利用数组来实现简单三子棋游戏

    实现一个三字棋游戏,通过数组提供位置,由人和电脑轮流进行下棋,由于个人水平,仅能实现电脑随机下棋,并进行判断输赢,可进行循环游戏. 首先创建文本 yuanma.c//游戏实现 game.c//代码编译 ...

  6. 三子棋游戏(呆呆详解版)

    文章目录 一.问题 二.游戏基本流程 三.代码具体实现步骤 1.菜单界面 2.创建棋盘 3.初始化棋盘 4.打印棋盘 5.玩家下棋 6.电脑下棋 7.判断哪一方获胜 四.完整代码 五.代码运行演示 六 ...

  7. C语言三子棋游戏的编程实现

    程序界面实现如图所示的人与电脑互动的三子棋游戏 文件模块 test.c 测试三子棋游戏 game.h 游戏的函数声明(头文件) game.c 游戏函数的实现 代码模块 初始化棋盘 (每个位置初始为空格 ...

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

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

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

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

最新文章

  1. matlab减,matlab-线性代数 矩阵的加、减、乘、除
  2. PHP将英文数字转换为阿拉伯数字 
  3. Linux多进程拷贝fork,浅析linux中fork函数
  4. C语言 第五章 循环结构
  5. 微软发布了开发社区采用.NET Standard的最新信息
  6. 如何在VMWare的Ubuntu虚拟机中设置共享文件夹
  7. HDU 6188 Duizi and Shunzi
  8. as运行时不报错却闪退_字典访问不存在的key 时,如何才能不报错?
  9. 20.10-20.15 shell:for,while循环,break,continue,exit
  10. Vue学习笔记之07-v-for循环遍历
  11. nginx搭建视频服务器
  12. 运动控制器RTEX总线使用入门
  13. bat批处理文件转成exe应用程序安装及乱码解决
  14. 火狐浏览器的css写法,CSS样式IE浏览器跟火狐浏览器兼容写法
  15. vue项目,地址栏中含有#是什么意思?如何去掉?
  16. python自动化所用到的库介绍
  17. 压缩包 zip RAR 7z 密码破解常用的几种方法
  18. 傅里叶变换性质和常见信号的傅里叶变换
  19. GNSS 使用DFT算法 能量损耗仿真
  20. 2034——人见人爱A-B

热门文章

  1. Bootstrap简单认识之Tooltips组件
  2. ORACLE违反协议异常
  3. Fail to allocate bitmap
  4. 操作系统原理,物理内存“扩充”技术,内存紧缩,覆盖,交换,虚拟内存思想
  5. armbian 斐讯n1_斐讯N1安装Armbian
  6. Leetcode 32 最长合法括号子序列
  7. 江在川上曰:less样式预编译
  8. BART 文本摘要示例
  9. 【电子书资源】 PDF格式 持续更新
  10. 珍藏了很久的特效例子,分享给前端感兴趣的同学