基于QT的网络五子棋游戏程序的设计与实现

源码下载 http://www.byamd.xyz/hui-zong-1/摘 要在现在如此发达并且得到广泛应用的现代网络技术下,集趣味性,娱乐性,益智性,并且包含网络功能的休闲类游戏以及成为了人们选择网络休闲游戏的要求。系统采用当今广为流行的五子棋游戏为模版,利用C++的第三方GUI设计工具Qt为程序设计界面,并结合软件工程的思想开发一款基于网络的五子棋游戏对弈软件。本软件采用P2P的模式,利用一个服务端来辅助各个客户端之间的查找和链接,服务端用于记录当前各个客户端的游戏状态,并将实时更新的各个
摘要由CSDN通过智能技术生成
源码下载  http://www.byamd.xyz/hui-zong-1/

摘 要

在现在如此发达并且得到广泛应用的现代网络技术下,集趣味性,娱乐性,益智性,并且包含网络功能的休闲类游戏以及成为了人们选择网络休闲游戏的要求。

系统采用当今广为流行的五子棋游戏为模版,利用C++的第三方GUI设计工具Qt为程序设计界面,并结合软件工程的思想开发一款基于网络的五子棋游戏对弈软件。本软件采用P2P的模式,利用一个服务端来辅助各个客户端之间的查找和链接,服务端用于记录当前各个客户端的游戏状态,并将实时更新的各个客户端的状态发送到其他客户端,方便客户端加入其他客户端建立的游戏主机,并建立P2P链接,进行游戏。客户端是玩家用于建立游戏主机或者加入游戏进行五子棋对弈的主程序,具有当今五子棋游戏常见的聊天功能、悔棋功能、认输功能、计分功能、玩家断网处理等。

玩家只需运行客户端,连接到指定的服务端,就可以加入其他的游戏主机进行游戏,或者建立游戏主机,等待其他客户端的加入进行游戏对弈。

关键字: 多线程,Qt,socket

ABSTRACT

With the development and widely usage of computer network, it has been a
requirement for a casual online game to be interesting, entertaining and
intelligence-improving.

This paper implements a online Gobang game based on the popular Gobang, used
third-party C++ GUI library Qt and combined software engineering model. The
software uses P2P model, which uses a sever end to help clients find and connect
with each other and help record the status of every client and send it to other
clients in order to make it convenient to join the host and establish the P2P
connection between clients to start the game. Client is the main program for
user to create or join the Gobang game and have the functionalities of chatting,
regretting, yielding, scoring and connection problems handling.

All user needs to do is run a client, connect to the specific server, then he
can join a host or create a host himself and wait for other clients to join and
have a game.

Key words: multithreading, Qt, socket

  1. 绪论

1.1 课题研究意义

五子棋[1]是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“连珠”,英文称之为“Renju”、“Gobang”或“FIR”(Five
in a Row 的缩写),亦有“ 连五子”、“五子连”、“串珠”
、“五目”、“五目碰”、“五格”等多种称谓。

五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为广大人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。

五子棋起源于古代中国,发展于日本,风靡于欧洲。对于它与围棋的关系有两种说法,一说早于围棋,早在“尧造围棋”之前,民间就已有五子棋游戏;一说源于围棋,是围棋发展的一个分支。在中国的文化里,倍受人们的青睐。古代的五子棋的棋具与围棋相同。五子棋大约随围棋一起在我国南北朝时先后传入朝鲜、日本等地。从此,五子棋经过了不断的改良,例如棋盘由原来的纵横各十七道改为现行的纵横各十五道的五子棋专用棋盘等等。二十世纪初,五子棋传入欧洲并迅速风靡了全欧洲。通过一系列的变化,使五子棋这一简单的游戏系统化、规范化,最终成为今天的职业连珠五子棋,同时也成为一种国际比赛棋。

在网络发达的今天,对于二人对弈的五子棋,开发一款带有网络功能的五子棋游戏,能够更加方便身在异地的玩家进行游戏。

1.2 课题研究目的

五子棋在我国的历史可谓是源远流长,喜爱它的玩家也是大有人在。但目前的五子棋软件一般都是单机版的,游戏无法在异地的玩家之间进行,因此为了方便异地的玩家在一起进行五子棋游戏,设计出一款基于网络版的五子棋游戏,玩家可以通过网络挑选自己喜爱的对手并同其进行比赛,比赛过程中可以进行聊天,达到相互交流经验的作用,同时能让身处各地的玩家连接到服务器进行五子棋对弈。

1.3 研究现状分析

目前常见的单机类五子棋游戏可分为“人机模式”与“双人模式”。“人机模式”指人与按照事先编写好的五子棋落子算法程序来进行游戏的计算机进行对弈,“双人模式”指两个人通过使用同一台计算机,交替落子来进行游戏。这两种方式,都需要玩家双方在同一台计算机面前进行完成,因此局限性很大,玩家不能再异地的不同的计算机上来进行游戏。

随着现代计算机网络的迅速发展,网络上的计算机之间的通信已经变得十分便捷。这也为身在异地间的用户利用网络来进行游戏提供了途径。

网络版的五子棋软件利用网络连接协议TCP/IP,在不同地方的玩家之间建立一个TCP连接,并用这个连接来交换数据,进行通信。因此,网络版的五子棋软件在游戏之前必须确定对网络参数设置的正确性,设置正确之后,才能进行玩家双方的TCP成功连接。连接成功后,双方轮流下棋,同时将每一步落子的信息通过网络连接传送给对方,使双方棋盘上的状态保持一致。

与单机版的五子棋软件相比,网络版的五子棋软件也提供了所有单机版的五子棋软件所具有的功能,例如:倒计时器、“认输”、“和棋”和“悔棋”等。但对于网络版的五子棋来说,这些功能的同步都是通过网络信息交互来实现的,因此,网络版的五子棋游戏实现过程较单机版要复杂一些。

在胜负判断方面,单机版的五子棋软件与网络版的五子棋软件可以采用完全相同的算法(如果不考虑先手禁手等)。一方玩家下完一步棋后,系统会自动判断当前落子之后,玩家是否胜利,如果没有胜利,再将落子的信息传送给对方,如果判断结果为胜利,则直接发送胜利消息给对方。每次落子之后,都要进行这样一次胜负判断定的过程。另外,由于网络版的五子棋的游戏双方可能不在同一个地点,因此,提供聊天功能很有必要。

目前常见的网络五子棋的游戏形式又可分为两种,一种是以QQ五子棋(如图1.1)为代表的桌面应用程序的游戏形式,一种是网页flash(如图1.2)的游戏形式。

图1.1 QQ五子棋游戏

图1.2 网页flash五子棋

系统结构方面,QQ五子棋游戏采用了C/S结构,而网页flash的五子棋采用的是B/S结构。

功能方面,二者均提供了常见的悔棋、计分、计时、聊天、认输等功能。均未设计五子棋中“先手禁手”等规则。不同之处在于,常见的网页五子棋对于一方断网的情况不能及时发现,发现后也只是做出提醒另外一方的操作。而QQ五子棋能够对一方断网的情况及时发现,并且采用电脑托管或者直接结束比赛并计算相应分数的操作。

游戏流畅度方面,网页flash的游戏形式受限于浏览器解析网页代码的速度限制,游戏载入时间明显过长。而QQ五子棋只需要基本的windows操作系统即可,运行环境要求较低,运行流畅。

1.4 各章内容简介

本文第一章介绍了课题的研究背景,第二章简单介绍了实现程序所用到的技术介绍,第三章对程序需求进行了分析,第四章为系统的设计思想以及详细设计,第五章介绍了系统的实现过程,第六章展示了系统的效果,最后第七章总结了系统已完成的工作和下一步待完成的工作。

2 实现技术

2.1 P2P模式

2.1.1 P2P模式介绍

P2P[2](peer-to-peer,
简称P2P)又称对等互联网络技术,是一种网络新技术,依赖网络中参与者的计算能力和带宽,而不是把依赖都聚集在较少的几台服务器上。请注意与point-to-point之间的区别,peer-to-peer一般译为端对端或者群对群,指对等网中的节点;point-to-point一般译为点对点,对应于普通网络节点。P2P网络通常用于通过Ad
Hoc连接来连接节点。这类网络可以用于多种用途,各种文件共享软件已经得到了广泛的使用。P2P技术也被使用在类似VoIP等实时媒体业务的数据通信中。

纯点对点网络没有客户端或服务器的概念,只有平等的同级节点,同时对网络上的其它节点充当客户端和服务器。这种网络设计模型不同于客户端-服务器模型,在客户端-服务器模型中通信通常来往于一个中央服务器。

2.1.2 P2P模式的优势

P2P网络的一个重要的目标就是让所有的客户端都能提供资源,包括带宽,存储空间和计算能力。因此,当有节点加入且对系统请求增多,整个系统的容量也增大。这是具有一组固定服务器的Client-Server结构不能实现的,因为在上述这种结构中,客户端的增加意味着所有用户更慢的数据传输。

P2P网络的分布特性通过在多节点上复制数据,也增加了防故障的健壮性,并且在纯P2P网络中,节点不需要依靠一个中心索引服务器来发现数据。在后一种情况下,系统也不会出现单点崩溃。

当用P2P来描述Napster 网络时,对等协议被认为是重要的,但是,实际中,Napster
网络取得的成就是对等节点(就像网络的末枝)联合一个中心索引来实现。这可以使它能快速并且高效的定位可用的内容。对等协议只是一种通用的方法来实现这一点。

2.1.3 P2P模式的应用

点对点技术有许多应用。共享包含各种格式音频,视频,数据等的文件是非常普遍的,实时数据(如IP电话通信)也可以使用P2P技术来传送。

有些网络和通信渠道,像Napster,OpenNAP,和IRC@find,一方面使用了主从式架构结构来处理一些任务(如搜索功能),另一方面又同时使用P2P结构来处理其他任务。而有些网络,如Gnutella和Freenet,使用P2P结构来处理所有的任务,有时被认为是真正的P2P网络。尽管Gnutella也使用了目录服务器来方便节点得到其它节点的网络地址。

2.2 Qt

2.2.1 Qt介绍

UI(User
Interface)也可以称之为用户接口或使用者接口,是系统和用户之间进行交互和信息交换的媒介,它实现信息的内部形式与人类可以接受形式之间的转换。

Qt[3]是由挪威TrollTech公司于1995年底出品,之后被诺基亚公司收购并维护的一个跨平台的C++图形用户界面应用程序框架。广泛用于开发GUI程序,这种情况下又被称为部件工具箱。也可用于开发非GUI程序,比如控制台工具和服务器。自从1996年早些时候,Qt进入商业领域,它已经成为全世界范围类数千种成功的应用程序的基础,被Google
Earth、KDE、西门子公司等使用。它是诺基亚(Nokia)的Qt Development
Frameworks部门的产品。

经过多年发展,Qt不但拥有了完善的C++图形库,而且近年来的版本逐渐集成了数据库、OpenGL库、多媒体库、网络、脚本库、XML库、WebKit库等等,其核心库也加入了进程间通信、多线程等模块,极大的丰富了Qt开发大规模复杂跨平台应用程序的能力,真正意义上实现了其研发宗旨“Code
Less; Create Mo

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值