首页 > 其他分享 >C语言三子棋项目(顺序逻辑-小白学习笔记)

C语言三子棋项目(顺序逻辑-小白学习笔记)

时间:2023-06-22 19:31:45浏览次数:40  
标签:函数 三子 C语言 玩家 小白 循环 棋盘 我们 游戏

首先要确定游戏的基本框架

简易来说,由进入游戏--->选择菜单--->进入游戏三部分组成

应用在c语言项目中,我们通过功能来对文件进行区分,主函数main()内进入游戏C语言三子棋项目(顺序逻辑-小白学习笔记)_数组

通过test函数加入我们的菜单,但这里meau()菜单选项我们不希望执行一次,因为如果玩家选择错误,将会导致程序无法进行。

这里通过do while循环最合适,因为至少进行一次选择。同时这里我们将玩家的选择进行限制。

C语言三子棋项目(顺序逻辑-小白学习笔记)_跳出循环_02

C语言三子棋项目(顺序逻辑-小白学习笔记)_数组_03

玩家通过输入1进入我们的游戏game()函数,在game()函数中,我们首先应该做的是创建一个空的棋盘,

C语言三子棋项目(顺序逻辑-小白学习笔记)_跳出循环_04,我们把 棋盘行数Row,列数Col声明在头文件中

C语言三子棋项目(顺序逻辑-小白学习笔记)_随机数_05

,但我们应该知道我们的棋盘内容每一个格子内都是空字符串,所以我们生成一个初始化棋盘的函数,但是初始化棋盘是一项功能,我们每次进入game()函数都要调用它,所以我们把它单独建立在我们的game.c文件中,以便我们接下来增多其它的游戏功能。

C语言三子棋项目(顺序逻辑-小白学习笔记)_随机数_06

我们需要在test.c 文件中要调用我们的初始化InitBoard()函数,我们需要在头文件中声明函数,以便调用。

C语言三子棋项目(顺序逻辑-小白学习笔记)_跳出循环_07

之后我们通过循环依次访问棋盘数组中的每一个元素,将其更改为空字符

C语言三子棋项目(顺序逻辑-小白学习笔记)_跳出循环_08

初始化棋盘数组内容之后,我们要通过控制台将棋盘打印出来,C语言三子棋项目(顺序逻辑-小白学习笔记)_三子棋_09形成一个井字格, 同样我们先将函数命名出来,C语言三子棋项目(顺序逻辑-小白学习笔记)_跳出循环_10传入实参,打印棋盘与我们的初始化棋盘一样是一种功能,所以同样的方式声明在头文件中。编写在game.c文件中。

C语言三子棋项目(顺序逻辑-小白学习笔记)_跳出循环_11

我们首先要通过行来依次输出,所以通过循环来进行,第一行的每一个格子可以拆分为 (  字符  )’空格‘%c‘空格’加上一个”|“C语言三子棋项目(顺序逻辑-小白学习笔记)_三子棋_09看图像最后一次输出时是没有”|“的,所以我们上面通过判断j<col进行了限制。第一行结束后我们进行了换行,通过if<col-1判断最后一列不需要输出,其它与行的输出同理;

接下来棋盘显示完成后进入玩家输入环节,声明功能函数C语言三子棋项目(顺序逻辑-小白学习笔记)_数组_13,同样玩家输入的内容是可能错误的,我们需要进行合法性判断。这里我们通过while循环,因为玩家输入错误后不会跳出循环,会进行二次输入。

C语言三子棋项目(顺序逻辑-小白学习笔记)_数组_14

当然我们如果输入正确后,会改变玩家输入坐标的内容,把空字符改为‘*’,并且跳出循环,函数完成。接着我们将棋盘显示更新一下,C语言三子棋项目(顺序逻辑-小白学习笔记)_数组_15C语言三子棋项目(顺序逻辑-小白学习笔记)_数组_16

接下来应为电脑下棋(这里随机下棋),我们生成函数C语言三子棋项目(顺序逻辑-小白学习笔记)_三子棋_17,传入实参,电脑下棋需要随机数,随机数需要无符的时间戳,我们在test函数中已经声明。

C语言三子棋项目(顺序逻辑-小白学习笔记)_跳出循环_18

C语言三子棋项目(顺序逻辑-小白学习笔记)_数组_19

我们让电脑生成的随机数,并且只有位置为空字符时才可下棋。电脑走完后我们同样让刷新棋盘C语言三子棋项目(顺序逻辑-小白学习笔记)_三子棋_20

但是我们需要加入一个判断输赢的函数来终止游戏,不然游戏会一直循环。根据逻辑,不管玩家还是电脑下完棋后都要进行判断。并且游戏有四种状态玩家赢(*)电脑赢(#)平局(Q)继续(C),通过ret来接受函数返回值以明确游戏状态,玩家所以这里先生成函数

C语言三子棋项目(顺序逻辑-小白学习笔记)_随机数_21

C语言三子棋项目(顺序逻辑-小白学习笔记)_三子棋_22

我们来到IsWin的函数,三子棋游戏赢的方式有三种,横着排满,竖着排满,斜着排满。平局的方式有一种

我们先来判断横着排满棋子

C语言三子棋项目(顺序逻辑-小白学习笔记)_数组_23

这里通过循环依次判断每一行的内容是否一致,并且有一种不能为空字符相等。如果一致,我们随意返回这个横向棋盘上的符号就可。

判断列的循环与行的基本一致:

C语言三子棋项目(顺序逻辑-小白学习笔记)_跳出循环_24

判断斜着的方式

C语言三子棋项目(顺序逻辑-小白学习笔记)_随机数_25

这三种赢的状态都会返回一个字符'*'或者'#'。

但是我们还有两种状态平局和继续,我们将棋盘是否满了做成一种函数()C语言三子棋项目(顺序逻辑-小白学习笔记)_三子棋_26 我们让IsFull()返回一个值,棋盘满了就返回1,没满就返回0;

C语言三子棋项目(顺序逻辑-小白学习笔记)_数组_27

这里我们通过循环依次来看是否有空的字符。

显然还有最后一种状态’c‘继续游戏。我们写在了循环的最下面。

C语言三子棋项目(顺序逻辑-小白学习笔记)_三子棋_28


前面我们用字符ret接收了游戏状态

C语言三子棋项目(顺序逻辑-小白学习笔记)_数组_29

当然如果游戏状态返回来已经是平局或者一方赢下的话,我们需要跳出循环进行判断

C语言三子棋项目(顺序逻辑-小白学习笔记)_数组_30

同样通过ret返回值进行判断游戏状态。

好了,本篇博客的内容到这里就要结束了,本博主还是小白,写博客记录只是记录学习,望包涵。

标签:函数,三子,C语言,玩家,小白,循环,棋盘,我们,游戏
From: https://blog.51cto.com/u_16094438/6535342

相关文章

  • C语言 大小端转换(16位)c51,ARM
    //C++#include<arpa/inet.h>uint32_thtonl(uint32_tbuffer);//32位uint16_thtons(uint16_tbuffer);//16位Linux上,无符号c++版 #define__SWP16(A)((((uint16)(A)&0xff00)>>8)|\(((uint16)(A)&0x00ff)......
  • 01-C语言基础语法
    目录一.C语言发展史二.数据类型三.常量和变量四.字符串和转义字符五.选择语句六.循环语句七.函数一.C语言发展史1963年ALGOL60作为C语言最早的模型,剑桥大学将其发展成为CPL(CombinedProgramingLanguage)。1967年,剑桥大学的MatinRichards对CPL语言进行了简......
  • 图的遍历——DFS, BFS(邻接矩阵,邻接表)——C语言描述
    图的遍历——DFS,BFS(邻接矩阵,邻接表)——C语言描述目录图的遍历——DFS,BFS(邻接矩阵,邻接表)——C语言描述0测试用例框架1图的深度优先遍历(DFS)1.1邻接矩阵(1)数据结构(2)代码(3)测试用例(4)打印结果1.2邻接表(1)数据结构(2)代码(3)测试用例(4)结果2图的广度度优先遍历(BFS)2.1队列(1)数据结构......
  • C语言中数组和指针
    (文章目录)前言本文将给大家带来C语言中非常重要的两个知识点,指针和数组。一、指针的概念指针,是C语言中的一个重要概念及其特点,也是掌握C语言比较困难的部分。指针也就是内存地址,指针变量是用来存放内存地址的变量,指针既然都用来存放地址了那就说明指针也是一个变量。二、指......
  • 自学C语言2023_6_21
    变量的作用域和生命周期: 作用域:变量的生效范围就是作用域局部变量的作用域:变量所在的局部范围(大括号内) 全局变量的作用域:整个工程其他.c文件的变量:需要使用extern声明一下变量  生命周期:变量的创建和销毁之间的时间段局部变量:进入局部范围生命开始,出局部范围生命......
  • 精通c语言中的指针-数组
    一维数组:intara[3]={1,2,3};printf("%d\n",ara):printf("%d\n",&ara):打印之后,发现ara和&ara两个值是一样的,为什么?按照我们学习的理解,&ara是取ara的地址,一个是地址,一个是值,不应该一样,那为什么打印出来会是一样的? 从汇编的角度可以解释这个问题:printf("%d\n",ara):......
  • C语言与C++不得不说的那点事
    说到C语言,就不得不说它的继承者——C++语言。众所周知,C++语言是在C语言的基础上,添加了面向对象、模板等现代程序设计语言的特性而发展起来的。两者无论是从语法规则上,还是从运算符的数量和使用上,都非常相似,所以我们常常将这两门语言统称为“C/C++”。虽然因为天然的血缘关系,导致两......
  • 精通c语言中的指针(精通c指针1)
    之前学c语言的时候,指针这一章学的半吊子,似是而非,最近经过学习,对指针有个更加深刻的理解。如果之前学过c指针,并且可以使用指针随心所欲操作内存中的任何数据,那么说明指针学好了,否则就是半吊子。如果之前学过指针,那最好忘记之前学过的所有概念,把指针当做一种新的类型来学习。这种......
  • 全面解读Objective-C语言及Cocoa特性——《Objective-C基础教程》
    媒体评论“这是我读过的最好的一本编程书。我从头到尾逐字逐句地读完了它,可读性真强啊!试问,现在有几本技术书能达到这种程度?”——Amazon读者评论“这本书结构清晰,逻辑性强,风格幽默……借助本书,你可以毫不费力地从一个初学者摇身一变升级为优秀的Objective-C编程人员。”——Ama......
  • 权威解答495个最常遇到的C语言问题
     该书上市后好评如潮,第一次印刷不到1个月就全部售罄。更多C语言经典图书推荐:《编程精粹:编写高质量C语言代码》     媒体评论:“本书是Summit以及CFAQ在线列表的许多参与者多年心血的结晶,是C语言界最为珍贵的财富之一。我向所有C语言程序员推荐本书。”          ......