OpenSceneGraph介绍:
OpenSceneGraph(以下简称OSG)是一个开源的三维引擎,被广泛的应用在可视化仿真、游戏、虚拟现实、科学计算、三维重建、地理信息、太空探索、石油矿产等领域。OSG采用标准C++和OpenGL编写而成,可运行在所有的Windows平台、OSX、GNU/Linux、IRIX、Solaris、HP-Ux、AIX、Android和FreeBSD 操作系统。
更多关于OSG的信息:http://www.openscenegraph.org/
游戏大致规则:
昆特牌是一款以北欧风格为背景的回合制卡牌类游戏。每局由两位玩家进行游戏,胜负的判定方式是3局2胜,先赢2局的玩家获胜。玩家开局会在卡组中随机抽取10张卡牌。与一般卡牌游戏不同的是除了依靠少数效果卡和群组效果以外玩家是无法抽取新卡的,也就是说全部的2-3小局游戏里玩家只有10张卡可以用,用过的卡在下个小局中无法再次使用也没有新卡补充。
单位卡分为3类,近战,远程和攻城。每类占一横排。一小局游戏结束时,全部攻击力量值相加,大的一方获胜。一小局游戏中,双方轮流出卡,一次一张,直到一方没卡或者主动按空格键结束出卡时一小局结束并开始清算力量点数。天气卡会影响双方同一种类的单位。
详细规则参见:
http://witcher.wikia.com/wiki/Gwent
类的设计:
Director负责控制游戏逻辑及行为,下属两个Player对象
Player负责控制一盘游戏中某个玩家的行为,玩家输入由PickHandler检测并给出相应信号以另Player反应
P2Callback是一个响应对象,他的operator方法在每一帧都会被调用一次,用于实现动画效果和网络消息收发。
DataRecieverThread是一个线程,用于接收网络消息。
Deck、Garabge、Hand分别是三个CardStack的子类,CardStack是一个卡牌的栈。
Field下属四个CardStack:weather、meele、archer、siege。
这几个CardStack在游戏中分布如下:
游戏的控制流程如下:
界面设计:
客户端登录时需输入服务器ip地址,登录界面如下:
输入正确的服务器ip后可连入并选择房间,若房间已满会以”full”进行提示,若强行进入会被踢出服务器:
进入房间后等待两位玩家全部进入后即可开始游戏: