首页 > 其他分享 >C语言数组(12)——写一个三子棋游戏(3)

C语言数组(12)——写一个三子棋游戏(3)

时间:2023-09-05 21:33:57浏览次数:36  
标签:12 int 三子 玩家 board PlayerMove C语言 COL ROW

一.回顾

我们上篇文章主要介绍了棋盘的打印,我们用到了DisplayBoard()函数,那么我们现在就需要来实现玩家下棋这一操作

二.玩家下棋功能的实现

与前几个函数一样我们将玩家下棋功能代码封装成一个函数,命名为PlayerMove()函数,我们前面说过玩家下棋的本质就是将数据填进二维数组中的元素中,那么这个函数我们也给它三个参数,分别是:board, ROW , COL ,所以我们可以写如下代码:

test.c:

PlayerMove(board,ROW,COL);

与前面相同,在使用自定义函数的时候需要先进行定义,所以我们在game.h的头文件中写入以下代码:

void PlayerMove(char board[ROW][COL],int row ,int col);

定义完函数后我们就可以来实现这个函数了,我们在game.c中写入以下代码

void PlayerMove(char board[ROW][COL],int row,int col){
//语句
}

我们既然要让玩家下棋那么势必就需要玩家输入坐标,这里我们用变量 x y 来表示玩家落子的坐标,则我们需要玩家线输入坐标,代码如下:

void PlayerMove(char board[ROW][COL],int row,int col){
int x = 0;
int y = 0;
printf("请输入坐标:");
scanf("%d%d",&x,&y);
}

获取完玩家输入的坐标我们还需要判断玩家输入的坐标是否合法,如果输入了超出数组大小的坐标我们就需要提示玩家输入非法,代码如下:

if(x>=1 && x<=row && y>=1 && y<=col)
{
//语句
}else{
printf("坐标非法,请重新输入!\n");
}

当玩家下棋时我们还需要判断棋盘是否被占用了,如果未被占用则将数据传入数组,若被电脑占用则提示玩家位置被占用,代码如下:

if(board[x-1][y-1] == ' '){
board[x-1][y-1] = '*';
  break;
}else{
printf("棋盘被占用,请重新选择位置!\n");
}

                                                                                                                                2023/9/4

王起舟 


标签:12,int,三子,玩家,board,PlayerMove,C语言,COL,ROW
From: https://blog.51cto.com/u_16183773/7379690

相关文章

  • 128. 最长连续序列
    给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。示例1:输入:nums=[100,4,200,1,3,2]输出:4解释:最长数字连续序列是[1,2,3,4]。它的长度为4。示例2:输入:nums=[0,......
  • 用友8V12.0导入凭证时提示外部表不是预期的格式
    用友8V12导入凭证时提示外部表不是预期的格式1.之前可以导入.xlsx,现在只能导入.xls格式2..xls格式下拉公式非同表提取数据,关闭表再打开就不能提取,必需重新再设置。知道解决办法的请留言指导,谢谢!......
  • C语言常见命名规范
    C语言常见命名规范 1常见命名规则比较著名的命名规则首推匈牙利命名法,这种命名方法是由Microsoft程序员查尔斯·西蒙尼(CharlesSimonyi)提出的。其主要思想是“在变量和函数名中加入前缀以增进人们对程序的理解”。匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作......
  • P5812 [IOI2019] 天桥
    优化建图,首先分几种情况讨论。假设当前的桥\(l,r,h\)。起点和终点是\(S,T\)。第一种情况:\(S\leql<r\leqT\)。容易发现如果要从这条天桥中间上这条天桥,一定经过\(l\)或\(r\),不如直接走上去。所以只用保留\((l,h),(r,h)\)和他们往下的一个其他天桥与该楼的交点,这个交......
  • GAN 12Leap 开箱
    因为之前的GAN356m年代久远,于是新入手了一只GAN12Leap,200RMB(好贵)。包装还是很好看的上手第一感觉就是轻!\(61.5\)克可不是开玩笑的,相比GAN356m的\(72\)克,不管是拿着还是转都感觉轻松很多。轴距和弹力是GESPRO+的,都可调\(6\)档,本人习惯大力出奇迹,所以轴距\(2......
  • 20230711 12. 本地方法
    本地方法原则上说,“100%纯Java”的解决方案是非常好的,但有时你也会想要编写或使用其他语言的代码(这种代码通常称为本地代码)特别是在Java的早期阶段,许多人都认为使用C++来加速Java应用中关键部分是个好主意。但是,实际上,这基本上是徒劳的。Java平台实现比网络I/O......
  • 20230619 Java核心技术(Java 17)(原书第12版)【归档】
    介绍版本Java版本:17说明关于图形相关的章节全部跳过,部分不常见不常用的也跳过书中内容有些确实全面,但是要注意也有些重要的部分没有涉及,例如NIO读书只是概览,掌握知识体系更进一步还要通过看代码深入掌握目录卷1基础知识1.Java程序设计概述2.Java编程环境3.......
  • 快充充电器5V-9V升压给12.6V三节串联锂电池充电芯片的方案IC
    随着USB Type-C快充PD的普及怎么从各种PD充电器取9V/12V/15V/20V给产品的锂离子电池供电呢?1.2应用:便捷充电设备等1.3 电池组:11.1V锂电池组,三串3.7V锂电池,充满12.6V1.4 输入电压:5V-9V (充电亮灯,充满转灯),充电电流:1.4A1.5芯片功能简介:1,锂电池充电芯片电路:FS5175AEFS5175AE支持1-4节......
  • 212 模拟科三
    下午去,晚上七点多回来模拟紧张,发挥不好,一次OK,一次不行(无缘无故变更车道没打转向灯),要记得灯光复位,不要发懵。记得考试流程,这个项目是什么,下个项目又是什么。不要紧张,明天考试好好发挥,一次过!......
  • 入门性文章要替新手多多考虑--csdn开发高手12期《利用Eclipse开发Hibernate应用程序》实
    注:本文使用Eclipse3.0.1(含中文包)测试,中英文请读者自行对应。  这篇文章总体写的不错,对于新手上路很有帮助。不过我在实践的时候也遇到了一些问题,在这里总结出来,希望大家少走弯路。1.Run的问题:“OK,Run一下”,作者仅提到这里,而对于新手,也许在这里就卡住了。怎么Run,Run什么啊?来,我......