今天早上,在床上不想起,突然闪现一个想法,为啥我不写一个象棋的程序呢?然后我就开始构思,怎么写一个象棋的程序?
象棋和五子棋差不多的,都需要对棋子进行定位,那怎么样让电脑知道我的棋子在棋盘上的那个位子呢?而且,怎么让电脑知道我的棋子是哪一个?是像车一样的自走,还是像马一样走日字格呢?
和写五子棋的方法一样,我应该用数组来表示整个棋盘,然后用不同int类型的数字来表示不同的棋子,对不同的数字进行限制规则就可以表示了各种不同的棋子啊!正在这时,我想到了c++ primer中曾说到,作为c++ 程序员 应当习惯用vector这个容器来代替数组。那我何不用vector来代替数组来表示整个棋盘呢? 但是,现在有个问题突然挡住了我的思路。Vector是一维的啊,但是我需要的是二维的啊。那我该怎么让vector来代替二维数组呢?正当我想尽各种办法的时候,我想到了c++ 老师曾这样讲过可以用一维数组来代替二维数组,只要把一维数组分成几段,来表示不同的行或者列,则可以表示为一个二维的数组了。对啊!既然一维数组可以代替二维数组,那么vector容器也可以代替二维数组啊。
那怎样让计算机知道我下的棋子应该在vector的第几个元素呢?其实,只需在我放下棋子后获取我这里的坐标,然后根据像算五子棋的方法,先算在一行中是第几个,在算出在哪一行。如每行一共有10个格子 如果在从左边数是第x个,从上面数下来是第y个,则这一点的在vector上的元素序号为 x+10y-1即可。正是这样,就可以把vector代替二维数组的问题解决了。^_^