基于Qt的图形化界面网络在线对战五子棋游戏

Gentleman

发布日期: 2018-10-29 16:55:39 浏览量: 1707
评分:
star star star star star star star star star star
*转载请注明来自write-bug.com

一 需求分析

本软件是一款跨平台的网络实时五子棋对战软件,实现建立主机和连接主机、实时对战、判断输赢和危险提示等功能。支持Windows 、 Linux和OSX平台。

程序主要功能如下:

  • 建立服务器

    • 能创建网络主机。在界面上添加功能按钮,显示创建主机对话框,对话框显示主机IP,还有取消按钮
  • 连接服务器

    • 游戏客户端能输入主机。添加软键盘,用来输入主机的IP
  • 五子棋对战

    • 需要有棋盘界面,并且可以实现实时对战。并且实现棋子坐标的数据传输,传递报文表示最新的棋子的坐标,并且实时刷新棋盘信息。并且在界面标记游戏状态,显示当前的落子方,如果哪一方赢了就弹出对话框显示输赢
  • 危险提示

    • 当用户点击提示功能按钮的时候,可以判断出对方如果在哪些地方下子,你会出现如下的情况:

      • 再落一子,出现两个无阻挡的连续3子的情况

      • 再落一子,出现一个无阻挡的连续3子和一个有单侧阻挡的连续4子的情况,并且以炸弹图标标出危险位置

二 程序设计

本软件由棋盘模块GameBoard,下棋模块Chess和网络连接CreateDialog和ConnectDialog连接而成。

  • 棋盘模块包含了对于棋盘的建立,对棋盘进行更新的事件处理,鼠标按下落子时的事件处理等对于棋盘的事件处理。还有对于棋盘信息的储存方式,和对于接受的信息进行呈现的功能
  • 下棋模块主要包含了整个界面的设计,按钮功能的设计和管理发送接收并解析棋盘信息的功能
  • 网络连接模块主要有两部分。第一部分是建立主机。程序会先寻找自己的默认IP并将其提供给用户,然后然用户输入主机IP。第二部分是连接主机,弹出的窗口会有软键盘供用户输入想要连接的主机的IP地址

程序文件包含两部分:

  • 一部分是程序的源代码,在src文件夹中,包含main.cpp,mainwindow.cpp, mainwindow.h, gameboard.cpp, gameboard.h, create.cpp, create.h,connect.cpp和connect.h
  • 另一部分是程序的资源文件,在rec文件夹中,包含危险提示需要的炸弹图标和其他一些需要的音效文件

三 程序实现

3.1 棋盘模块

棋盘模块主要有GameBoard类组成,它集成QWidget类,实际上就是一个下棋用的棋盘界面的设计。包含了画图和对于事件处理的头文件。此类中应用vector在储存玩家和对方的棋子的位置,并且在每次更新棋盘的时候,画图函数都会将vector中所有的棋子信息重新画一次。应用bool变量inround对是否己方下棋进行判断。应用struct创建ches:结构,并创建state:数组用来存储每个位置棋子的情况。对于事件的处理,此类中先建立一个even七Fil七er来筛选棋盘界面的事件。然后在画图事件的函数添加了对于棋盘的设计和添加棋子的画图操作。在用户显示提示的时候,也会在危险的地方显示提示图标。对于棋盘的设计,本软件采取了围棋棋盘的设计策略,为19x19的棋盘。

3.2 下棋模块

此模块主要是对于主窗口的界面进行布局和功能的设计。在主界面中,将一个Widget提升为GameBoard类,从而在这个窗口中显示棋盘模块中创建的棋盘。并且在主窗口中加入了功能按钮和,提示当前落子方的Label。同时,其中的readData()函数和sendChessInfo()等函数负责管理棋盘的信息接收后的最后最终处理和发出棋盘的更新信息,包括新的落子和输赢等。

3.3 网络连接模块

此模块主要负责的是网络连接。其中包含CreateDialog类和ConnectDialog类。CreateDialog类负责建立一个自己IP地址的主机,在对话框中,会先显示出自己的电脑现在的IP地址,让用户直接选择。然后点击确定会直接将自己作为主机。ConnectDialog类负责连接一个主机。对话框中设有软键盘用以输入主机的IP。两个类中的按钮均应用QSignalMapper来管理。

四 运行测试

文件运行起来只包含一个主窗口,还有连接网络时需要的两个弹出界面。程序运行界面如下:

上传的附件 cloud_download 基于Qt的图形化界面网络在线对战五子棋程序.zip ( 165.39kb, 102次下载 )
error_outline 下载需要15点积分

发送私信

一个人幸运的前提,其实是ta有能力改变自己

9
文章数
24
评论数
最近文章
eject