👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。
IP协议
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 毕设桥牌 ” 获取。👈👈👈
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 毕设桥牌 ” 获取。👈👈👈
一、设计要求
使用python语言,基于Pygame模块,开发一款壳牌游戏。桥牌游戏需要四名玩家,形成两个合作伙伴关系。你坐在你的搭档对面,需要的所有条件就是一副牌。桥牌游戏由许多 DEALS 组成。在每笔交易开始时,所有的牌都会在桌子周围分发,这样每个人都有 13 张——他们的手牌。然后应该将卡片分类成花色;黑桃、红心、方块和梅花。
每个过桥交易有四个主要阶段:
1)分发卡片
2)投标(或拍卖)
3)出牌(或宣告)
4)得分
双方都拿 TRICKS(TRICK 是每个玩家贡献一张牌,最高的获胜)。两名防守者与一名宣告者竞争,尝试完成或击败第 2 阶段设定的合同或目标。第四名玩家这手牌他的工作已经完成,因为庄家也玩他的牌,所以他可以放松一下。
最后,根据事先定义好的规则和最终的技巧计数为每个合作伙伴分配分数。如果 Declarer 至少做了与他签约的一样多的技巧,那么他的队伍就会得到积分,规则定义的分数越高或者庄家的倍数越高那么他得到的积分就越多。但如果投得太少,那么防守者就会得到分数。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 毕设桥牌 ” 获取。👈👈👈
二、功能展示
在分为四层游戏框架中,游戏系统层是该游戏的主要开发涉及部分。整个游戏大部分模块的实现和管理是在游戏的系统层完成,在模块之间,分工明确同时耦合性也减少了,各模块的可重用性增加。
启动模式选择设计模块主要包含人机对战模式、局域网对战模式、加入局域网设计模块,以及选项设置模块。其中,游戏的整个启动模块的设计如下:
图:启动模式设计流程图
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 毕设桥牌 ” 获取。👈👈👈
启动游戏后,用户界面会提示用户选择何种游戏模式,用户可以根据自己的喜好选择游戏的开始方式。通过title遍历文件夹下存储图像在前端界面上显示,这样在一定程度上简化了图像处理方面带来的开发工作,title文件夹下标题卡片的显示如下:
图:标题图像前处理
设计完成后,成品游戏的主界面设计如下:
图 用户选择界面交互设计
pygame前端提供了一个用户界面,方便用户将任务发送到后端处理程序,同时将最终返回的结果显示给用户。后端逻辑代码部分需要提供api供前端调用。它负责与GPU交互,并将用户输入的任务发送给GPU。GPU服务器上的竞价模型进行预测,并将预测结果返回到后端逻辑代码。后端不仅需要能够对用户输入执行简单的验证,还需要有特定的错误处理机制来处理GPU服务器没有响应的情况。各部分的具体功能如图所示:
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 毕设桥牌 ” 获取。👈👈👈
启动时,系统会随机分发给玩家11张牌,作为玩家的基础手牌,中间时用户的摸牌区和出牌区,用户出牌前用户需要先选一张牌,才能进行出牌,出牌时,用户需要用鼠标拖动到出牌区,才能进行出牌:
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 毕设桥牌 ” 获取。👈👈👈
选项模块主要是为了改善用户体验而设计。为了满足用户期望,使得用户能够按照逾期的设置的游戏配置进行游戏,选择主要通过checkbox、编辑框以及按钮的形式对游戏进行配置。主要目的是为了减少用户的操作性,使得配置界面的使用更加接近用户的使用方式,降低配置的使用门槛,配置界面的主要界面交互界面如下:
了查看玩家手牌出现的频率,使用自己的电脑做了一组实验。在实验中,使用自然系统中生成了大量的手牌数据。目前,使用测试数据积累了近500个的历史手牌记录和双假手比赛记录。我们随机生成了近4,000,000个真实竞赛回合作为我们的数据测试数据集,用来验证测试结果是否公平。数据作为测试数据。每个实例都包含四个玩家的真实手牌、历史竞价序列和双假手牌的结果。
上图显示了每个玩家每张牌出现的概率大致相同。投标序列长度在数据集中的分布如图下图所示:
从上图可以看出,它呈正态分布。大部分竞价集中在8 ~ 13的末尾,手牌序列过长或过短的概率非常低。换句话说,用户得到的牌是极好的牌和极坏的牌的概率极低。通过验证,证明随机发牌系统的算法是正常的。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 毕设桥牌 ” 获取。👈👈👈
在测试案例中,每个玩家的手都用一根绳子表示,中间用点隔开,点代表玩家手中的花色,显示上家首先出牌。在自然系统中,这是一个公开竞价,这意味着HCPs超过12分,有四张卡牌。根据自然叫牌系统,我们可以从手牌中看到,对方玩家有13个手牌。当北方玩家的队友,即己方玩家,收到这个公开叫牌时,玩家应该理解上述信息。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 毕设桥牌 ” 获取。👈👈👈
上图显示了南方玩家在得到叫牌后预测对方玩家平均HCPs的概率分布。不难看出,己方玩家表示对方玩家HCPs的概率在12-14之间,这符合自然系统的规则。
图:上家不同花色的牌数分配
图 上家选手手牌的分布
表示预测结果不如最佳结果。绝对值越小,预测越准确。表3中的结果表明,我们的模型在所有模型中具有最好的性能,尽管我们的模型在不使用强化学习的情况下更简单。
从图中可以看出,在某些程度上,我们设计的算法略微逊色于机器学习的算法所预测的效果,但是介于是最简单的实现方式,因此我们选用了当前的传统的计算方式。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 毕设桥牌 ” 获取。👈👈👈