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

📄 robotdlg.cpp

📁 java程序五子棋源代码。 java程序五子棋源代码。
💻 CPP
字号:
// RobotDlg.cpp : implementation file
//

#include "stdafx.h"
#include "GobangRobot.h"
#include "RobotDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CShareMemory<NODE_STRUCT> *svr_send_queue;		//发送队列
/////////////////////////////////////////////////////////////////////////////
// RobotDlg dialog


RobotDlg::RobotDlg(CWnd* pParent /*=NULL*/)
	: CDialog(RobotDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(RobotDlg)
	// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void RobotDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(RobotDlg)
	DDX_Control(pDX, IDC_LIST_ROBOTINFO, list_robotinfo);
	DDX_Control(pDX, IDC_COMBO_ROOMID, combo_roomid);
	DDX_Text(pDX, IDC_EDIT_ID, userid);
	DDX_Text(pDX, IDC_EDIT_NICKENAME, nicknmae);
	DDX_Text(pDX, IDC_EDIT_AGE, age);
	DDX_Control(pDX, IDC_COMBO_SEX, combo_sex);
	DDX_Control(pDX, IDC_COMBO_LEVEL, combo_level);
	DDX_Control(pDX, IDC_COMBO_ROOMNUM, combo_roomnum);
	DDX_Text(pDX, IDC_EDIT_TABLE, tableid);
	DDX_Control(pDX, IDC_COMBO_ORIENT, combo_orient);

	// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(RobotDlg, CDialog)
	//{{AFX_MSG_MAP(RobotDlg)
	ON_WM_SHOWWINDOW()
	ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)
	ON_BN_CLICKED(IDC_BUTTON_MODIFY, OnButtonModify)
	ON_BN_CLICKED(IDC_BUTTON_DELETE, OnButtonDelete)
	
	ON_NOTIFY(NM_CLICK, IDC_LIST_ROBOTINFO, OnClickListRobotinfo)

	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// RobotDlg message handlers

BOOL RobotDlg::OnInitDialog() {
	CDialog::OnInitDialog();

	list_robotinfo.InsertColumn(0,"ID");
	list_robotinfo.InsertColumn(1,"用户名");
	list_robotinfo.InsertColumn(2,"级别");
	list_robotinfo.InsertColumn(3,"年龄");
	list_robotinfo.InsertColumn(4,"性别");
	list_robotinfo.InsertColumn(5,"房间号");
	list_robotinfo.InsertColumn(6,"桌号");
	list_robotinfo.InsertColumn(7,"方位");
	list_robotinfo.InsertColumn(8,"状态");
	list_robotinfo.SetColumnWidth(0,60);
	list_robotinfo.SetColumnWidth(1,120);
	list_robotinfo.SetColumnWidth(2,60);
	list_robotinfo.SetColumnWidth(3,60);
	list_robotinfo.SetColumnWidth(4,60);
	list_robotinfo.SetColumnWidth(5,60);
	list_robotinfo.SetColumnWidth(6,60);
	list_robotinfo.SetColumnWidth(7,60);
	list_robotinfo.SetColumnWidth(8,60);
	list_robotinfo.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); 


		return true;
}

void RobotDlg::OnShowWindow( BOOL bShow, UINT nStatus ){
	combo_sex.ResetContent();
	combo_level.ResetContent();
	combo_orient.ResetContent();
	combo_roomid.ResetContent();
	combo_roomnum.ResetContent();
		userid="";
	nicknmae="";
	tableid = "";
	age= "";
	UpdateData(FALSE);
	char sqlbuf[1024]={0};
	
	CString database,dbusername,dbpassword,logdir;
	CString userid,grade,roomid,tableid,tableseq,status,oppuserid,oppstatus,nickename;
	CString userage,usersex;
	combo_sex.ResetContent();
	combo_level.ResetContent();
	combo_orient.ResetContent();
	combo_roomid.ResetContent();
	combo_roomnum.ResetContent();
		userid="";
	nicknmae="";
	tableid = "";
	age= "";
	UpdateData(FALSE);
	//创建数据库连接对象
	dbp = new TDBPEx("RobotDealThread177","xzy","xzy","xzy","../../log/");
	if (dbp && dbp->IsReady())
	{
	//	robotdeal->AddMsg("线程%d 创建dbp对象成功!",threadno);
	}
	else
	{
	//	robotdeal->AddMsg("线程%d 创建dbp对象失败!",threadno);
	}
	dbp->Run();
	if (dbp)
	{
		if (!dbp->IsConnect())
		{
			if (dbp->Connect() == PBL_Error_FAIL)
			{
				//robotdeal->AddMsg("[RecvThreadFunc]:线程%d dbp连接数据库失败!",threadno);
			
			}
			else
			{
			//	robotdeal->AddMsg("[RecvThreadFunc]:线程%d dbp连接数据库成功!",threadno);
			}
		}
	}
	strcpy(sqlbuf,"select DISTINCT roomid from gobang_roominfo");
	dbp->SQLExecDirect(sqlbuf,false);
	while(dbp->SQLFetch() == PBL_Error_OK){
		dbp->SQLGetDataStr(1,roomid);
		combo_roomid.AddString(roomid);
		combo_roomnum.AddString(roomid);
	}
	dbp->SQLFreeStmt();
	strcpy(sqlbuf,"select DISTINCT userid,nickname,grade,age,sex,roomid,tableid,tableseq,status \
			  from gobang_robotinfo");
	dbp->SQLExecDirect(sqlbuf,false);
	int i= 0;
	while(dbp->SQLFetch() == PBL_Error_OK){
		dbp->SQLGetDataStr(1,userid);
		dbp->SQLGetDataStr(2,nickename);
		dbp->SQLGetDataStr(3,grade);
		dbp->SQLGetDataStr(4,userage);
		dbp->SQLGetDataStr(5,usersex);
		dbp->SQLGetDataStr(6,roomid);
		dbp->SQLGetDataStr(7,tableid);	
		dbp->SQLGetDataStr(8,tableseq);
		dbp->SQLGetDataStr(9,status);
		list_robotinfo.InsertItem(i,NULL);
		list_robotinfo.SetItemText(i,0,userid);
		list_robotinfo.SetItemText(i,1,nickename);	
		list_robotinfo.SetItemText(i,2,grade);	
		list_robotinfo.SetItemText(i,3,userage);	
		list_robotinfo.SetItemText(i,4,usersex);
		list_robotinfo.SetItemText(i,5,roomid);
		list_robotinfo.SetItemText(i,6,tableid);
		list_robotinfo.SetItemText(i,7,tableseq);	
		list_robotinfo.SetItemText(i,8,status);
		
	}
	dbp->SQLFreeStmt();
	combo_sex.InsertString(0,"男");
	combo_sex.InsertString(1,"女");
	combo_level.InsertString(0,"1");
	combo_level.InsertString(1,"2");
	combo_level.InsertString(2,"3");
	combo_level.InsertString(3,"4");
	combo_level.InsertString(4,"5");
	combo_orient.InsertString(0,"左侧");
	combo_orient.InsertString(1,"右侧");

}

void RobotDlg::OnButtonAdd() 
{
	char sqlbuf[1024]={0};
	int 	gradei;
	int usersexi;
	int roomidi;
	int orienti;
	CString picturestr;
	CString bodytemp;
	int colorflagstr;
	NODE_STRUCT recvNode;
	memset(&recvNode,0,sizeof recvNode);
	strcpy(recvNode.err_code,"000");
	strcpy(recvNode.service_id,"001");
	strcpy(recvNode.ctrlmsg,"0");
	UpdateData(TRUE);
	gradei = combo_level.GetCurSel()+1;
	usersexi = combo_sex.GetCurSel()+1;
	roomidi = combo_roomnum.GetCurSel()+1;
	orienti = combo_orient.GetCurSel();
	if(usersexi==1){
		picturestr = "00";
	}else{
		picturestr = "01";
	}
	if(orienti==0){
		colorflagstr = 1;
	}else{
		colorflagstr = 2;
	}
	
	sprintf(sqlbuf,"select userid  from user_info where userid = '%s'",userid);
	dbp->SQLExecDirect(sqlbuf,false);
	while(dbp->SQLFetch() == PBL_Error_OK){
		MessageBox("该用户已存在");
		dbp->SQLFreeStmt();
		return;
	}
	dbp->SQLFreeStmt();
	
	
	sprintf(sqlbuf,"insert into user_info(userid,nickname,picture,sex,age) \
		values('%s','%s','%s',%d,%s)",userid,nicknmae,picturestr,usersexi,age);
	dbp->SQLExecDirect(sqlbuf,true,true);
	sprintf(sqlbuf,"insert into gobang_robotinfo(userid,nickname,grade,roomid,tableid,\
			tableseq,colorflag,sex,age) values('%s','%s',%d,%d,%s,%d,%d,%d,%s)"
			,userid,nicknmae,gradei,roomidi,tableid,orienti,colorflagstr,usersexi,age);
	dbp->SQLExecDirect(sqlbuf,true,true);
	recvNode.queuenum = 0 - atoi(userid); 
		
		strcpy(recvNode.operate_id,"000");   //获取房间列表
		strcpy(recvNode.body,userid);
		if(svr_send_queue->Insert(&recvNode) == FALSE){
		}
		strcpy(recvNode.operate_id,"002");   //获取大厅信息
		bodytemp.Format("%s;%d",userid,roomidi);
	//	bodytemp = userid + ";" + CString(roomidi);
		strcpy(recvNode.body,bodytemp);
		if(svr_send_queue->Insert(&recvNode) == FALSE){
		}
		strcpy(recvNode.operate_id,"004");   //用户坐下
		bodytemp.Format("%s;%d;%s;%d",userid,roomidi,tableid,orienti);
	//	bodytemp = userid + ";" + CString(roomidi)+ ";" + tableid+ ";" + CString(orienti);
		strcpy(recvNode.body,bodytemp);
		if(svr_send_queue->Insert(&recvNode) == FALSE){
		}
		strcpy(recvNode.operate_id,"007");   //用户准备好
		if(svr_send_queue->Insert(&recvNode) == FALSE){
		}
		MessageBox("添加成功");
	
}

void RobotDlg::OnButtonModify(){
	char sqlbuf[1024]={0};
	int 	gradei;
	int usersexi;
	int roomidi;
	int orienti;
	CString picturestr;
	CString bodytemp;
	int colorflagstr;
	NODE_STRUCT recvNode;
	memset(&recvNode,0,sizeof recvNode);
	strcpy(recvNode.err_code,"000");
	strcpy(recvNode.service_id,"001");
	strcpy(recvNode.ctrlmsg,"0");
	UpdateData(TRUE);
	gradei = combo_level.GetCurSel()+1;
	usersexi = combo_sex.GetCurSel();
	roomidi = combo_roomnum.GetCurSel()+1;
	orienti = combo_orient.GetCurSel();
	if(usersexi==0){
		picturestr = "00";
	}else{
		picturestr = "01";
	}
	if(orienti==0){
		colorflagstr = 1;
	}else{
		colorflagstr = 2;
	}
	sprintf(sqlbuf,"select userid  from user_info where userid = '%s'",userid);
	dbp->SQLExecDirect(sqlbuf,false);
	while(dbp->SQLFetch() != PBL_Error_OK){
		MessageBox("该用户不存在");
		dbp->SQLFreeStmt();
		return;
	}
	dbp->SQLFreeStmt();
	
	sprintf(sqlbuf,"update user_info set nickname='%s',picture='%s',sex='%d',age=%s \
		where userid = '%s'",nicknmae,picturestr,usersexi,age,userid);
	dbp->SQLExecDirect(sqlbuf,true,true);
	sprintf(sqlbuf,"update gobang_robotinfo set nickname='%s',grade=%d,roomid=%d,tableid=%s,\
			tableseq=%d,colorflag=%d,sex=%d,age=%s where userid = %s"
			,nicknmae,gradei,roomidi,tableid,orienti,colorflagstr,usersexi,age,userid);
	dbp->SQLExecDirect(sqlbuf,true,true);
	recvNode.queuenum = 0 - atoi(userid); 
		strcpy(recvNode.operate_id,"012");  //用户退出游戏
		strcpy(recvNode.body,userid);
		if(svr_send_queue->Insert(&recvNode) == FALSE){
		}
		strcpy(recvNode.operate_id,"000");   //获取房间列表
		strcpy(recvNode.body,userid);
		if(svr_send_queue->Insert(&recvNode) == FALSE){
		}
		strcpy(recvNode.operate_id,"002");   //获取大厅信息
		bodytemp.Format("%s;%d",userid,roomidi);
	//	bodytemp = userid + ";" + roomidstr;
		strcpy(recvNode.body,bodytemp);
		if(svr_send_queue->Insert(&recvNode) == FALSE){
		}
		strcpy(recvNode.operate_id,"004");   //用户坐下
		bodytemp.Format("%s;%d;%s;%d",userid,roomidi,tableid,orienti);
	//	bodytemp = userid + ";" + roomidstr+ ";" + tableid+ ";" + orientstr;
		strcpy(recvNode.body,bodytemp);
		if(svr_send_queue->Insert(&recvNode) == FALSE){
		}
		strcpy(recvNode.operate_id,"007");   //用户准备好
		if(svr_send_queue->Insert(&recvNode) == FALSE){
		}
	
		MessageBox("修改成功");
	
}

void RobotDlg::OnButtonDelete(){
		char sqlbuf[1024]={0};
	CString 	gradestr;
	CString usersexstr;
	CString roomidstr;
	CString orientstr;
	CString picturestr;
	CString bodytemp;
	NODE_STRUCT recvNode;
	memset(&recvNode,0,sizeof recvNode);
	strcpy(recvNode.err_code,"000");
	strcpy(recvNode.service_id,"001");
	strcpy(recvNode.ctrlmsg,"0");
	UpdateData(TRUE);
	gradestr = CString(combo_level.GetCurSel()+1);
	usersexstr = combo_sex.GetCurSel();
	roomidstr = CString(combo_roomnum.GetCurSel()+1);
	orientstr = CString(combo_orient.GetCurSel());
	if(strcmp(usersexstr,"0")==0){
		picturestr = "00";
	}else{
		picturestr = "01";
	}
	sprintf(sqlbuf,"select userid  from user_info where userid = '%s'",userid);
	dbp->SQLExecDirect(sqlbuf,false);
	while(dbp->SQLFetch() != PBL_Error_OK){
		MessageBox("该用户不存在");
		dbp->SQLFreeStmt();
		return;
	}
	dbp->SQLFreeStmt();
	
	recvNode.queuenum = 0 - atoi(userid); 
		strcpy(recvNode.operate_id,"012");  //用户退出游戏
		strcpy(recvNode.body,userid);
		if(svr_send_queue->Insert(&recvNode) == FALSE){
		}
	sprintf(sqlbuf,"delete from  gobang_robotinfo where userid = '%s'",userid);
	dbp->SQLExecDirect(sqlbuf,true,true);
	sprintf(sqlbuf,"delete from  user_info where userid = '%s'",userid);
	dbp->SQLExecDirect(sqlbuf,true,true);
	sprintf(sqlbuf,"delete from  gobang_hallinfo where userid = '%s'",userid);
	dbp->SQLExecDirect(sqlbuf,true,true);
	sprintf(sqlbuf,"delete from  gobang_userinfo where userid = '%s'",userid);
	dbp->SQLExecDirect(sqlbuf,true,true);
	
		MessageBox("删除成功");
}

void RobotDlg::OnClickListRobotinfo(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	NMLISTVIEW* plv = (NMLISTVIEW*)pNMHDR;
	CString str;
	int	nItem = plv->iItem;
	str = list_robotinfo.GetItemText(nItem,0);
	userid = str;
	str = list_robotinfo.GetItemText(nItem,1);
	nicknmae = str;
	str = list_robotinfo.GetItemText(nItem,2);
	combo_level.SetCurSel(atoi(str)-1);
	str = list_robotinfo.GetItemText(nItem,3);
	age = str;
	str = list_robotinfo.GetItemText(nItem,4);
	combo_sex.SetCurSel(atoi(str));
	str = list_robotinfo.GetItemText(nItem,5);
	combo_roomnum.SetCurSel(atoi(str)-1);
	str = list_robotinfo.GetItemText(nItem,6);
	tableid=str;
	str = list_robotinfo.GetItemText(nItem,7);
	combo_orient.SetCurSel(atoi(str));
	
	UpdateData(FALSE);
	
	*pResult = 0;
}

void RobotDlg::OnCancel(){
	CDialog::OnCancel();
	dbp->DisConnect();

	
}

⌨️ 快捷键说明

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