网站首页  词典首页

请输入您要查询的论文:

 

标题 基于C/S架构的五子棋游戏软件的设计与实现
范文

    万坤 苏雪莲 冉瑞生

    

    

    

    摘要:五子棋是一项简单有趣的益智游戏。为了让五子棋游戏爱好者能够更加便捷地进行游戏,因此设计并开发了一款基于C/S(客户端/服务器)架构的五子棋游戏软件。该软件使用了统一建模语言,MYSQL数据库,V-Play开发框架对游戏进行设计与实现。软件有三种游戏模式:双人对战模式、联机对战模式与人机对战模式,玩家可以根据自己的需要选择不同的模式进行游戏,并可以和网络上的其他玩家对弈。该软件使得五子棋游戏玩家之间的对弈不再受到时空的限制。

    关键词:C/S;UML;V-Play;C++;五子棋游戏

    中图分类号:TP311? ? ? 文献标识码:A

    文章编号:1009-3044(2019)22-0094-03

    开放科学(资源服务)标识码(OSID):

    Design and Implementation of Gobang Game Software Based on C/S Structure

    WAN Kun, SU Xue-lian, RAN Rui-sheng

    (Chongqing Normal University, Chongqing 401331, China)

    ABSTRACT: Gobang is a simple and interesting puzzle game. In order to make it more convenient for gobang fans to play games, a gobang game software based on C/S (client/server) architecture was developed. The software was designed and implemented by UML (Unified Modeling Language), MYSQL database and V-Play development framework. The gobang game has three modes: two-player mode, on-line mode and man-machine mode. Players can choose different modes to play games according to their own needs and play the game with other players on the Internet. This software makes the player of gobang free of time and space restrictions.

    Key words: C/S; UML; V-Play; C++; gobang

    1 背景

    五子棋游戏是一款两人对弈的策略型棋类游戏,其历史悠久,相传起源于四千多年前的尧帝时期,深受世界各地不同年龄的人的喜欢,五子棋游戏规则十分简单,游戏双方分别采用黑色或白色棋子,先使棋子形成五子连线者获胜。随着互联网的快速发展,越来越多的工作都可以使用计算机完成,为了能够让人们更加方便、快捷地进行五子棋游戏,因此设计并开发五子棋游戏软件。该软件的开发不仅能够让用户随时随地地进行游戏,还可以促进五子棋游戏的进一步发展,让更多的人认识这一款简单好玩的益智游戏。

    该软件采用C/S(Client/Server,客户/服务器)架构作为软件的体系结构;在软件设计时采用UML(Unified Modeling Language,統一建模语言);在软件实现时采用了OO(Object Oriented,面向对象)软件开发方法,以MYSQL数据库存储数据,用C++编写软件主要逻辑,QML(Qt Meta Language)编写软件界面。

    该软件有三种游戏模式:双人对战模式、联机对战模式与人机对战模式。玩家可以选择双人对战与朋友在同一台设备上进行游戏,也可以通过联机对战和不同地方的人对弈,或者选择人机对战与计算机进行游戏。

    2 C/S体系结构

    C/S体系结构即Client/Server(客户机/服务器)体系结构,是基于资源不对等,且为实现共享而提出来的,是20世纪90年代成熟起来的技术。一般情况下,客户机与服务器相距很远,客户机向服务器请求服务,服务器为客户机提供服务,C/S体系结构定义了客户机如何与服务器协作,以实现数据和程序分布到多台计算机上。

    软件采用三层C/S结构(也称多层C/S结构)风格,即把用户界面和应用的业务逻辑分离,让表示层在客户端上运行,功能层在应用服务器上运行,数据层在数据库服务器上运行,这也称为“瘦客户机(thin client)”,“胖服务器(fat server)”体系结构。

    三层C/S结构中的功能层是应用的主体,它包括系统中所有重要的和易变的企业逻辑,应用服务器是应用逻辑处理的核心,它是具体业务的实现。客户端将请求信息发送给应用服务器,应用服务器返回数据和结果,应用服务器和数据库服务器有密集的数据交往,应用服务器向数据库服务器发送SQL请求,数据库服务器将数据访问结果返回给应用服务器。当应用逻辑变得复杂或增加新的应用时,可增加新的应用服务器,它可与原应用服务器驻留于同一主机或不同主机上。三层C/S体系结构的处理流程如图1所示[1]:

    3 技术简介

    该软件采用 Qt Creator集成开发环境进行开发。在开发过程中,主要采用了如下几个技术:

    3.1 UML

    统一建模语言(Unified Moding Language,UML)提供了用于交流的詞汇表和在词汇表中组合词汇的规则,而建模语言的词汇表和规则注重对系统进行概念上和物理上的描述,因而像UML这样的建模语言是用于软件蓝图的标准语言[2]。

    在五子棋软件中,对对象的建模让开发人员更好的理解软件,同时还把软件的结构和行为进行联通。

    3.2 V-Play开发框架

    V-Play是构建于Qt商业版本之上的跨平台开发框架,它将许多实用的第三方库、开源项目和常用功能集成进来,极大地提高了开发者的工作效率。开发者可以直接使用QML或C++中的相关元素进行调用,可以使用QML或Qt/C++进行跨平台开发。QML是一种多泛型语言,能够根据属性以及与其他对象的关联来定义对象,并对其他对象的变化做出响应。同时 QML是一种声明性的语言,可以用来定义应用的外观和引用的行为。在五子棋游戏中,利用QML技术编写游戏界面以及控件之间的关联。

    3.3 MySQL 数据库技术

    MYSQL是一个高性能的且相对简单的关系数据库系统,相对于其他数据库来说,其复杂性相对较低。在本软件中,MYSQL数据库主要用于存储的用户账户相关信息。

    3.4 JSON数据传输技术

    JSON全称为JavaScript Object Notation,是一种轻量级的数据交换格式,由名字可知,JSON就是JAVASRCIPT中的对象和数组,通过对象和数组这两种结构可以表示各种复杂的结构,这也是选择使用JSON传输格式的主要原因。JSON数据传输技术用于在联机对战模式中,通过互联网传输和JSON数据传输技术实现两个玩家之间的对弈。将棋子的数据封装成JSON数据,方便在网络中传输,接收端接收到数据后利用JSON数据解析技术将接收到的的数据解析出来。以这种方式传送数据能使传输数据更加的快捷、迅速,降低了传输时间与程序的复杂度,提了整个软件的性能。

    4 系统设计

    4.1 系统总体架构

    本软件基于三层C/S体系结构设计了系统的总体架构。系统的总体架构包图如图2所示:

    Game UI与Game Control Client为表示层,是软件的用户接口,即人机交互界面,是用户与软件交互的窗口。表示层运行在客户机上,它不拥有任何业务逻辑,只有一些简单的应用逻辑。

    Game Control Server与Game Entity为功能层,是软件的主体。功能层运行在应用服务器上,它拥有软件中所有重要的业务逻辑,包括接收数据输入、进行逻辑处理并返回处理结果。

    Game DataBase为数据层,是由数据库管理系统(DataBase Management System,DBMS)负责管理。数据层运行在数据库服务器上,主要负责对数据库中数据的存储、读、写和维护数据存储、数据访问、数据完整性约束等工作。

    软件界面由QML脚本语言实现,其他部分均由C++程序设计语言实现。应用服务器与数据库服务器位于同一计算机上,这种方式使应用服务器与数据库服务器不需要网络就能进行通信,极大地提高了应用服务器与数据库服务器之间的通信效率,使系统具有更好的性能。

    4.2 业务逻辑类设计

    通过对功能层的设计,软件的实体类包括:User、SystemSetting、Game、Tile、Network、Server,它们主要负责数据管理和业务逻辑处理。如下图3为业务逻辑层部分类图,该图表示了功能层中实体类之间关系。

    上图中的实体类说明如下:

    User:负责玩家账号相关的数据管理和业务逻辑处理,其中id为游戏账号,password为账号密码,nickname为玩家昵称,avatar为玩家头像;

    SystemSetting:负责系统设置相关的数据管理和业务逻辑处理,其中volumn为游戏音量大小;

    Game:负责具体游戏相关的数据管理和业务逻辑处理,其中mode为游戏模式,chessboardSize为棋盘大小,field为棋盘区域所有棋子的具体位置;

    Tile:负责一个具体的棋子相关的数据管理和业务逻辑处理,其中type为棋子类型(白子或黑子),row为棋子所在的行号,column为棋子所在的列号;

    Network:负责网络相关的数据管理和业务逻辑处理,其中socket为套接字;

    Server:负责服务相关的数据管理和业务逻辑处理,其中tcpServer为QTcpServer的实例。

    5 游戏模式

    5.1 双人对战

    该模式下,两个玩家可以在同一设备上进行游戏,该模式与实体五子棋游戏类似。玩家可以选择中途退出游戏或开始新游戏。

    5.2 联机对战

    该模式下,软件会通过玩家的游戏记录匹配到与玩家水平相当的另一个玩家,两个玩家通过网络在不同的设备上进行游戏。玩家可以选择中途退出游戏或开始新游戏,但选择退出游戏或开始新游戏的一方算作失败,另一方算作胜利。

    5.3 人机对战

    该模式下,只需要一个游戏玩家即可进行游戏,另一个玩家由软件模拟。玩家可以选择中途退出游戏或开始新游戏,但选择退出游戏或开始新游戏均算作失败。

    6 系统实现

    6.1 登录界面

    玩家输入账号、密码后点击登录,软件对输入的账号和密码与数据库中存储的账号信息进行匹配,若匹配成功,则登录成功,反之,登录失败。玩家不进行登录也可使用软件进行游戏,此时,软件会为玩家生成一个游客账号。为了更好的游戏体验,建议玩家登录软件。

    6.2 主界面

    主界面是模式选择界面,主要展示對玩家所提供的三种游戏模式:双人对战、联机对战、人机对战。玩家可根据自己需要选择相应的模式。

    6.3 匹配队友界面

    在联机对战模式中,匹配队友界面展示了玩家匹配对方玩家的情况。在匹配成功之前玩家可以终止匹配。匹配成功之后两个匹配上的玩家一起开始新游戏。

    6.4 游戏界面

    游戏界面展示了游戏背景以及游戏实时情况。棋盘大小为17x17,玩家可选择“无子”的“+”处落子;界面显示了棋局形式、当前落子方、对方上次落子位置。除此之外,界面提供了结束游戏和重新开始按钮。在游戏过程中,玩家可以根据需求设置游戏,如音效设置。

    6.5 游戏结束界面

    游戏结束界面显示了游戏结束时的状态。当游戏结束时,高亮“五子一线”的棋子,游戏操作界面失去焦点,玩家不可再落子,同时应用显示游戏结束框,提示游戏获胜(或失败)。游戏结束后,玩家可选择返回主菜单或重新开始游戏。

    7 结论

    本文介绍了基于C/S结构的五子棋游戏软件设计与实现,在五子棋游戏的设计中,以三层C/S结构为总体架构,在游戏的开发与实现中,采用了UML 建模语言、 V-Play开发框架、MySQL 数据库技术和JSON数据传输技术。对于游戏界面的实现,我们使用的QML脚本语言进行实现,使得游戏界面美观简洁,易于使用。本软件有三种模式可供选择,并且玩家可以在网络上和其他玩家对弈,提高了五子棋游戏的趣味性。

    参考文献:

    [1] 李金刚, 赵石磊, 杜宁. 软件体系结构理论与应用[M]. 北京: 清华大学出版社, 2013: 66-67.

    [2] Grady Booch, James Rumbaugh, Lvar Jacobson. UML用户指南[M]. 2版. 北京: 人民邮电出版社, 2006.

    [3] 张有声. 软件体系结构原理、方法与实践[M]. 2版. 北京: 清华大学出版社, 2016.

    [4] Simon Bennett, Steve McRobb, Ray Farmer. Object-Oriented Systems Analysis and Design Using UML[M]. 4th ed. McGraw-Hill Education(Asia), 2013.

    [5] Michael Blaha, James Rumbaugh. UML面向对象建模与设计[M]. 2版. 北京: 人民邮电出版社, 2006.

    【通联编辑:谢媛媛】

随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/2/11 0:22:56