一 需求分析

本软件是一款跨平台的网络实时五子棋对战软件,实现建立主机和连接主机、实时对战、判断输赢和危险提示等功能。支持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来管理。

四 运行测试

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

基于linux的qt五子棋小游戏下载,课内资源 - 基于Qt的图形化界面网络在线对战五子棋游戏...相关推荐

  1. c语言全民飞机游戏代码,课内资源 - 基于VC++和OpenCV实现的全民飞机大战游戏

    摘要功能:利用C++语言完成了一个小游戏项目-全民飞机大战,该游戏首先能够给用户提供注册,登录功能:提供了菜单栏及两种游戏模式,一种是无尽模式,另一种是一般模式:一般模式中用户通过控制玩家飞机攻击敌方 ...

  2. 4维俄罗斯方块 java,课内资源 - 基于Easyx插件的俄罗斯方块游戏的设计与实现

    一 需求分析 1.1 设计内容: 设计一个俄罗斯方块游戏,根据实际游戏的规则完成设计. 游戏设计方案: 在一个图形绘制区域的正上方随机产生四种不同方块中的任意一种的初始位置,并使其向下运动 定义键盘, ...

  3. 用c语言写扫雷游戏倒计时代码,课内资源 - 基于VS2013实现的扫雷小游戏

    1.任务概述 1.1 系统总体目标 本项目的目的在于开发一个扫雷软件,该软件面向游戏玩家用户,具有进行扫雷游戏的功能.游戏玩家将使用系统中的如下功能: 进行游戏 使用自定义游戏规格功能 使用计时器功能 ...

  4. c语言文字冒险类游戏,课内资源 - 基于C语言和easyx实现的巧虎划船大冒险游戏...

    1 需求分析 1.1 功能需求 游戏性:通过键盘方向键的←.→.↑.↓来控制巧虎(船)的移动,躲避暗礁,碰撞宝物(特殊宝物),来增加积分,在倒计时结束前(到达终点前)争取得到更多分数.为提高可玩性,宝 ...

  5. python电梯题_课内资源 - 基于PyQt5实现的python电梯调度程序

    1. 使用说明 1.1 项目简介 电梯作为人们出行的重要工具之一,在人们日常生活中扮演着重要的角色.而电梯的调度算法是决定电梯运行效率的关键,一个高效的调度算法对电梯能否有效地运行起到重要的作用.因此 ...

  6. 本系统采用jsp和mysql_课内资源 - 基于Jsp和MySql的汽车租赁系统

    一.引言 汽车租赁管理系统是基于MVC三层架构完成,使用Java语言开发,主要应用Jsp完成前台界面部分,Servlet MVC完成后台逻辑部分. 本系统的设计从现实角度出发,根据实际汽车租赁信息管理 ...

  7. 基于linux下QT象棋,课内资源 - 基于QT实现的网络象棋游戏

    1.功能说明 1.1 初始界面 初始界面中包含一个菜单栏,菜单栏中有一个建立连接选项,可以用来与其他程序建立连接. 1.2 建立连接 单击建立连接后,会弹出一个对话框以配置连接的相关信息,包括创建服务 ...

  8. python迷宫小游戏代码_课内资源 - 基于python实现的迷宫游戏

    一.项目概述与编译环境 本次大作业选题为题目2,即小兔子找胡萝卜的迷宫问题,最终完成开发的游戏名为Caveman and Treasure(穴居人寻宝),游戏整体界面如下: 该项目在windows下编 ...

  9. 基于linux的银行管理,课内资源 - 基于Linux的仓库管理系统

    1 需求分析 要求的仓库管理系统的功能如下: 查看仓库库存列表功能 查询功能:可以随时查看当前仓库的库存中的某些商品的一系列信息,包括商品名,剩余量 进货功能:(以下两个功能是根据输入自动选择的) 在 ...

最新文章

  1. 为在innodb中什么主键用auto_increment效率会提高
  2. Python入门(一)了解与安装
  3. 简单三分钟,本地搭建k8s
  4. python unpack_python中struct.pack()函数和struct.unpack()函数
  5. 天线匹配与人体之间的关系
  6. 论软件系统建模方法及其应用
  7. 手机设置邮箱无法验证服务器失败,用手机邮箱设置怎么总显示无法验证帐户信息...
  8. [HNOI2004]宠物收养所
  9. 服务器上传,时间超时 tomcat 如何设置保持连接
  10. 【转】ASP六大对象介绍
  11. Axure9中点击变颜色、形状等样式操作
  12. Oracle数据库学习第一天
  13. 2021-07-22 CentOS7.6 Samba使用AD域控认证(winbind),亲测有效。
  14. CIC滤波器和FPGA实现
  15. 2.5亿企业微信用户福利到啦!快递管家企业版,让快递收发管理更简单
  16. 计算机二级二叉树解题技巧,计算机二级选择题技巧(六)二叉树的分类与性质...
  17. StarUML使用教程【画类图】
  18. drivers/staging
  19. unity游戏开发入门-Resources动态加载图片
  20. [深度长文]项目经理到底有多惨?安心睡觉都别想!

热门文章

  1. flow hive 新型蜂箱_【中蜂蜂箱】flow hive 自动采蜜蜂箱 6m自流蜜蜂箱巢框 塑料巢脾...
  2. 亚马逊化妆品粉饼,眼影HRIPT/RIPT证书办理
  3. android设备和oppo一样,买手机选OPPO还是华为?中端机对决,答案果不其然
  4. Appium: Android KEYCODE键值
  5. 有哪些漫画在线观看?最好是好看的完结漫画
  6. R语言在散点图中添加lm线性回归公式
  7. 英特尔第六、七代酷睿不安全!存在USB调试缺陷
  8. 废弃二手电池改装成移动电源 虚标容量赚取暴利
  9. python读取视频分辨率_opencv设置采集视频分辨率方式
  10. Android UI - 收藏集 - 掘金