⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hall.cpp

📁 用qt写的网络五子棋程序
💻 CPP
字号:
#include "stdio.h"#include "hall.h"Hall::Hall(QWidget *parent , char *name)	:QWidget(parent , name)	{	mHallMaster=new HallMaster(this, 0);		mLoginButton =new QPushButton(this , 0 );	mQuitButton=new QPushButton(this , 0 ) ;	mWhiteButton=new QPushButton(this, 0 );	mBlackButton=new QPushButton(this, 0 );	mPlayerListView=new QListView(this);	mDeskListView = new QListView(this);	mPlayerInfoLabel= new QLabel ( this,  0,  0 );	mDeskInfoLabel= new QLabel ( this,  0,  0 );	mMyIDLabel=new QLabel ( this,  0,  0 ); 	mMyDeskLabel=new QLabel ( this,  0,  0 );	mAddrLineEdit=new QLineEdit( this, 0 );	mAddrLabel= new QLabel (QString ("Set Server IP:"), this, 0, 0);	mAddrInfoLabel=new QLabel (QString ("Current Server IP:"), this, 0, 0);	mMain=new Main(0,0);	mPlayerInfoLabel->setGeometry(10,20,200,30);	mDeskInfoLabel->setGeometry(250,20,200,30);	mMyIDLabel->setGeometry(10,10,170,40);	mMyDeskLabel->setGeometry(250,10,200,40);	mPlayerListView->setGeometry(10,60,200,320);	mDeskListView->setGeometry(250,60,200,320);	mLoginButton->setGeometry(10,390,100,30);	mQuitButton->setGeometry(110,390,100,30);	mWhiteButton->setGeometry(250,390,100,30);	mBlackButton->setGeometry(350,390,100,30);	mAddrLineEdit->setGeometry(110,440,100,20);	mAddrLabel->setGeometry(10,440,100,20);	mAddrInfoLabel->setGeometry(10,460,200,20);	mLoginButton->setText("Login");	mQuitButton->setText("Quit");	mWhiteButton->setText("White");	mBlackButton->setText("Black");	//setBackgroundPixmap(QPixmap("chessboard6_xmp"));	mPlayerInfoLabel->setText(QString("Players:"));	mDeskInfoLabel->setText(QString("Desks:"));	mMyIDLabel->setText(QString("Your ID:"));	mMyDeskLabel->setText(QString("Your desk num:"));	mPlayerInfoLabel->setFont( QFont( "Helvetica", 14 ) );	mDeskInfoLabel->setFont( QFont( "Helvetica", 14 ) );	mMyIDLabel->setFont( QFont( "Helvetica", 16 ) );	mMyDeskLabel->setFont( QFont( "Helvetica", 16 ) );	setMaximumSize(QSize(500,490));	setMinimumSize(QSize(500,490));		mPlayerListView->addColumn( "PlayerID" );    	//mPlayerListView->addColumn( "State" );    	//mPlayerListView->addColumn( "OpID" );	mPlayerListView->setAllColumnsShowFocus( TRUE );    	mPlayerListView->setSelectionMode( QListView::Single );	mDeskListView->addColumn( "TableNum" );    	mDeskListView->addColumn( "WhiteID" );    	mDeskListView->addColumn( "BlackID" );	mDeskListView->setAllColumnsShowFocus( TRUE );    	mDeskListView->setSelectionMode( QListView::Single );	connect( mLoginButton, SIGNAL(clicked()), this, SLOT(sLogin()) );	connect( mQuitButton, SIGNAL(clicked()), mHallMaster, SLOT(sonquit()) );	connect( mWhiteButton, SIGNAL(clicked()), this, SLOT(sSitdownWhite()) );	connect( mBlackButton, SIGNAL(clicked()), this, SLOT(sSitdownBlack()) );	connect( mMain, SIGNAL(sendmsgtohall(Message )), mHallMaster, SLOT(sdisposemsg(Message)));	connect( mHallMaster, SIGNAL(sendmsgtomain(Message)), mMain, SLOT(sdisposemsg(Message)));	connect( this, SIGNAL(sendmsgtohallmstr(Message)), mHallMaster, SLOT(sdisposemsg(Message)));		connect( mHallMaster, SIGNAL(updatehall()), this, SLOT(sUpDateHall()));	connect( mHallMaster, SIGNAL(showgameface()), this, SLOT(sShowMain()));	connect( mHallMaster, SIGNAL(quithall()), qApp, SLOT(quit()) );	connect( mAddrLineEdit, SIGNAL(returnPressed()), this, SLOT(sSetServeraddr()) );			}void Hall::sLogin(){	mHallMaster->Runner();	}//界面"White"按钮被按下时驱动本函数void Hall:: sSitdownWhite(){			//找到桌号		if(mDeskListView->selectedItem ()==0)		return;	QListViewItem * item=mDeskListView->selectedItem ();		//调用HallMaster发送Sitdown()请求	Message msg;	msg.mRequest=QString("hallsitdown");	msg.mContent=item->text(0);	msg.mContent2=QString("white");	emit sendmsgtohallmstr(msg);}//界面"Black"按钮被按下时驱动本函数void Hall:: sSitdownBlack(){		//找到桌号		if(mDeskListView->selectedItem ()==0)		return;		QListViewItem * item=mDeskListView->selectedItem ();	//调用HallMaster发送Sitdown()请求	Message msg;	msg.mRequest=QString("hallsitdown");	msg.mContent=item->text(0);	msg.mContent2=QString("black");	emit sendmsgtohallmstr(msg);	}//显示mMainvoid Hall::sShowMain(){	mMain->show();}void Hall::sSetServeraddr(){	QString addr=mAddrLineEdit->text();	Message msg;	msg.mRequest="hallsetserveraddr";	msg.mContent=addr;	emit sendmsgtohallmstr( msg );	mAddrInfoLabel->setText(QString("Current Server IP: ")+addr);	mAddrLineEdit->clear();}//QListView的更新比较特殊,单独用一个函数来加条目void Hall::AddPlayerListItem(int i){		QListViewItem *item ;		item = new QListViewItem( mPlayerListView );		item->setText( 0, mHallMaster->getPlayerID(i) );        	item->setText( 1, mHallMaster->getPlayerDesknumber(i));			mPlayerListView->insertItem ( item );}void Hall::AddDeskTableItem(int i){		//转换i为QString		char tempt[10];		sprintf(tempt,"%d",i);		QString num=QString(tempt);		//添加条目,直接访问到HallMaster 的DeskTable成员		QListViewItem *item ;		item = new QListViewItem( mDeskListView );		item->setText( 0, num );		QString id=mHallMaster->getDeskWhiteside(i);		if(id.compare("-1")!=0&&id.compare("0")!=0)        		item->setText( 1, id );				id=mHallMaster->getDeskBlackside(i);		if(id.compare("-1")!=0&&id.compare("0")!=0)        		item->setText( 2, id );				mDeskListView->insertItem ( item );		}void Hall::sUpDateHall(){		int i=1;	QString id;	printf("Hall:: updateHall\n");		mPlayerListView->clear();			//逐条更新playertable	while(i<MAX_PLAYER)        { 					if(mHallMaster->getPlayerID(i).compare("-1")!=0)			AddPlayerListItem(i);        	i++;	}		//更新桌位信息	mDeskListView->clear();		i=1;	while(i<MAX_DESK)	{		AddDeskTableItem(i);		i++;	}		//更新id信息	mMyIDLabel->setText(QString("Your ID:")+mHallMaster->getMyID());	mMyDeskLabel->setText(QString("Your desk num:")+mHallMaster->getMyDesknumber());}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -