欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    Windows下基于C++ QT的德州扑克游戏.doc

    • 资源ID:2385032       资源大小:70.50KB        全文页数:17页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Windows下基于C++ QT的德州扑克游戏.doc

    吉林大学珠海学院毕业设计(论文)Windows下基于C+ QT的德州扑克游戏Texas Poker Game Based Windows and C+ QT完成日期 2013年 4月 15 日吉林大学珠海学院本科毕业论文(设计)开题报告摘要随着嵌入式系统、图形用户界面(GUI)的广泛使用,QT越来越多人使用。QT作为一种先进的跨平台语言,他有广泛的平台支持,可以在Windows、Linux以及Symbian和众多的嵌入式场合发挥作用,并且他是一种动态库的形式,占用的资源非常少,开放平台,使用他进行GUI开发是非常合适的。本程序采用QT Creator集成环境进行编写,使用QT应用程序开发框架,运用VS2010的工具链。实现的程序分为两个模块,第一部分是本地游戏,使用电脑模拟不同数量的人进行与人对战游戏,第二部分是网络游戏,其中一个玩家建立服务器主机,其他玩家可以加入到主机中进行对战,实现了不同距离玩家的较量。关键词:GUI; QT;跨平台;网络对战游戏;德州扑克AbstractAs the embedded system and GUI(Graphical User Interface) are widely used,QT is more and more famouse.QT is a cross-platform language that embedded in Windows, Linwx and Symbian. As well as, QT is good at GUI developing as using less resource and supporting dynamic library,open platform.The system is developed by VS2010 and QT frame in QT Creator platform.It is consist of two modules, one is local game module,which simulating game between computer and player; and the another is network game module,which providing game between localhost and player who connecting to it. The system implements multi-player to play game.Key words:GUI;QT; Cross-platform; Network Game; Texas Hold'em目录1 绪论11.1 研究背景 11.2 Qt 概述 11.2.1 QT语言的特性11.2.2 QT的优势11.2.3 QT的组成21.3 数据库简介 21.4 开发环境简介 21.4.1 QT Creator概述31.4.2 MyEclipse概述31.4.3 JSP概述31.4.4 Boost概述31.4.5 SDL及SDL_mixer概述42 需求分析52.1 可行性分析 52.1.1 德州扑克玩法介绍52.1.2 程序可行性62.2 需求分析 62.3 系统功能分析图 73 总体设计83.1 系统结构图 83.2 总体功能设计 83.3 数据库设计 94 设计思想与实现104.1 设计思想 104.2 具体实现部分 104.2.1 使用Qt进行GUI开发的一般流程104.2.2 新建工程114.2.3 程序的类图部分144.3 程序调试 174.3.1 QT Creator调试器174.3.2 QT调试方法185 系统测试与运行205.1 系统运行环境 205.2 运行结果 206 结束语22参考文献23附录一核心代码24致谢341 绪论1.1 研究背景QT是一个跨平台的C+应用程序开发框架,我们也可以称之为C+部件的工具箱。QT被用在KDE桌面环境、Google Earth等的开发中。它是诺基亚(Nokia)的QT Development works部门的产品。QT的应用领域也比较广泛,很多出名的例子都是使用QT进行开发的,例如:Google地球、Xconfig、SMPlayer等等1。QT具有下列优点:A、面向对象。B、优良的跨平台特性。C、支持2D/3D图形渲染,支持OpenGLD、大量的开发文档。E、丰富的APIF、XML支持。实现本程序,一方面,可以更好的理解QT的跨平台特性、加深对C+的学习、学习运用C+的扩展类库等库文件的加入,另一方面,可以加强对QT知识的传播,使越来越多的人来了解QT,学习QT开发,完善QT。1.2 Qt 概述QT是一个可以用在多平台的C+图形用户界面应用程序开发框架,提供了一组更容易理解的GUI类,他的运行速度更快,另外QT特有的信号跟槽特性使他更容易使用。QT面向对象而且容易被扩展, 允许真正地进行组件编程。QT具备有与平台无关、优化内存和资源的利用、代码开源、模块化可剪裁,使QT越来越受大家的欢迎。1.2.1 QT语言的特性QT是Trolltech公司的一款用于图形开发编程的产品,采用完全的面向对象来进行图形应用程序的设计开发,实现允许真正意义上的组件编程,QT可以说是一个全面的C+应用程序开发框架,包含了一个类库,和用于跨平台开发及国际化的开发工具,可以开发出跨平台客户端、高性能、服务器端部分的应用程序。1.2.2 QT的优势作为嵌入式图形界面开发工具,QT优势很多,比如:A.支持平台广泛B.封装多C.面向对象D.构件支持E.友好的联机帮助F.便利性G.用户自定义H.国际化I.丰富的API函数J.可用户化外观K.完整的一套组件工具1.2.3 QT的组成QT是一个完整的C+应用程序开发框架。其中里面包含一个类库和应用于跨平台开发的国际化工具。主要组成部分是:A.QT类库B.信号/槽机制C. QT Designer图形设计器D. Qmake工具1.3 数据库简介数据库SQLite是一款微型数据库,他遵守ACID的关联式数据库管理系统,设计目标是嵌入式的,它占用资源非常的低,使用起来简单方便,在很多的嵌入式设备中,可能只需要几百K的内存就已经足够了。另外,他支持的操作系统比较多,几种开发语言能结合在一起,速度快,效率高2。1.4 开发环境简介本程序采用的开发环境:* qt-creator-win-opensource-2.6.2* qt-win-opensource-4.8.4-vs2010* Visual Studio2010网页注册方面:* JDK 1.6* MyEclipse* JSP* SQLite* Tomcat 6.0涉及到的其他开发技术:* Boost* SDL* SDL_mixer运行环境:建议能够在Windows 98以上的操作系统环境下进行运行1.4.1 QT Creator概述Qt Creator是跨平台的Qt IDE,Qt Creator是Qt被 Nokia 收购后推出的一款新的轻量级集成开发环境(IDE)。这个IDE 能够跨不同平台进行运行,支持的系统部分有有Linux(32 位及64位)、Windows以及Mac OS X 等等。Qt Creator的设计目标是使开发能够利用Qt这个应用程序框架能使我们更加快速的完成开发任务。Qt Creator具有项目生成向导、浏览文件及类的工具、Qt Linguist、Qt Assistant、高级的 C+ 代码编辑器、集成了 Qt Designer、图形化的 GDB 调试前端、集成 qmake 构建工具等等组成部分3。1.4.2 MyEclipse概述MyEclipse企业级工作平台(简称MyEclipse)是对EclipseIDE的扩展,利用它,我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能4。1.4.3 JSP概述JSP是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态技术标准。在传统的网页HTML文件中加入Java程序片段(Scriptlet)和JSP标签,就构成了JSP网页java程序片段用来重新定向网页、操纵数据库等功能,可以为我们实现建立动态网站所需要的所有功能。1.4.4 Boost概述Boost库是为C+语言标准库的开发提供了扩展部分的一些C+程序库。Boost库由Boost社区组织开发、维护的库。目的是为了给C+程序员们提供免费、可移植的、同行审查的程序库。Boost库可以与C+标准库完美结合工作,并且为其提供扩展部分功能。Boost库使用Boost License来授权使用,根据该协议,商业的非商业的使用都是允许的并且得到鼓励5。1.4.5 SDL及SDL_mixer概述SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言进行编写。在SDL里面提供了很多控制声音、输入输出、图像的函数,让开发者们只需要运用相同或者是相似的部分代码就可以开发得出跨多个平台系统的应用软件。现在,SDL多用于模拟器、媒体播放器、开发游戏等多媒体应用领域。而且SDL_mixer是SDL的外部扩展类库,能够实现mp3的播放等功能。2 需求分析2.1 可行性分析2.1.1 德州扑克玩法介绍德州扑克的游戏规则:10个人桌(full table)有限注德州扑克游戏中,每张桌子最多可以坐下10位游戏玩家。首先给每个玩家各自发两张底牌(又称之为“窝牌”,或者“起手牌”),只有玩家自己本人能看到自己的底牌。此后过程中,牌桌上共会出现5张公共牌(Community Cards)。第二轮进行下注,翻出3张公共牌,称之为“翻牌”( Flop,也叫做“悬牌”)。再下一轮,出现第4张桌面公共牌,称为“转牌”(Turn)。最后的一轮中,出现第5张公共牌,叫做“河牌”(River)。每位玩家都能使用这5张公共牌。底牌和公共牌的组合如果确定胜负玩家呢?玩家的手里2张底牌和桌面上的5张公共牌加在一起,一共7张牌,从其中选出5张牌,组合成一副最好的牌面,成牌最大者也就是赢得所有赌注的玩家。庄家(DEALER,又称“按钮”)庄家的座位下面有一个“D”作为标志。所有玩家都以顺时针的方向,依次轮流的坐庄,从翻牌圈的回合开始,庄家在每一轮中都是最后一个出牌的。盲注(BLINDS)每一次游戏中,庄家左边方向的两位玩家,先下固定的初始下注,我们称为小盲注(Small Blinds)与大盲注(Big Blinds)。大盲注的数额,取决于本桌游戏的限额多少。小盲注通常都是大盲注的一半。例如,在限注为$4/$8的桌上,大盲注为$8,小盲注为$4。四轮下注:德州扑克游戏进行中一共具有四轮游戏投注圈。分别称为:1)翻牌前(PREFLOP,也称之为“前翻牌圈”):拿到两张底牌,不能看到公共牌。2)翻牌圈(FLOP):公共牌翻出3张牌3)转牌圈(TURN):公共牌翻出第4张牌4)河牌圈(RIVER):公共牌翻出第5张,也就是最后一张公共牌玩家的出牌选择有限注德州扑克游戏中,玩家可以选择过牌(Check)、下注(Bet)、跟注(Call)、加注(Raise)或弃牌(Fold)。每轮最多能加注3次。下注(Bet) 现在你打算投注,之前无人投注观望(Check) - 现在你不打算投注,之前无人投注跟注(Call) 现在有人投注,你也下注同样数目金额加注(Raise) 现在有人下注,你在他的基础上加倍下注弃牌(Fold) 现在有人下注或加注,但你不想再玩,选择放弃了赢得牌局或平分四轮下注游戏结束之后,在留下的玩家当中,组合出5张最大牌的一方玩家获得胜出,赢得所有的筹码。如果两人或多个人组合出相同的牌并且牌面是比其他玩家大的,则平分(SPLIT)底池的所有筹码6。2.1.2 程序可行性德州扑克游戏的实现首先是随机从52张牌中抽取五张牌作为公共牌,之后每个玩家分发两张手牌。虚拟的玩家按照手牌的优劣进行押盲注或者网络中的玩家进行押盲注,当不再有人进行加注时翻开三张牌结束第一回合。接下来继续押注或者弃牌,直到没人加注,翻开第四张牌结束第二回合。继续进行押注或者弃牌,一直到没人加注为止结束第三回合部分,当翻开第五张牌时结束第四回合。翻开所有玩家的手牌,从玩家手牌与公共牌中取出五张牌得出最大的组合,最后比较出所有玩家的五张牌,得到胜出的那个玩家,游戏结束。此功能的本地虚拟玩家或者通过网络传输玩家信息及动作是完全可以实现的。并且程序的运行只需要一个简单的网页注册服务器,客户端可以建立主机,实现其他客户端加入主机,用监听的程序进行编写,因此认为本程序可行。2.2 需求分析德州扑克游戏程序目前只支持windows的操作系统,其他平台的操作系统支持没有编写完。网络游戏部分要求要有个注册的网页服务器,当用户点击注册时弹出网页进行注册,把信息加入数据库中,注册完之后。在客户端点击登录进行账号验证,只有在数据库中的账号与正确的密码才能通过验证。其他部分没有具体要求根据系统分析,德州扑克游戏的要求如下:A. 系统需求分析:a. 能在本地与不同数量的电脑玩家进行游戏;b. 能通过局域网与真实的其他玩家进行游戏;c. 本地游戏时可以控制玩家的出牌速度;d. 游戏可以设置玩家的初始金钱数,及小盲注,玩家的人数也可以设置,最大的人数是七人;e. 主机在建立游戏时可以提出加入的游戏玩家。f. 游戏界面可以根据系统的语言进行切换。B. 系统性能要求:a. 系统安全、可靠;b. 使用软件工程的设计思想,控制系统运行时可能会存在的所有突发情况。2.3 系统功能分析图下图是列出德州扑克游戏的功能流程图:德州扑克程序普通用户会员用户登录用户注册进入网络游戏搜索出网络中存在的主机进行本地游戏加入网络主机中进行游戏创建网络主机网页注册开始网络游戏等待主机开始游戏进行网络游戏图2-1 系统功能分析图3 总体设计3.1 系统结构图德州扑克游戏的系统设计结构图:德州扑克游戏系统加入网络游戏创建网络游戏创建网络游戏进行本地游戏图3-1 系统结构图3.2 总体功能设计A.本地游戏部分:实现与电脑玩家进行游戏,可以设置加入到游戏中的玩家的人数,可以控制金钱数目、小盲注、以及游戏中玩家出手的速度等等。B登录部分:实现账号的注册,加入到数据库。当忘记密码时,可以通过验证注册时的问题答案找回密码。在登录时只有正确的账号与密码才能通过验证登录。C.网络游戏部分:可以创建网络主机,设置主机处于监听状态。其他玩家可以通过网络加入到网络主机,处于等待状态。等待的过程中主机可以踢出处于等待的客户端玩家,当玩家主机点击开始游戏时,实现玩家能够在网络中进行游戏的状态。D.语言支持部分:当系统切换语言的时候,程序可以通过重启改变游戏界面的语言文字。本程序暂时支持中文与英文。3.3 数据库设计系统数据很简单,只是账号与用户名、问题与答案就可以。表3-1 数据库设计图4 设计思想与实现整个德州扑克游戏程序都是我独立完成的,下面详细的介绍下我的设计思想及具体的实现内容。4.1 设计思想我最初想实现的德州扑克程序是,本地游戏方面,可以进行单机游戏,设置电脑玩家的一些信息等等,能控制电脑玩家的游戏速度,能播放游戏中的动作声音,这部分功能要用到SDL的库。网络部分,可以实现程序开始界面注册连接按钮,登录到网页的注册页面,实现注册账号功能。通过注册之后,回到程序开始界面,选择网络游戏,进入登录界面,只有正确的账号才能通过认证,玩家才能够顺利的进入网络游戏,没有账号密码的玩家是只能进行本地游戏的。登录部分通过QT程序连接到数据库进行效验。将来的发展方向是能读取游戏的数据,金钱、头像、名字等等数据可以存放在数据库中,通过登录取出数据,然后进行游戏,当然也可以设置玩家称号等等吸引玩家的部分。平台方面我想实现的是能在Windows、Linux、WinCE、Android四个平台上运行,运用的是条件编译方法。但是目前时间有限,只能实现的是在Windows下运行,毕业之后我会继续完善我的程序,希望能为玩家使用。这样也是符合我的发展方向与公司的方向的,因为公司做的软件正在用于其他平台,对我的发展非常有利。4.2 具体实现部分4.2.1 使用Qt进行GUI开发的一般流程使用QT进行窗口程序设计的一般流程如下图所示:创建工程目录新建工程创建图形界面编写代码生成main.c根据工程文件生成Makefile编译并运行图4-1 窗体程序设计流程图4.2.2 新建工程工程目录结果如下图:图4-2 工程目录结构图下一步就是设计GUI了:主窗体图4-3 主界面GUI设计图创建本地游戏的界面设计图4-4 本地游戏GUI设计图创建网络游戏的界面设计图4-6 网络游戏GUI设计图网络游戏的服务器端监听GUI界面部分图4-7 网络游戏连接主机GUI设计图4.2.3 程序的类图部分四个投注圈的类,下面的类图顺序为河牌圈、翻牌前、翻牌圈、转牌圈:图4-8 河牌圈、翻牌前类图图4-9 翻牌、过牌类图下面的类是用于网络游戏的广播信息传播部分与Xml部分、工具的封装部分,我们在下面的代码调用起来就能直接调用,达到精简的效果。图4-10 广播、Xml、工具类图左上角是网络游戏的客户端响应部分。右上角是本地游戏与网络游戏的玩家加入部分,网络游戏时把人的操作虚拟成电脑玩家。左下角部分是玩家的操作控制部分,控制玩家加注或者过牌或者弃牌等操作。右下角是程序的一种工厂模式,程序加入到工厂模式下,设计程序提供创建对象的接口,为我们的系统结构方面提供了非常灵活而且强大的动态扩展机制功能,以后只要我们更换一下具体的工厂模式方法,系统那边就能让其他地方无需一点变换,这样就有可能将系统功能进行改头换面的较大变化了。图4-11 客户端监听、玩家虚拟、控制、工厂设计类图下面是XML的处理类图,通过基类继承出各种自己需要的类。图4-12 Xml类图图4-13 Xml类图4.3 程序调试程序测试是程序编码完成后的必须一步,通过测试,检查代码的正确性,了解功能的实现性,可以达到发现问题,改进功能,让程序更完善更健壮。没有经过测试的软件是无法大量投入使用的,因为它无法保证可以在用户那边健壮地运行。在测试中,通过QT Creator的编译程序集中检查并且改正各个类所有存在的语法错误,然后用详细设计描述作指南,用调试功能对重要的执行程序进行测试,以发现所有类中的错误。在我们进行测试的过程中,各个功能模块部分都要覆盖到,程序的各个流程都要能够走通。最后转向开发环境对每个问题进行排查、解决。以此为一个周期,反复测试,直到再无重要问题出现。4.3.1 QT Creator调试器QT Creator本身是并没有调试器的,它必须借助其他调试器引擎的功能,并为它们提供一个图形化的前端界面(表4-1列出了在所支持的平台上QT Creator使用的调试器),才能使用QT Creator进行调试。表4.1 QT Creator使用的调试器在QT Creator中,可以使用调试器前端界面逐行的进行单步调试或者是逐过程的调试程序,为程序设置断点,检查堆栈中的内容,查看局部或全局变量的值等,这些和常见的调试器提供的功能并无区别。除了像堆栈查看器、观察器和局部变量、寄存器的查看器等这些主流的IDE会提供的功能之外,QT Creator还提供了许多另外的功能帮助开发者提高开发效率。由于调试器前端对QT的内部机制了如指掌,所以当程序出现问题时,它能够明晰描述程序出现的症状。4.3.2 QT调试方法除了GGDB的调试方法,在QT中也常常会利用一些全局的调试函数和调试宏来进行调试。调试函数如下:qDebug(),用来进行自定义的调试输出。qWarning(),用来报告应用程序中警告性和可恢复性的错误。qCritical(),用来报告关键性错误信息和系统错误。qFatal(),在程序退出前报告致命性的错误。qDebug()提供流操作符号你可以通过qDebug()为你的类实现流操作符号。这个类实现的流是QDebug。在QDebug函数中你需要知道的常用到的方法是space()方法和nospace()方法。它们都返回一个debug流的形式;但它们之间的区别就是每十分在每条记录中都会插入一个空格。如果设置了QT_FATAL_WARNINGS环境变量,打印完警告信息后,qWarning就退出。这让获取向后跟踪更方便了。qDebug和qWarning都是调试工具。它们都可以通过QT_NO_DEBUG_OUTPUT和QT_NO_WARNING_OUTPUT取消调试。当程序表现得十分奇怪时,QObject:dumpObjectTree()和QObject:dumpObjectInfo()调试方法将十分有用。可以使用对象名,也可以不用。头文件QtGlobal包含一些宏定义和预定义。3个重要的宏定义:Q_ASSERT(cond),其中“cond”部分是一个布尔表达式的值,如果cond是false的话,写出警告的信息:ASSERT:'cond' in file xxx.cpp,line xxx,并退出。Q_ASSERT_X(cond,where,what),为Q_ASSERT(cond)的扩展函数,其中的函数方法“cond”是一个布尔表达式值,“where”是表示位置的参数,“what”表示一个消息参数。如果cond是false,就会写出警告的信息:ASSERT failure in where: 'what', file xxx.cpp, line xxx,并退出。Q_CHECK_PTR(ptr),其中“ptr”表示一个指针。判断是否成功分配内存或者是否为一个空指针。如果ptr是0的话,则就会写出警告的信息:In file xxx.cpp, line xxx: Out of memory,并退出。这些宏对诊断程序错误非常有用。5 系统测试与运行5.1 系统运行环境根据以上对系统各种需求的定义和分析,建议运行的系统采用以下配置,使之保证系统能够对游戏进行稳定、高效地运行。A. 最低配置 Intel 赛扬 C430以上CPU,64MB以上内存,40GB硬盘。B. 建议配置 Intel 酷睿i3 3220以上CPU,256MB内存,60GB硬盘。C. 目前程序只支持windows平台的操作系统。软件环境PC工作站 Windows 98/XP等windows操作系统5.2 运行结果启动时的界面:图5-1 启动主界面启动本地游戏程序:图5-2 本地游戏界面创建网络游戏程序,加入服务器等待其他玩家与等待主机开始游戏:图5-3 加入网络游戏界面6 结束语大学的时光是这么的短暂而又美好,毕业设计部分也是对我大学中所学的一个系统总结,它让我对这四年的大学生活有了一个进一步的认识和感触。我也把这次毕业设计当作了是我即将踏入社会中的一次总结。在这次毕业设计中,明显让我感觉到,以前所学的知识是多么的微不足道,还有太多太多的东西等待着我的学习。本毕业设计通过理论研究和实践结合,完成了一个基于QT的德州扑克游戏,通过这段时间的研究学习,我加深了对QT语言的理解,同时也了解到开发一个应用程序所要面对的困难,经过努力,我终于基本上达到了课题的要求。在整个设计过程中,遇到了很多的问题,也让我意识到了学习QT的难度。在设计初期,根本没办法入手,很多技术需要学习,如使用到的类库boost、qmake的编译、高级、低级图形界面的使用等,这里的每一项都需要花一定的时间之后才能理解或者掌握。而我对C+学的一点都不好,但也只能硬着头皮去学习了。但是通过多方面的努力以及老师的帮助,最终的我还是基本完成了本次毕业设计的大部分功能。通过本次毕业设计,我深刻的认识到QT的功能强大和可移植性。而且有十分易于使用的工程管理工具qmake的帮助,当然还有嵌入式图形界面开发设计工具方面的解决方案,非常大的提高了我的工作效率,这在软件开发当中是非常具有重大意义的。参考文献1Jasmin Blanchette,Mark Summerfield.C+ GUI QT4编程(第二版)M.北京:电子工业出版社,2012.42 3 4 5 6 附录一核心代码1、实现跨平台的条件编译部分这部分是在主工程的pro文件中实现的/win32平台时执行win32DEPENDPATH += src/net/win32/ src/core/win32SOURCES += src/core/win32/rand.cpp src/net/win32/socket_helper.cpp src/net/win32/socket_startup.cppINCLUDEPATH += ./boost/ ./SDL/include ./SDL_mixerINCLUDEPATH += "C:/Boost/include/boost-1_53"INCLUDEPATH += "D:/SDL/SDL-1.2.15/include"INCLUDEPATH += "D:/SDL_mixer/SDL_mixer-1.2.12/include"QMAKE_LIBDIR += ./boost/stage/lib ./SDL/VisualC/SDL/Release ./SDL/VisualC/SDLmain/Release ./SDL_mixer/VisualC/ReleaseLIBS += gdi32.lib comdlg32.lib oleaut32.lib imm32.lib winmm.lib winspool.lib ole32.lib uuid.lib user32.lib msimg32.lib shell32.lib kernel32.lib ws2_32.lib advapi32.lib /导入其他的库文件,需要调用boost的工厂与一些其他类,SDL用于支持游戏中的/一些效果,播放mp3等。-L./SDL/SDL-1.2.15/lib/x86 -L./SDL_mixer/SDL_mixer-1.2.12/lib/x86 -L"C:/Boost/lib"/非win32平台时执行!win32DEPENDPATH += src/net/linux/ src/core/linuxSOURCES += src/core/linux/rand.cpp src/net/linux/socket_helper.cpp src/net/linux/socket_startup.cpp这样就可以根据在什么平台编译出用于什么平台使用的应用程序了。2、功能代码实现部分2.1 主函数入口部分:int main( int argc, char *argv )/创建默认的配置ConfigFile *myConfig = new ConfigFile(argc, argv);socket_startup();/创建程序并设置样式QApplication a( argc, argv );#ifdef _APPLE_a.setStyle(new QMacStyle);#elsea.setStyle(new QPlastiqueStyle);#endifQ_INIT_RESOURCE(resources);/设置翻译部分QTranslator qtTranslator;qtTranslator.load(QString(":/translations/resources/translations/qt_") + QString:fromStdString(myConfig->readConfigString("Language");a.installTranslator(&qtTranslator);QTranslator translator;translator.load(QString(":/translations/resources/translations/pokerth_") + QString:fromStdString(myConfig->readConfigString("Language");a.installTranslator(&translator);qRegisterMetaType<boost:shared_ptr<Game> >("boost:shared_ptr<Game>");/设置会话boost:shared_ptr<GuiInterface> myGuiInterface(new GuiWrapper(myConfig);boost:shared_ptr<Session> session(new Session(myGuiInterface.get(), myConfig);myGuiInterface->setSession(session);int retVal = a.exec();socket_cleanup();return retVal;2.2 创建本地游戏部分:newGameDialogImpl:newGameDialogImpl(QWidget *parent, ConfigFile *c): QDialog(parent), myConfig(c)/设置界面setupUi(this);/开始本地游戏界面void newGameDialogImpl:exec() /根据配置文件设置spinBox_quantityPlayers->setValue(myConfig->readConfigInt("NumberOfPlayers");spinBox_startCash->setValue(myConfig->readConfigInt("StartCash");spinBox_smallBlind->setValue(myConfig->readConfigInt("SmallBlind");spinBox_gameSpeed->setValue(myConfig->readConfigInt("GameSpeed");spinBox_handsBeforeRaiseSmallBlind->setValue(myConfig->readConfigInt("HandsBeforeRaiseSmallBlind");QDialog:exec();2.3 创建网络游戏部分:createNetworkGameDialogImpl:createNetworkGameDialogImpl(QWidget *parent, ConfigFile *c): QDialog(parent), myConfig(c)setupUi(this);fillFormular();/连接信号槽connect( pushButton_cancel, SIGNAL( clicked() ), this, SLOT( cancel() ) );connect( pushButton_createGame, SIGNAL( clicked() ), this, SLOT( createGame() ) );label_5->hide();spinBox_gameSpeed->hide();void createNetworkGameDialogImpl:fillFormular() /网络游戏设置spinBox_quantityPlayers->setValue(myConfig->readConfigInt("NetNumberOfPlayers");spinBox_startCash->setValue(myConfig->readConfigInt("NetStartCash");spinBox_smallBlind->setValue(myConfig->readConfigInt("NetSmallBlind");spinBox_handsBeforeRaiseSmallBlind->setValue(myConfig->readConfigInt("NetHandsBeforeRaiseSmallBlind");/暂时不会启用,当网络游戏开始时启用,是玩家的思考时间进度条spinBox_netTimeOutPlayerAction->setValue(myConfig->readConfigInt("NetTimeOutPlayerAction");/设置鼠标事件void createNetworkGameDialogImpl:keyPressEvent ( QKeyEvent * event ) if (event->key() = 16777220) push

    注意事项

    本文(Windows下基于C++ QT的德州扑克游戏.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开