目录

一、准备与规划

二、各类步骤

1、制作简易的界面(在test.c文件中)​编辑

2、游戏开始选择(在test.c文件中)

3、设置行,列(建议使用预处理指令#define定义)(在game.h中)创建数组存储数据(在test.c中)

​编辑

(game.h)

4、初始化棋盘

5、打印棋盘

6、玩家下棋

7、电脑下棋

8、判断游戏状态

三、代码段


一、准备与规划

(上图来自比特鹏哥直播视频截图)

二、各类步骤

1、制作简易的界面(在test.c文件中)

2、游戏开始选择(在test.c文件中)

(可以在do while循环语句里面放一个switch分支语句)

3、设置行,列(建议使用预处理指令#define定义)(在game.h中)创建数组存储数据(在test.c中)

(game.h)

(test.c)

4、初始化棋盘

(test.c)

(game.h)

(game.c)

5、打印棋盘

(test.c)

(game.h)

(game.c)

6、玩家下棋

(test.c)(game.h) (game.c)

7、电脑下棋

(test.c) (game.h) (game.c)

8、判断游戏状态

(test.c)

 (game.h)

(game.c)

三、代码段

test.c

#define _CRT_SECURE_NO_WARNINGS 1#include "game.h"void menu()
{printf("**************************\n");printf("******* 三子棋游戏 *******\n");printf("*******   1.play   *******\n");printf("*******   0.exit   *******\n");printf("**************************\n");}
void game()
{//存储数据char board[ROW][COL];//初始化棋盘IsitBoard(board, ROW, COL);//打印棋盘——本质是打印数组内容DisplayBoard(board, ROW, COL);//*代表玩家赢//#代表电脑赢//'Q'代表平局//'C'代表游戏继续char ret = 0;while (1){//玩家下棋PlayerMove(board, ROW, COL);DisplayBoard(board, ROW, COL);//判断玩家是否赢得游戏ret = InWin(board, ROW, COL);if (ret != 'C')break;//电脑下棋ComputerMove(board, ROW, COL);DisplayBoard(board, ROW, COL);//判断电脑是否赢得游戏if (ret != 'C')break;}if (ret == '*'){printf("玩家赢\n");}else if (ret == '#'){printf("电脑赢\n");}else{printf("平局\n");}
}int main()
{int input = 0;srand((unsigned int)time(NULL));do{menu();printf("请选择:>");scanf("%d", &input);switch (input){case 1:printf("游戏开始\n");game();break;case 0:printf("退出游戏\n");break;default:printf("输入错误,请重新输入");break;}} while (input);return 0;}

game.c

#define _CRT_SECURE_NO_WARNINGS 1#include"game.h"void IsitBoard(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;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 < row - 1){int j = 0;for (j = 0; j < col; j++){printf("---");if (j < col - 1)printf("|");}printf("\n");}}}
void PlayerMove(char board[ROW][COL], int row, int col)
{int x = 0;int y = 0;printf("玩家走:>\n");while (1){printf("请输入坐标:>\n");scanf("%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)
{printf("电脑走:>\n");while (1){int x = rand() % row;int y = rand() % col;//判断坐标是否被占用if (board[x][y] == ' '){board[x][y] = '#';break;}}}
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 InWin(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];break;}}//判断三列int j = 0;for (j = 0; j < col; j++){if (board[0][j] == board[1][j] && board[1][j] == board[2][j] && board[0][j] != ' '){return board[0][j];break;}}//判断对角线if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[0][0] != ' '){return board[0][0];}if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[0][2] != ' '){return board[0][2];}//如果棋盘满了返回1,没满返回0int ret = IsFull(board, row, col);if (ret == 1){return 'Q';}//继续return 'C';
}

game.h

#pragma once#include<stdio.h>
#include<stdlib.h>
#include<time.h>#define ROW 3//竖
#define COL 3//横//函数声明
//初始化棋盘的函数
void IsitBoard(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);
//判断游戏状态的函数
char InWin(char board[ROW][COL], int row, int col);

C语言#(C语言小游戏:三子棋)相关推荐

  1. 利用C语言巧妙实现棋类游戏——三子棋

    小游戏:三子棋用C语言实现 你是否学完了C语言的函数.数组.选择结构.循环结构苦于没有实战小项目巩固自己所学的知识呢,今天小程序猿就给大家带来了一个游戏的小游戏--三子棋,利用C语言实现的,希望对大家 ...

  2. 童年小游戏三子棋(C语言数组实现)

    目录 认识游戏 游戏框架 游戏实现 基本构思 棋子 棋盘 下棋 判断输赢 效果展示 全部代码 游戏效果 认识游戏 三子棋是黑白棋的一种.三子棋是一种民间传统游戏,又叫九宫棋.圈圈叉叉.一条龙.井字棋等 ...

  3. 简单小游戏------三子棋

    目录 前言 一.整体的逻辑 创建菜单 创建棋盘 打印棋盘 玩家下棋 电脑下棋 判断输赢 整合代码 game.c test.c game.h 总结 前言 经典数组游戏三子棋 一.整体的逻辑 1.创建菜单 ...

  4. 用c语言实现小游戏三子棋

    小游戏之三子棋 小游戏之三子棋 三子棋的基本玩法 游戏制作思路 制作步骤 1.菜单 2.初始化棋盘 3.打印棋盘 4.玩家下棋 5.电脑下棋 6.判断胜利 完整代码 ​​​​​​​小结 三子棋的基本玩 ...

  5. C语言小游戏——三子棋(井字棋)

    文章目录 前言 一.前期准备 二.游戏整体结构及思路 1.程序主体结构: 2.代码解读 3.完整源代码 总结 前言 相信大家小时候都玩过井字棋小游戏,拿石子在地上画或是用笔在纸上画······今天我们 ...

  6. C语言趣味小游戏——三子棋

    全篇无任何废话,本文的解释大多数都在代码段中,所以一定要看代码,边看边学边理解. 这只是初学者入门的一个小游戏,不难懂,没有什么复杂的内容 可以先学习一下比三子棋还简单的猜数字小游戏 C语言趣味小游戏 ...

  7. C语言简易小游戏--三子棋

    小时候,在学校和小伙伴除了互相追逐着玩闹玩游戏以外,相信很多小伙伴们也有和朋友在课堂上拿一张纸玩井字棋的美好回忆.(如下图酱紫啦~) 那今天呢,我们就用C语言制作一款简易的井字棋来练习一下对代码的感觉 ...

  8. c语言小游戏 三子棋,C语言实现简单的三子棋小游戏

    学习完数组就能用C语言写出的简单小游戏: 编译器使用的为VS2013 代码分为三个部分 1.头文件 game.h 2.源文件 game.c 用来存放游戏中所有的函数 3.源文件 test.c 用来存放 ...

  9. C语言小游戏——三子棋

    C语言 -- 三子棋 本篇主要是用二维数组和多个函数来实现三子棋游戏. 让我们先来看看这个编写这个游戏的思路:首先要打印三子棋的棋盘,然后是玩家下棋,电脑下棋,最后判断谁赢了,或者看看是否平局. 我们 ...

  10. (超详解)C语言实现小游戏三子棋

    目录 一,实现目标 二,整体思路 1.创立三个文件:text.c(实现测试的逻辑)                                                            ...

最新文章

  1. 修改代码的艺术----- 2.2 高层测试 2.3 测试覆盖
  2. linux kernel浮点处理
  3. linux一路填坑...
  4. 2017新生儿爆款名字出炉!90后的父母们最受欢迎的居然是.....
  5. Android Studio调试时遇见Install Repository and sync project的问题
  6. Spark: history Server
  7. leveldb java实例_EZDB首页、文档和下载 - LevelDB 的 Java 封装 - OSCHINA - 中文开源技术交流社区...
  8. Java——can U do
  9. 【FAQ】【Push Kit】 华为怎么设置角标
  10. 双非考研上岸中国传媒大学通信(电子信息)的一路历程(考研经验帖)
  11. iphone计算机照片大小,如何把iphone照片导入电脑 四种方法分享【图文】
  12. 霹雳吧啦Wz语义分割学习笔记P10
  13. 我们都希望有一部属于自己的电脑。
  14. Win32 IME 编程心得【转】
  15. 数据库管理-第四十九期 Exadata的存储节点管理(20221223)
  16. 本地repos Mac
  17. jmonkeyEngineSDK安装部署及IDEA集成JME3开发
  18. Java抽象类与抽象方法
  19. (42)[ICCV17] Mask R-CNN
  20. 4月刊特别推荐:架构师接龙:岳旭强 VS. 杨卫华

热门文章

  1. CodeChef MONOPLOY Gangsters of Treeland
  2. java类加载机制、反射、动态代理详解
  3. 西建大历年电子与通信工程复试真题_2018年上海大学电子与通信工程考研初试+复试经验贴...
  4. matlab神经网络应用设计 源代码,MATLAB神经网络应用设计
  5. Python-读取文件夹里Excel文件里的数据
  6. Unicode 14 标准发布
  7. Flutter 入门指北(Part 2)之基础部件
  8. python关键词挖掘_关键词挖掘,挖掘关键词的方法
  9. vs开发,添加try catch(...)发现没有捕获异常,需要对编译命令进行设置
  10. Android 11:固定热点的ip地址