在一个完整的中国象棋游戏中,一般界面上都显示了中文着法,为了简单起见,我开发的这个用了两个着法列表,红方一个,黑方一个,其实用一个就够了,只是感觉那样稍微会麻烦些。着法列表显示了每一步的走棋。下图是着法列表的截图:
着法列表用的是一个叫StepList的类来实现的,因为有两个着法列表,所以用了两个StepList对象。实例化的时候,指定一个特殊的参数用来标示是左边的还是右边的。像下面那样。
StepList类包括以下数据成员:
一个QPixmap对象:用来标示是哪一方。
一个QTableView指针对象:用于显示中文着法。
一个QStandardItemModel指针对象:用于向tableView赋值。
四个QPushButton指针对象:用于实现翻页和翻行功能。
一个QLabel指针对象:用于显示当前页面信息。
一个int类型成员:用于标示当前是第几步。在翻页和翻行中用到。
一个QVector容器:用于保存所有的着法历史。
有哪些成员函数,我就不介绍了,大家可以去看代码。
关于tableView,下面是创建的代码:
我们指定了tableView是3列15行,显示哪些内容。每列的大小。
翻页和翻行是整个类中最主要的内容,用一个currentOrderNumber的成员变量记录当前走法的序 ,根据这个我们可以确定当前页是第几页以及当前页的序 范围,这样我们就可以从vector中取数据,然后显示到界面上,比如说当我们点击“>”按钮后,当前选中的记录就是下一条记录,序 就会加一。下面是下一行和下一页所做的事情:
翻行和翻页,都是先设置currentOrderNumber的值,让后调用updateHistoryDisplay更新列表显示。我们每走一步完整的棋,记录就会下移一行,就相当于调用nextRecord。
源代码下载链接:http://download.csdn.net/detail/zxywd/9172917
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!