‫欢迎回来｡
‫这段视频, 你会得到一个小挑战, 你应该创造井字游戏｡
‫正如你在这里看到的, 只是一个控制台游戏, 而不是一个形式的游戏或类似的东西, 但只是一个控制台游戏｡
‫如你所见, 有九个值或者九个域和参与者, 一个参与者可以选择域, 二个参与者可以选择域,
‫以此类推.
‫例如, 有一个字段, 我输入了一个, 现在它是一个哦｡
‫所以这不是0, 是哦然后轮到2号参与人我输入5.
‫所以现在你可以看到5被一个x代替了, 只有你能看到的数字仍然可用｡
‫假设我再次输入5作为参与人1.
‫它会告诉我不正确的输入｡
‫请使用其他字段｡
‫好吧, 我用三个｡
‫假设二号参与人不知道你应该只输入数字他只输入了一个G或者其他什么.
‫然后显示“请输入一个数字”｡
‫输入不正确, 请使用其他字段｡
‫对不对？
‫所以还是要轮到玩家｡
‫那他打算怎么办？
‫他会努力赢的｡
‫所以这将是超级接近｡
‫二号玩家｡
‫快要赢了, 我们就打给你一个｡
‫所以他连续三次传中, 那么, 请按任意键重置游戏｡
‫我会按任意键｡
‫而我们是｡
‫我们有新一轮｡
‫因此, 您还应该创建一个重置功能｡
‫好吧, 差不多就是这样了｡
‫试着去建造它｡
‫您将需要使用两个DX阵列, 您将需要使用交换机､ 案例和方法, 以及我们在上一个视频中提到的许多不同的东西｡
‫所以这将需要相当长的时间, 你的解决方案可能看起来和我的非常不同｡
‫是的, 一般来说, 如果你没有得到任何地方, 如果你如果这对你来说太难了, 不用担心｡
‫你可以简单地沿着我, 试着理解我正在经历的所有步骤, 我会解释我正在做的每件事｡
‫但最好是你自己去尝试, 因为当你自己尝试的时候,
‫你会发现解决方案, 这将大大提高你的技能, 因为简单地通过做你会学到最多, 而仅仅通过看, 你不会学到那么多｡
‫所以这真的很重要｡
‫只要你遇到了错误, 并且你自己解决了它们, 那就是学习真正起作用的时候｡
‫这就是为什么你自己去尝试是非常重要的｡
‫好吧, 我会的
‫所以我希望你现在暂停视频, 你尝试一下, 这可能会占用相当长的时间｡
‫所以你不应该在5分钟内完成｡
‫好吧, 也许你是对的, 你可以做到这一点｡
‫但是, 根据您选择的解决方案, 这可能需要一个多小时, 甚至两个多小时｡
‫就像我说的, 有很多不同的方法来解决这个问题｡
‫我只有一个我认为是一个相当接近我们目前所学到的｡
‫它使用的是我们目前为止学到的功能｡
‫所以没什么新鲜事｡
‫是的, 这就是为什么我现在要继续构建应用程序｡
‫好吧, 我会的
‫所以就像我说的, 我希望你试着自己创造它｡
‫因此, 我将创建一个新的项目文件new｡
‫项目｡
‫我把这个叫做井字游戏｡
‫然后它将再次成为一个控制台应用程序｡
‫让我们点击一下, 好的, 在我做任何复杂的逻辑之前, 我会检查谁有一个, 等等,
‫我会从非常简单的开始｡
‫我只是要先创建我们的游戏环境, 我的意思是, 即使是控制台写作｡
‫我将创建一个新方法, 并调用public static void set字段,
‫我将其设置为static, 这样我就可以在main方法中使用它.
‫否则我将不得不创建一个object对象来练习以便使用set field｡
‫但让它静止是完全可以的｡
‫接下来在我的set field方法中, 我需要在右边的行中写很多控制台, 它看起来有点像这样｡
‫所以引号, 大量的空白字段, 然后一个管道, 一些空白字段, 再次, 一些空白字段｡
‫这是第一行｡
‫然后再次控制右线｡
‫您也可以使用see W双击｡
‫这是一个更快的版本, 然后两个空点或空地, 再一次一个管道｡
‫然后我做的是准备好它, 这样我们就可以显示数字了｡
‫我想显示的数字是什么？
‫这是我们以后要用到或创造的东西｡
‫所以现在, 我只说一, 二, 三｡
‫但稍后, 我们需要改变这种状况｡
‫所以我要把它加到我的列表中, 用变量替换数字｡
‫好吧, 我会的
‫现在, 我需要创建一个与该角色类似的角色｡
‫但是这里我会有下划线, 我们可以改变它, 如果我们以后发现这还不够, 或者看起来不太好,
‫我们可以很容易地改变它｡
‫好吧, 我会的
‫是这样｡
‫差不多就是这样了｡
‫我们现在需要做很多次｡
‫所以我要复制一下｡
‫我会把这些都抄下来｡
‫就这样
‫最后, 再来一排这个｡
‫应该差不多就是这样了｡
‫我们来看看｡
‫让我们调用这个方法集字段, 看看它在控制台上的样子｡
‫实际上, 我们需要运行控制台, 但红线或红色键更好｡
‫我们开始吧｡
‫就这样
‫它的位置还不完美, 让我们来看看｡
‫好吧, 我会的
‫所以问题是我需要五个｡
‫分距离｡
‫五个空位｡
‫我也是
‫一, 二, 三, 四, 五｡
‫那就好｡
‫现在让我们用它来替换原来的行｡
‫所以这是一个小小的测试, 你知道, 这是它的关于使它看起来很好, 有一些测试涉及｡
‫所以我在这里用同样的方法, 我将复制这两行, 并替换这两行｡
‫好了, 现在在这里, 我们应该有两个在两个方向｡
‫我们来测试一下｡
‫就这样
‫看起来已经好多了｡
‫一, 二, 三, 一, 二, 三
‫正如我所说的, 这些数字应在以后予以取代｡
‫但这已经是我们设置磁场的方法了｡
‫所以你可能会认为这已经可以帮助我们稍后重置该字段｡
‫好吧, 我会的
‫接下来, 既然我们有了这个, 我们需要真正地创建场｡
‫游戏场应该是, 嗯, 一个编程方面的场, 创造游戏场｡
‫它所做的是静态的或者实际上不创造游戏场, 但它将是游戏场静态的特征｡
‫所以这里也可以使用整数或字符串｡
‫但是字符是最节省资源的｡
‫我将调用一个游戏区, 在这里我需要有不同的行｡
‫所以一排一排二排三排然后下一排也一样｡
‫四个五个六个等等｡
‫所以我马上要把这些数字换掉｡
‫所以这个是四, 五, 六, 七｡
‫实际上, 这是七, 八和九｡
‫我们就这样了｡
‫这是我们的游戏场
‫现在, 我们需要做的是用这里的游戏场来替换这里的数字｡
‫这就是我们的游戏场在开始时应该看起来的样子, 我们想在后面替换这里的数字｡
‫由使用者决定｡
‫好吧, 我会的
‫所以我们在这里用的不是一个, 而是一个特定位置的运动场｡
‫所以实际上, 我们把这部分去掉了｡
‫现在你需要看清楚一点｡
‫这是一个运动场, 我需要把运动场放在0的位置, 逗号0｡
‫好吧, 我会的
‫现在我们对这两个做同样的事情｡
‫所以0, 逗号1和0, 逗号2.
‫第二排是101112
‫如果你不确定这是什么意思｡
‫这是第0行｡
‫这是第一排｡
‫这是第二排｡
‫是这样｡
‫这是罗茜·罗｡
‫给, 这是真实的
‫现在我们需要对第二排做同样的事情｡
‫所以这将是20｡
‫这将是21｡
‫最后, 我们有二, 二, 二, 二｡
‫所以现在让我们重新开始｡
‫我们应该还是会得到同样的结果｡
‫我们就这样了｡
‫一个, 两个, 三个, 等等｡
‫好极了｡
‫所以现在我们的竞技场已经准备好了｡
‫现在, 让我们看看如何获取用户输入｡
‫因此, 我们需要的是创造｡
‫一个变量, 它将成为我们的参与者
‫所以参与人是假设我们从参与人1开始.
‫所以我们把它设为参与人2你们稍后会看到为什么设为2是合理的.
‫然后我们需要用户输入, 输入值为零, 我将其设置为零, 因为这里没有一个字段是零.
‫所以在这里使用零是很好的｡
‫最后, 我们需要一个布尔值来检查输入是否正确, 因为如果不正确,
‫那么我们要通知玩家, 并尝试获得正确的输入｡
‫好的, 我会的
‫既然我们已经有了, 我们需要创建一个大的或非常长的做, 而这样做｡
‫在许多行之后, 我们有了野生声明｡
‫在这里我只想使用｡
‫是的｡
‫为什么他们用做而用真｡
‫那是因为我希望用户总是能够在我的游戏中输入一些东西｡
‫在这个例子中, 我在这里运行一些代码, 这些代码不会自动化｡
‫它依赖于用户输入｡
‫所以这不是一个无休止的循环, 但只要我们玩这个游戏, 它总是成立的.
‫这就是为什么我们需要边做边看｡
‫是的｡
‫好吧, 我会的
‫接下来, 我们要检查的是, 是1号参与人该上场还是2号参与人该轮到谁了？
‫如果player等于2, 则将player设置为1, 否则为｡
‫如果我们能在其他地方用英语｡
‫Player等于2, 所以你可以用els或者else如果在我们的例子中player只能有两个值｡
‫但如果出了问题, 由于某种原因, 球员增加到两个, 那么它总是会或增加｡
‫这个问题一直都是二号参与人的问题.
‫这就是为什么我要确定如果参与人等于1, 那么就换到参与人2.
‫现在, 根据轮到谁, 我需要运行一个switch case语句｡
‫所以我会说切换播放器｡
‫所以根据轮到谁, 让我们运行一些代码｡
‫假设这个案子是一个｡
‫所以这意味着玩家一转｡
‫实际上, 让我在这里添加一些代码｡
‫运行代码的时间为｡
‫程序运行｡
‫如果是一号参与人斯特恩, 我们该怎么办？
‫我们想确认一下｡
‫他输入了什么？
‫并分配编号｡
‫好吧, 给这个数字分配X｡
‫所以我们有了一个游戏场｡
‫所以这是一, 二, 三｡
‫我现在想要的是, 如果是参与人1, 那么我想把它换成X.
‫所以如果他进入一个, 举个例子｡
‫因此, 为了做到这一点, 我只需在这里创建另一个开关, 开关输入, 因为基于输入, 我想检查这个案例｡
‫一, 那么玩家是否进入了一个玩家或者在位置00的游戏区域, 应该用x来代替, 然后我们想休息｡
‫那我们就完了｡
‫顺便说一句, 它还在抱怨｡
‫这是因为我们没有打破这个开关循环, 现在我们这样做了, 现在它很高兴｡
‫所以我用一个x来代替这个playfield, 这里它在抱怨, 因为我用了string, 为了确保它能工作,
‫我现在用了CHA｡
‫所以可以看到一个过去的撇号｡
‫他们在那里是为了角色, 正如你所知道的, 游戏场上有很多角色｡
‫所以这是一个二维字符数组｡
‫所以我才要这么用｡
‫好吧, 我会的
‫这是第一种情况｡
‫现在我需要对不同的情况做同样的事情｡
‫那么对于第二种情况, 我们需要什么呢？
‫我们需要01号来处理31号案件｡
‫我们是第四个案子的02号｡
‫应该是10｡
‫第五种情况
‫是一对一
‫如果你不确定我在这里做什么, 再检查一次｡
‫罗伊零分｡
‫这是位置00｡
‫这是位置01, 这是位置02, 以此类推.
‫这就是我来这里的原因｡
‫所以我用正确的值替换它们｡
‫所以7在2, 08在2, 1, 9在2, 2｡
‫所以这是要去｡
‫如果参与人1输入一个值会发生什么｡
‫它总是会用X来代替它｡
‫现在我们能做的就是复制整个代码然后对参与人2做同样的事情？
‫所以我们可以说, 复制这个然后让参与人2运行它.
‫实际上, 我将向你们展示这一点, 以便你们了解为什么这不是最好的方法｡
‫所以我在这里再加一个案例｡
‫凯斯, 是两个｡
‫现在我们也需要摆脱它｡
‫所以实际上这个休息｡
‫应该在这里, 在这里我们打破｡
‫我们还有另一个开关案例, 所以我可以把这个代码复制到这里, 然后粘贴到这里｡
‫但是有一个更好的方法可以创建一个简单检查的方法｡
‫是参与人1还是参与人2实际上它只会返回一个X或O.
‫所以让我们继续创建这个方法｡
‫公共静态空, 输入x或O｡
‫我只想让事情简单一点｡
‫这里我需要一个整数｡
‫所以我需要一个整数, 我把它叫做一个参与人.
‫所以我现在要做的就是把这段代码从这里剪下来｡
‫所以switch语句, 我将在这里把它删掉, 这里不再需要它了｡
‫我仍然需要球员｡
‫我要创造一个新的角色｡
‫我现在把它设成一个空的符号或者一个空的字符, 不是空的.
‫它在这里面有个空间｡
‫如果参与者等于1, 那么我们可以在一行中计算.
‫玩家标志将会是｡
‫十､
‫否则如果一个参与人等于2, 参与人的符号实际上就是y或者o.
‫而现在｡
‫我们还需要用户输入｡
‫所以我需要你的意见｡
‫输入是什么类型的？
‫输入的是整数, 对吧？
‫所以我在这里用input, int, input, 现在我用播放器端来替换这个X.
‫好吧, 我会的
‫现在我们可以用这个方法来代替运行两次海岸代码.
‫好了, 既然我们有了这个方法, 我们甚至不需要switch
‫case了因为我们已经有了播放器.
‫我们说参与人一, 然后我们可以简单地在这里运行代码｡
‫那就这么办吧｡
‫让我们在这里设置播放器｡
‫因为这里的文本有点长, 我们需要使用花括号, 或者因为我们有一个多行代码要执行,
‫所以有｡
‫所以我们才要输入这个｡
‫好吧, 我会的
‫所以现在我可以继续了, 我可以去掉这里的整个switch case语句, 我只需要在这里调用我的方法｡
‫所以调用方法叫做enter x or O, 这里是enter X or O, 首先是参与者.
‫好的, 先输入玩家, 然后输入, 这就是输入.
‫所以我只说播放器和输入是我想在这里得到的｡
‫所以我对玩家也做了同样的事情｡
‫它的作用就是简单地把它设为X或者O｡
‫它会为我正确地运行代码｡
‫顺便说一句, 我们可以去掉这个土豆, 因为我们已经替换了它, 所以我们不再需要它了｡
‫好吧, 我会的
‫现在, 让我们检查用户输入, 因为我们还没有这样做｡
‫所以在这里我想创建另一个do while do while｡
‫什么是正当的呢？
‫那么条件是什么呢？
‫那就是输入正确是错误的｡
‫因此, 只要输入不正确, 我就想继续并重试｡
‫在这里, 我们要让玩家输入密码, 然后继续.
‫我现在进入这个控制台｡
‫好吧, 我知道了
‫而玩家在位置0｡
‫现在轮到哪个玩家选择你的领域了, 现在我们需要得到用户的输入｡
‫我将使用input, convert to int, 32, 然后使用控制台点读取行｡
‫所以我想得到用户的输入, 然后把它转换成我们的输入｡
‫所以它会使用这个字符串, 把它变成一个整数, 然后把它存储在input中.
‫现在我们可以继续使用input了, 这里已经使用了input的方法, 但这没有问题, 因为它是一个do
‫while循环｡
‫它将到达这个输入, 我将把它更改为我们输入的值｡
‫所以首先它会是零, 然后它会再次检查, 然后它会是我们输入的｡
‫好吧, 我会的
‫这是我们的关键｡
‫现在开始运行｡
‫看看会发生什么｡
‫好吧, 我会的
‫所以我们是这样的, 它没有显示我们刚刚写的文本｡
‫这一整条线｡
‫好吧, 我知道了
‫但如果我按回车键, 它就会出现｡
‫这是因为这里还有read键｡
‫因此设置字段读取键｡
‫我们之前就有了这个, 这样我们仍然可以看到我们的程序或游戏中有什么｡
‫如果我现在把它处理掉, 我们就没事了｡
‫是这样｡
‫参与人1选择你的领域, 我只输入一个比如, 现在它说参与人选择你的领域,
‫我将使用不同的领域.
‫现在还没有发生的是, 我们的文本还没有更新｡
‫所以这是我们必须处理的事情｡
‫现在, 为了做到这一点, 我们需要清除我们的控制台｡
‫这里会执行控制台点清除, 现在我们需要做的是, 每次在do循环中设置字段｡
‫所以set字段不应该只在main中运行一次, 而应该在每次进入do循环时运行｡
‫所以这意味着我们将在这里简单地设置场｡
‫现在让我们再运行一次｡
‫请选择你的领域, 我会用, 比如说六.
‫现在轮到我们输入4了, 现在我们可以看到6突然被输入了.
‫现在, 下次输入时, 应该输入4, 这样就可以了｡
‫所以我们还是有更新到后期的问题, 不是用户输入后更新, 而是事后更新｡
‫让我们来看看如何解决这个问题｡
‫这是因为设置字段是在我们检查球员之前｡
‫那就这么办吧｡
‫现在我们检查球员, 然后我们做设置字段｡
‫现在让我们再运行一次｡
‫让我们来看看, 选择一个字段｡
‫我选择第五个区域, 现在它是0或者实际上是2号参与人选择6, 这是个X.
‫现在3是O, 2是X, 以此类推.
‫所以我们有这个功能｡
‫但是我们仍然缺乏的是检查用户是否输入了允许或不允许的内容的能力｡
‫因为我还能做的就是重写｡
‫假设参与人1选择了另一个参与人再选择这个.
‫正如你现在看到的, 从O到X｡
‫所以参与人1会说, 好的, 现在我想得到这个域, 所以它会进入这个域.
‫所以我们现在要做的就是检查一个参与者是否已经输入了一些内容如果他输入了, 我们不希望另一个参与者允许或者被允许覆盖这个字段.
‫这就是我们在do while循环中需要做的事情,
‫因为在这里我们检查输入是否正确, 如果用户输入的值不正确, 我们可以将输入设置为不正确｡
‫顺便说一句, 我们还可以解决一个问题｡
‫如果我输入一个G, 程序就会崩溃｡
‫我有一个输入, 它产生了一个错误, 我们可以用try和catch得到这个错误, 我们可以用try
‫catch解决这个问题.
‫这将是一个非常非常简单的尝试接球｡
‫所以我不打算把它弄得更复杂｡
‫也是我唯一要做的｡
‫我要写在控制台的右线上｡
‫请输入一个数字｡
‫现在如果有人再这样做, 我会输入任何值｡
‫它还没有崩溃, 但它也没有写入控制台, 因为它在之后重置｡
‫难道不是吗？
‫是的, 它基本上是重置的, 因为我们这里不需要退出语句｡
‫所以我们下一步要做的是, 至少修复那个箭头｡
‫现在, 我们需要检查输入是否为1和playfield｡
‫在那个位置｡
‫所以在00, 也就是一个位置, 仍然是一个字符, 我们需要另一个括号｡
‫原来如此｡
‫然后设置输入｡
‫正确｡
‫至真｡
‫现在我们需要对我们拥有的每一个领域都做同样的事情｡
‫否则, 如果输入等于2, 而在那个位置的那个区域, 游戏区域仍然是开放的, 所以它会是0｡
‫一个还是两个｡
‫然后, 请继续并设置输入｡
‫正确的为真｡
‫我又少了一个等号｡
‫这就是我们现在需要多次复制和粘贴的内容, 这样我们就可以抓住每一个案例｡
‫所以是三, 四, 五, 六｡
‫还有这里｡
‫我在这里遇到了一个错误｡
‫七个｡
‫八个｡
‫九点｡
‫当然, 现在我也需要替换这些位置, 我需要调整这些字符｡
‫七八九｡
‫现在我们有三个是a02｡
‫四是在10｡
‫然后五个是1111实际上六个是一个二｡
‫那是20口径的｡
‫在21和22｡
‫所以现在我们有了所有正确的情况, 当一切都好的时候, 现在我们需要一个LS｡
‫所以其他的东西是不正确的｡
‫因此, 我们希望通知用户｡
‫所以控制台点号右行新行输入不正确｡
‫请使用另一个字段, 我们还可以确保将input correct设置为false｡
‫所以我们可以创建一个区域｡
‫所以我会跟注这个区域, 然后结束｡
‫就在这里和地区这一块之后｡
‫所以让我来吧｡
‫现在我也想告诉大家这个地区是做什么的｡
‫如果一个字段已经被占用, 它就是测试, 因为这是整个区域或整个do背后的想法,
‫而我们这里的代码检查, 这个字段是否被占用？
‫如果有人, 那就做点别的｡
‫如果没人, 那就去吧｡
‫现在让我们再运行一次｡
‫让我想想｡
‫一号玩家用一个｡
‫参与人2试图再次使用一个, 它说输入不正确｡
‫请使用其他字段｡
‫所以他用了两个｡
‫现在让我们利用它｡
‫好吧, 我会的
‫正如你所看到的, 我可以简单地输入不同的值, 一切似乎都很好｡
‫但是你也可以看到, 一号已经赢了两次, 所以他在这里过线了｡
‫这是我们接下来要检查的内容｡
‫所以我们需要检查是否有赢家｡
‫让我们创建一个新的区域｡
‫就在下面的设置领域, 我们检查的赢家｡
‫这是一个新区域
‫而我要直接结束这个地区和地区｡
‫在这里我有整个代码检查获胜条件｡
‫我们该怎么做呢？
‫好吧, 我们需要检查不同的球员有哪些角色｡
‫所以我们让这位球员签了名｡
‫一号是X, 二号是O
‫所以我们现在需要检查的是什么｡
‫或者说, 这样做是对的？
‫是的, 我知道
‫如果第一局是X第二局是O.
‫所以这些是正确的字符｡
‫我们需要检查的是, 或者我会用数组来使用它, 或者用数组来创建它｡
‫玩家角色是X和O｡
‫现在对于每个字符, 对于每个字符, 在玩家字符中的玩家字符, 我想检查获胜条件.
‫它要做的就是检查X和O是否成立.
‫所以在这里我们简单的检查一下, 是参与人1赢还是参与人2赢？
‫我们通过检查playfield00是否等于playerchar来实现｡
‫和操场01｡
‫等于参与者的字符数, 并且在02处的作用域等于参与者的字符数｡
‫因此, 如果是这样的话, 那就继续运行一些代码｡
‫所以在这里我就写这样的话, 看看我们有一个赢家.
‫好的, 我只想在我们写完整的if语句之前测试一下, 这个语句要长得多｡
‫所以参与人1会赢得第一行因为这是我们唯一进入的一行.
‫因此, 如果该数据列中所有三个字段的, 则字符是相同的｡
‫我们有一个赢家｡
‫所以这是我们在这里设置的唯一的东西｡
‫所以我会说, 好吧, 参与人1是一个｡
‫参与人2会是参与人1会是2, 5, 3我们有一个赢家.
‫你看第一行全是0或者是“哦”, 这意味着我们有一个赢家｡
‫现在我们需要做的是我们需要用我们可以拥有的所有不同的条件来取代它｡
‫现在有了这么多不同的位置, 如果你看一下这个博弈, 我会再次打开它｡
‫可能的获胜条件是一, 二, 三, 四, 五, 六, 七, 八, 九｡
‫然后我们有753159147258和369｡
‫所以我们有一, 二, 三｡
‫所以六个｡
‫再加两个｡
‫所以我们有八种不同的情况下我们有一个赢家, 这就是我们需要做的｡
‫所以我们需要用不同的选项创建八次｡
‫我就在这里停下来｡
‫每次我们都需要使用或符号, 因为这是或获胜的条件｡
‫所以我要再重复六次｡
‫所以我们有一, 二, 三, 四, 五, 六, 七, 八｡
‫那就好｡
‫现在, 就像我说的, 不同的条件是零, 零等等｡
‫同样的, 一个一, 011和一个二, 然后是第三行222021和两个二,
‫然后是从上到下的水平线｡
‫所以零零, 然后一零和二零｡
‫那我们有了｡
‫实际上是一对一｡
‫零和一｡
‫抱歉, 01｡
‫111和1202, 二, 一和二, 二.
‫现在我们有了对角线｡
‫所以是零零｡
‫那么让我查一下零零｡
‫然后一, 一, 二, 二｡
‫最后, 我们做到了｡
‫一, 二, 一, 一｡
‫还有｡
‫两个零｡
‫所以这应该是我们的八个条件｡
‫现在我们只需要检查谁有一个｡
‫所以我们在这里检查的是这个长语句｡
‫如果｡
‫玩家､ 角色或玩家字符等于x｡
‫我们知道参与人2有一个｡
‫所以游戏机红线在新线玩家二有一个｡
‫在这里我需要非常小心｡
‫好吧, 我会的
‫所以这是一个例子｡
‫另一种情况是另一个参与者有一个｡
‫我在这里用ls表示参与人1有一个.
‫而且我也想在这里突围而出｡
‫所以闯进来｡
‫让我们运行一下看看是否能重现｡
‫假设我们想要一个对角的｡
‫一, 二, 五, 三, 九, 我们看到一号参与人有一个.
‫我们现在要做的是重置游戏, 允许创建新的一轮.
‫所以玩家应该能够再次奔跑, 再次比赛｡
‫我们还没有讨论的是听牌, 所以我们仍然需要讨论听牌｡
‫但首先, 让我们重新设置场一旦我们有一个赢家｡
‫所以我想做的是在我爆发之前, 我想重置磁场｡
‫所以在这里, 为了重置字段, 为了设置字段, 我们已经有了一个函数或方法｡
‫我们创造了这个集合场方法来做这个｡
‫它会再次设置字段｡
‫但它还没有做的是, 它没有重置我们的游戏场, 因为我们的游戏场当前被设置为一个特定的值｡
‫这可能是X, 这可能是O, 等等.
‫所以为了确保我们可以随时重置, 我们需要复制它｡
‫这是标准版本, 我称之为playfield首字母｡
‫这是它最初的样子, 这是我们经常覆盖的｡
‫所以现在我们需要另一种方法来进行重置｡
‫重置方法将被称为公共静态空重置字段｡
‫这里我需要做的是, 首先, 我需要把我的playfield设置为playfield的首字母｡
‫那么它是如何开始的, 然后我可以设置我的场, 现在让我们重置游戏, 一旦玩家有一个, 这是在这里｡
‫一号参与人有一个或者二号参与人有一个.
‫让我们在这里重置, 重置场｡
‫顺便说一句, 也许我们还应该告诉玩家或用户, 他们可以重置游戏｡
‫所以请控制台右行, 并或按任意键重置游戏｡
‫而在这里我们只是说｡
‫控制台红色键, 然后重置游戏｡
‫好吧, 我会的
‫我们来测试一下｡
‫选择您的领域｡
‫1到539.
‫一号玩家有一个｡
‫玩家请按任意键重置游戏｡
‫我按下任何一个键, 它们就出现了｡
‫我们已经重置了游戏, 现在是玩家两轮游戏｡
‫就像你在这里看到的｡
‫选择您的领域｡
‫现在让我们再试一次｡
‫如您所见, 我们现在有不同的顺序｡
‫玩家2作为玩家1, 请按任意键重置游戏｡
‫好极了｡
‫如果我输入了任何错误, 我仍然会得到这个错误, 但这没关系｡
‫这正是我想要的｡
‫所以我接住了｡
‫我用它捕捉到错误｡
‫试着抓住我们的手｡
‫所以现在只剩下一件事了, 那就是是否有和局｡
‫而且有很多方法可以解决这个问题｡
‫最简单的方法就是创建一个变量, 叫做回合数,
‫这个变量用来保存我们已经玩过的回合数.
‫结束圈数等于零｡
‫一开始我们的圈数为零, 每次我们重置磁场或设置磁场时, 我们都想把圈数增加1｡
‫因为这个方法｡
‫什么时候叫？
‫让我们检查设置字段｡
‫每次我们进入do while循环时都会调用它｡
‫而且只有在用户输入正确的情况下｡
‫现在, 如果我们有这个turns字段, 我们还需要注意重置turns字段｡
‫一旦我们一个场地一个场地地重新设置我们的整个场地, 我的意思是就像这是我们比赛的场地一样｡
‫但是turns是一个字段因为它是一个全局变量, 对吗？
‫所以我想在我们重置游戏后重置回合数｡
‫所以这里重置场, 我们说圈数等于零, 或者更准确地说, 因为我们已经把圈数增加了1, 我们需要在之后再做｡
‫所以现在我们只需要检查这个条件是否为真｡
‫所以这里我们有获胜条件, 如果是else.
‫这里是if语句｡
‫这是WL语句｡
‫所以如果没有赢家, 就只有平局｡
‫或者更准确地说, 如果圈数等于10, 我们就和局了.
‫所以我们在这里说的和我们在这里做的是一样的｡
‫我们也需要打破游戏, 我们也需要重新设置游戏｡
‫因此, 重置字段和｡
‫我们应该告诉玩家没有赢家｡
‫所以我在这里输入draw as text｡
‫好了, 现在我们解决了一个问题, 所以, 首先, 我们要和局｡
‫让我们先看看抽签结果｡
‫一二三四｡
‫六五｡
‫八九七｡
‫我们看到我们拿到了听牌｡
‫那就好｡
‫按任意键重置游戏｡
‫那也行｡
‫现在让我们再试一次｡
‫实际上, 不是画画, 而是赢｡
‫我们看到参与人2是1｡
‫我按下回车键, 我们的博弈不会重置, 这和这里的静态变量有关｡
‫所以这个字符的初始值, 我需要把它去掉,
‫我需要把它设为静态的, 来创建一个局部变量, 它会在重置域中.
‫我将创建这个playfield的首字母, 并将其设置到我的playfield中｡
‫让我们再测试一次｡
‫一二三四五六七
‫玩一有一｡
‫好了, 现在一, 二, 三, 四, 五, 六, 七｡
‫第二步是在一个键下, 你可以看到它重置｡
‫现在, 我已经弄明白或测试过的东西, 发现仍然有一点错误, 是二, 一,
‫三｡
‫四个, 然后五个, 六个, 八个｡
‫正如你所看到的, 我们有一个条件, 即玩家有一个, 但它没有被抓住, 或者它没有被抓住,
‫或者在这里被抓住.
‫所以你可以看到参与人2有一个｡
‫所以即使一号参与人有一个000或者0.
‫所以我这里的条件还是有一点问题, 你可能早一点就已经弄清楚了｡
‫我来告诉你们怎么解决这个问题｡
‫这应该是这里的条件｡
‫所以01, 然后是11, 这个不应该是12, 而应该是21｡
‫现在让我们再测试一次｡
‫让我们看看是否能捕捉到这种情况｡
‫一, 二, 三, 五, 四, 八.
‫我们把二号玩家看成一号｡
‫好吧, 我们有了这个｡
‫是的, 差不多就是这样｡
‫我们的游戏在运行, 它做了它应该做的｡
‫当然, 有些事情你还可以改进｡
‫举个例子, 这个字符符号｡
‫所以我们把一个输入交给他们, 然后再检查一次, 然后我们创建了一个字符符号, 等等｡
‫但我们可以让它更简单｡
‫所以我们这里不考虑播放器本身｡
‫但是我们需要一个字符, 也就是玩家的字符或者符号.
‫所以应该是这可能是同一件事｡
‫所以玩家手势更有意义, 因为我们在这里已经用过了｡
‫这样我们就不需要在这里创建所有的代码了｡
‫所以我们把它去掉吧｡
‫当我们调用这个方法的时候, 我们就把字符交给它｡
‫所以对于参与人1, 我们说是, 哦, 我想是参与人2, 是X.
‫所以这也会起到同样的作用｡
‫现在, 我们已经减少了一些代码行, 您甚至可以进一步改进代码｡
‫但这只是一些代码, 我认为你们应该能够根据本课程到目前为止学到的内容编写这些代码｡
‫好吧, 我会的
‫所以我希望你能做到这一点, 尽管在你的情况下看起来非常不同｡
‫请继续并分享您的解决方案｡
‫或者, 如果您采用了我的解决方案并进行了改进, 请继续与大家分享｡
‫是的, 差不多就是这样｡
‫我知道这是一个很长的视频, 但我希望你从中学到了很多｡
‫即使你自己没有做, 你也只是跟着它沿着, 并试图建立它｡
‫下一个视频我们将探讨另一个话题｡
‫那到时见｡