棋类游戏的悔棋功能

14 篇文章 0 订阅

最近再完成一个棋类游戏的项目。其中悔棋的功能卡住了我半天,原理都懂,就是利用栈的回退功能。可是我回退了之后发现和没回退没什么两样。。。

我使用一个List来保存棋子的坐标,每走一步之前都把List压入栈。出了问题之后,调试出来的结果让我大吃一惊,栈里面的东西都是一样。后来想明白了,可以这样理解为栈保存的是List的地址(当然这样理解有错误),可是List的地址从来没有变过,因此每次回退得到的数据都是一样的。 明白错误的原因之后,解决方法就很简单了。在一个定义域内声明一个List,然后将全局List的内容一个一个的传给域内的List(不能简单的=),然后再把这个域内的List压入栈。随着定义域的失效,List也就没有了,但是栈中还存在着。这样会退的时候只需要 List=栈.pop()就可以了。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值