C语言编程练习,三子棋

这篇博客记录了作者在B站鹏哥C语言课程中的一次编程练习,即使用C语言实现三子棋游戏。游戏逻辑通过分模块编程实现,包括test.c(测试和运行)、game.c(游戏运行内容)和game.h(函数与数据)。游戏基于二维数组构建棋盘,通过do-while和switch控制游戏流程,包含玩家和电脑交替下棋,以及棋盘的状态判断(赢、输、平局)。
摘要由CSDN通过智能技术生成

编程记录,关于B站上鹏哥C语言课程中的练习记录
记录内容:C语言实现三子棋游戏(数组的应用)

  • 关于分模块编程
    分为三部分: 1.test.c 用于测试和运行
    2.game.c 用于编写游戏运行内容
    3.game.h 用于存放游戏相关的函数与数据

  • 关于一些数据设置的原因
    问题一:数组大小使用定义在game.h中的ROW与COL不直接在代码中设定
    有利于后期对游戏的修改,增加灵活性。

  • 编写逻辑

    进行测试test.c
    作为游戏首先要打印好菜单,编写一个简单地menu()函数。
    通过do-while循环和switch条件语句,测试当用户输入相关内容时应当给出的反映。
    通过简单的输出一些内容对整个测试进行判断。
    逻辑测试完成。

    编写具体的游戏运行流程game()
    (编写的每个子程序需要在game.h中声明,并且在game.c中完成。)
    三子棋游戏基于数组形成棋盘,并通过不同的符号判断双方所下位置与输赢。
    通过二维数组存储数据。
    编写函数完成对棋盘的初始化,即在数组中保存空格。(问题一)
    编写函数完成棋盘的打印。(本质是打印数组的内容)(将棋盘打印编程更加灵活的方式)
    在这里插入图片描述
    设置进入循环开始游戏,即玩家走,电脑走(通过输入坐标进行游戏)(用户为*,电脑为#)
    编写函数让玩家下棋,需要提供数组、行、列(玩家的行列坐标与编程不同,注意差别)
    玩家输入想下棋的行列位置;
    判断坐标是否合法;
    判断坐标是否已经占用;(是否是空格)
    下棋成功,打印当前棋盘;
    编写函数实现电脑下棋,类似玩家下棋,
    电脑规定,所以一定合法;
    生成随机数的一些固定代码如下:rand,srand,time

#include<stdlib.h>
#include<time.h>
x = rand() % row;
srand((unsigned int)time(NULL);

编写函数每次下棋结束都要判断当前状态(玩家赢*)(电脑赢#)(平局Q)(游戏继续C)。(设置*、#的原因?)
前三种游戏结束,打印棋盘展示当前状态。
输赢判断:行、列、对角线是否三个相等(任一不可以等于空格)
平局判断:无输赢而且棋盘被占满(数组里有没有空格 )

  • game.h
//头文件的包含
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>


//符号的定义
#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);

//玩家下棋
void PlayerMove(char board[ROW][COL], int row, int col);

//电脑下棋
void ComputeMove(char board[ROW][COL], int row, int col);

//判断当前游戏状态
char IsWin(char board[ROW][COL], int row, int col);

//判断棋盘是否已满
int IsFull(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++)
	{<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值