【发布时间】:2023-09-06 09:59:01
【问题描述】:
我想用 C 编写一个井字游戏版本,其中我们有'n × n' 棋盘由用户决定,输者由第一个获得第一个'n' X 的人决定或 O 在一行或一列等中。
其中一个要求是让玩家能够撤消多个步骤,这意味着通过输入一个负奇数返回到几步前的棋盘状态。
例如,如果玩家 1 输入“-3”作为行索引,则游戏需要恢复到之前 3 步的状态(如果游戏中已经完成了 3 步),显示棋盘并轮到玩家 2。
知道我将如何制作这样的功能,或者至少给我一个提示,我将如何开始对其进行编程?
谢谢!
【问题讨论】:
-
保留所有已进行的移动的数组。要撤消移动,只需返回数组并清除已播放的单元格。
-
@TomKarzes 意思是为每一步创建一个新数组?
-
我认为他的意思是创建一个可以表示所有步骤的数组,因为每一步都将移动添加到数组中。然后要撤消,您只需备份该移动次数即可擦除每个单元格中的内容。您可以使用 9 元素数组来实现井字游戏,并为
x和o存储1或0。 -
@DavidC.Rankin 哦,我知道了,非常感谢!
-
另外,撤消的方式通常是你有一个简单的结构来保存描述移动的信息,比如 cell 和 X/O。然后,每次移动都将移动压入一个简单的堆栈,要撤消,只需弹出最后一个移动,无论你喜欢多少移动。你可以用一个简单的结构数组(或者最基本的两个数组)来做同样的事情。只是可以掌握每个动作的“内容和位置”的东西。
标签: c function tic-tac-toe undo revert