软工课程设计3——初学服务器端的搭建
前言
为了使黄金点游戏的迭代更具有实用性,我们俩在进行讨论和商量之后决定在原本的游戏程序基础上,将整个项目分为服务器端和客户端两部分。
服务器端的功能主要是:
(1)确定玩家的人数上限。
(2)设置客户端访问的端口号。
(3)创建房间使得客户端能够进行实时对战。
因此在这两周我们着重学习的是与搭建服务器端有关的知识,并实现了服务器端的UI界面设计。
一、服务器的UI设计
1.插入背景
定义一个TcpServer类,在该类中首先对窗口的布局进行设置。
首先对窗口背景进行设置,我们通过应用QPixmap类来实现该背景设置。QPixmap类用于绘图设备的图像显示,它可以作为一个QPaintDevice对象,也可以加载到一个控件中,通常是标签或按钮,用于在标签或按钮上显示图像。QPixmap可以读取的图像文件类型有BMP、GIF、JPG、JPEG、PNG、PBM、PGM、PPM、XBM、XPM等。
但在该过程中我们遇到了一个一开始难以解决的问题:背景图片无法插入。
(1)首先我们在网上查阅多种在QT程序中插入背景图片的方法,但发现都无法实现插入图片的效果,于是通过“不断修正+跑程序“的方式最终才确定了使用TcpServer类的方法来实现。
(2)考虑到后期程序打包的问题,我们决定将程序中的绝对路径改为相对路径。但是我们发现将图片放进程序的文件夹中后,将绝对路径改为“./023.jpg”和“:/023.jpg”这两种写法之后,发现背景图片变为黑色,无法插入。
于是经过不断查阅资料后我们发现了“新建QT文件并添加资源”的方式可以实现背景图片通过相对路径成功插入背景图片的效果。
QPixmap pixmap(QString::fromUtf8(":/new/prefix1/023.jpg"));//插入背景图片023.jpg
QPalette palette = this->palette();
palette.setBrush(backgroundRole(), QBrush(pixmap));
setPalette(palette);
2.文本框、按钮和输入框的设置
(1)QLabel设置标签
QLabel类代表标签,它是一个用于显示文本或图像的窗口部件。
currentLabel = new QLabel(tr("当前在线人数:"));
currentNumberLabel = new QLabel;
maxNumberLabel = new QLabel(tr("游戏人数上限:"));
maxNumberLineEdit = new QLineEdit;