MonogatariL / WuZiQi_Network-Linux_Epoll_server

以Linux下C++网络编程作服务端,Qt/C++编写的可联网五子棋

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

WuZiQi_Network

该项目由可以进行网络对战的五子棋的客户端和服务端组成,使用的语言是C/C++(基本都是C++)。

客户端使用的是Qt,包括功能有本地游戏和网络游戏,网络游戏主要流程为:连接服务器——>刷新战局加入他人的房间/创建房间——>双方准备游戏——>游戏开始

服务端核心是Linux下网路编程,使用的EPOLL模型。

使用方法:如果有Qt环境可以直接使用.exe文件,如果没有则要打开.pro编译。客户端的主界面中左上角的小按钮可以设置IP地址和端口号,默认的IP地址和端口是我在腾讯云上购买的一个服务器,在此服务器上存放了服务端的代码,这种情况下可以跨局域网连接,当然前提是我开着的(官匹地址有变,应为118.31.247.104(同样价格还是阿里云2核2G香啊)),于是直接使用的话现在Linux下make,然后./server开启服务端,在客户端上填写好ip地址和端口点击save,点击网络对战即可。

<五子棋网络对战>

主界面:

main_menu

网络对战匹配界面:

1:连接服务器,此时会有三种状态在上面的标签中显示:绿色(连接成功)红色(未连接)蓝色(正在连接)。

2:刷新战局,向服务器请求当前已有的房间,不包括已经有两个人和正在游戏的房间对局。 创建房间,以创建房间按钮左边的文本框内容作为房间标题,创建房间,并将房间信息、ip地址、端口号发送给服务器。 退出网络对战,断开连接,回到主界面,回收internet类的对象。

3:点击刷新战局后,出现的可加入房间,点击join加入。

network

游戏准备界面

1:准备和退出游戏,准备与否的状态在棋盘中间显示,未准备则显示please_prepare,准备则为please_wait,当双方都处于准备状态,服务器向双方客户端发送游戏开始信息,客户端接受信息后进入下一阶段。

2:对手信息,头像框为黑色的时候,说明没有对手加入房间,图中状态为有对象处于房间中,并且会给出相应的信息(准备状态、ip地址、服务器分配的套接字)。

3:准备状态

game_prepare

先后手

双方准备完毕游戏开始时候的第一个界面,此时任何一方点击先手/后手,对手方都会得到相对应的颜色。

who_first

游戏开始 1:悔棋和认输按钮,使用后向服务器发送相应的玩家请求,服务器接受到玩家请求时候会直接交由另一边的客户端进行处理,此时发送方游戏会进入等待状态。

2:存放玩家的颜色,并且下边的标签会实时更新当前为哪位玩家的回合。

3:棋盘界面

4:聊天界面

game

About

以Linux下C++网络编程作服务端,Qt/C++编写的可联网五子棋


Languages

Language:C++ 98.9%Language:QMake 1.0%Language:Makefile 0.1%