悟:由棋类游戏想到让vector代替二维数组

   今天早上,在床上不想起,突然闪现一个想法,为啥我不写一个象棋的程序呢?然后我就开始构思,怎么写一个象棋的程序?

象棋和五子棋差不多的,都需要对棋子进行定位,那怎么样让电脑知道我的棋子在棋盘上的那个位子呢?而且,怎么让电脑知道我的棋子是哪一个?是像车一样的自走,还是像马一样走日字格呢?

和写五子棋的方法一样,我应该用数组来表示整个棋盘,然后用不同int类型的数字来表示不同的棋子,对不同的数字进行限制规则就可以表示了各种不同的棋子啊!正在这时,我想到了c++ primer中曾说到,作为c++ 程序员 应当习惯用vector这个容器来代替数组。那我何不用vector来代替数组来表示整个棋盘呢? 但是,现在有个问题突然挡住了我的思路。Vector是一维的啊,但是我需要的是二维的啊。那我该怎么让vector来代替二维数组呢?正当我想尽各种办法的时候,我想到了c++ 老师曾这样讲过可以用一维数组来代替二维数组,只要把一维数组分成几段,来表示不同的行或者列,则可以表示为一个二维的数组了。对啊!既然一维数组可以代替二维数组,那么vector容器也可以代替二维数组啊。

那怎样让计算机知道我下的棋子应该在vector的第几个元素呢?其实,只需在我放下棋子后获取我这里的坐标,然后根据像算五子棋的方法,先算在一行中是第几个,在算出在哪一行。如每行一共有10个格子 如果在从左边数是第x个,从上面数下来是第y个,则这一点的在vector上的元素序号为 x+10y-1即可。正是这样,就可以把vector代替二维数组的问题解决了。^_^

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值