系统采用当今广为流行的五子棋游戏为模版,利用C++的第三方GUI设计工具Qt为程序设计界面,并结合软件工程的思想开发一款基于网络的五子棋游戏对弈软件。本软件采用P2P的模式,利用一个服务端来辅助各个客户端之间的查找和链接,服务端用于记录当前各个客户端的游戏状态,并将实时更新的各个客户端的状态发送到其他客户端,方便客户端加入其他客户端建立的游戏主机,并建立P2P链接,进行游戏。客户端是玩家用于建立游戏主机或者加入游戏进行五子棋对弈的主程序,具有当今五子棋游戏常见的聊天功能、悔棋功能、认输功能、计分功能、玩家断网处理等。
玩家只需运行客户端,连接到指定的服务端,就可以加入其他的游戏主机进行游戏,或者建立游戏主机,等待其他客户端的加入进行游戏对弈。
本系统的能够实现一个在网络上供玩家进行对战的网络版的五子棋游戏,玩家只要登陆到服务器上,然后选择其它已创建好的游戏主机,进行五子棋对战游戏。或者自己建立一个游戏主机,等待对方的加入。
在C/S 模式游戏中,服务端一般提供所有用户的全局信息,并能提供客户之间的信息转发,客户之间的通讯必须通过服务端进行。因为在多个客户能够连接到同一台服务端上,所以服务端必须用线程负责每个用户的通讯和消息处理。
但是考虑到如果采用这种思路,当客户端达到一定的数量之后,会增加服务端的负荷,而且当两个玩家开始游戏之后,服务端只需知道玩家双方是否退出游戏以及双方的游戏结果即可,而玩家之间的对弈信息、聊天等信息大可不必经过服务端。
基于以上考虑的原因,决定采用P2P的网络模式:服务端程序开启服务后,通过一个线程监听客户端的连接,一旦有客户端连接,服务端便为该客户端建立连接并启动一个特定的线程,利用该连接不断获取客户端操作请求,从而更新游戏大厅信息,让其他玩家及时了解到哪些客户端建立了游戏主机,哪些客户端之间正在进行游戏对弈。而当客户端加入了另外一个客户端建立的游戏主机时,二者便建立起P2P连接,用于传送二者之间的对弈信息,操作请求(悔棋,认输等),聊天信息等。
参考博文和源码下载地址:
https://www.write-bug.com/article/36.html
原文地址:https://www.cnblogs.com/ddgg5151/p/10045151.html