def get_gamer_data(self): # 826向服务器发送登陆请求,返回得到账号是否存在 tcp_client_socket.send("826 " + self.administratorsID + " " + self.lineEdit_userID.text()) data_list_827 = tcp_client_socket.rec().split() if data_list_827[0] == "827": if data_list_827[1] == "0": # 账号不存在 reply = QMessageBox.about(self.form, "提示", "您输入的账号不存在!请重新输入") elif data_list_827[1] == "1": # 账号存在 reply = QMessageBox.about(self.form, "提示", "用户ID输入正确!正在获取用户信息") self.set_button(True) # 设置按钮可用 self.userID = self.lineEdit_userID.text() # 获取账号 # 828请求获取 金币积分 音量音效 正在使用的皮肤 tcp_client_socket.send("828 " + self.administratorsID + " " + self.userID) userData_list = tcp_client_socket.rec().split() self.point = userData_list[3] self.gold = userData_list[4] self.sound = userData_list[5] self.volume = userData_list[6] self.skin_url = userData_list[7] # 830请求获取 好友数据 tcp_client_socket.send("830 " + self.administratorsID + " " + self.userID) data_list_831 = tcp_client_socket.rec().split("@") self.friend_list = json.loads(data_list_831[1]) # 832请求获取 皮肤道具 信息 tcp_client_socket.send("832 " + self.administratorsID + " " + self.userID) userData_list = tcp_client_socket.rec().split() if userData_list[0] == "833": self.toolsquantity = userData_list[2] self.skin_url_list = [] for i in range(len(userData_list) - 3): self.skin_url_list.append(userData_list[i + 3]) urllib.request.urlretrieve(self.skin_url_list[i], filename=self.path + '/bag_skin' + str(i) + '.jpg') # 下载图片""" else: # 通信出错 reply = QMessageBox.about(self.form, "提示", "服务器出错") else: reply = QMessageBox.about(self.form, "提示", "服务器出错")
def click(self, x, y): if y == 1: #加好友 tcp_client_socket.send("602 " + str(self.userID) + " " + str(self.applylist[x][1]) + " " + str(2)) data_list_601 = tcp_client_socket.rec().split() if data_list_601[1] == '1': del self.applylist[x] self.tableWidget.removeRow(x) elif y == 2: #删好友 tcp_client_socket.send("602 " + str(self.userID) + " " + str(self.applylist[x][1]) + " " + str(1)) data_list_601 = tcp_client_socket.rec().split() if data_list_601[1] == '1': del self.applylist[x] self.tableWidget.removeRow(x)
def clicked(self, i): if isinstance(i, int): userID = self.rank_list[i][0] else: userID = self.rank_list[int(i.text())][0] self.form.setEnabled(False) # 向服务器请求个人战绩数据 tcp_client_socket.send("206 " + self.selfID + " " + userID) data_list_207 = tcp_client_socket.rec().split("@") self.exploits_list = json.loads(data_list_207[5]) form1 = myDialog() form1.setWindowModality(2) # 使本窗口无法选中 ui = Personalinterface_Dialog() # 判断是否是自己 if self.selfID == userID: ui.setupUi(form1, self.selfID, 0, data_list_207[1], data_list_207[2], data_list_207[3], data_list_207[4], self.exploits_list, data_list_207[6]) else: ui.setupUi(form1, self.selfID, 1, data_list_207[1], data_list_207[2], data_list_207[3], data_list_207[4], self.exploits_list, data_list_207[6]) form1.sound = self.form.sound # 设置音效音量 form1.show() form1.exec_() self.form.setEnabled(True)
def signle_game_jump_to_difficulty_choose(self): self.form.setEnabled(False) # 向服务器请求关卡数据和玩家数据 tcp_client_socket.send("202 " + self.userID) data_list_203 = tcp_client_socket.rec().split("@") self.level_data = json.loads(data_list_203[1]) self.stagenum = int(data_list_203[2]) # 转到难度选择窗口 difficulty_choose_form = myDialog() difficulty_choose_form.setWindowModality(2) # 使本窗口无法选中 difficulty_ui = DifficultyChoose_Dialog() difficulty_ui.setupUi(difficulty_choose_form, self.level_data) difficulty_choose_form.sound = self.sound_volume # 设置音效音量 difficulty_choose_form.show() difficulty_choose_form.exec_() diffculty = difficulty_ui.getDifficulty() # 获取选择的难度 if diffculty != -1: # 如果选择了难度则跳转到游戏界面 game_form = MineDialog() game_form.setWindowModality(2) # 使本窗口无法选中 game_ui = MineSweeperUI(game_form, diffculty + 1, self.level_data[diffculty], self.stagenum, self.userID, 0, self.background_volume) game_form.show() game_form.exec_() game_ui.getData() # 如果是强制关闭则发送计算分数的请求给服务器 self.update_message() # 更新主界面信息 self.form.setEnabled(True)
def updateStage(self): tcp_client_socket.send("304" + ' ' + self.userID + ' ' + str(self.stagenum)) data_list305 = tcp_client_socket.rec().split() if data_list305[0] != "305" or data_list305[1] != "1": print("error:更新道具数量失败")
def click(self): #点击确认更改密码 if len(self.lineEdit.text()) < 6: self.lineEdit.setText("") QMessageBox.about(self.Dialog, "提示", "您输入的当前密码长度小于6!请重新输入") elif len(self.lineEdit.text()) >= 6: if self.lineEdit_2.text() != self.lineEdit_3.text(): self.lineEdit_2.setText("") self.lineEdit_3.setText("") QMessageBox.about(self.Dialog, "提示", "确认密码与新密码不一致,请重新输入!") elif self.lineEdit_2.text() == self.lineEdit_3.text(): if len(self.lineEdit_2.text()) < 6: self.lineEdit_2.setText("") self.lineEdit_3.setText("") QMessageBox.about(self.Dialog, "提示", "新密码长度小于6,请重新输入!") elif len(self.lineEdit_2.text()) >= 6: # 向服务器请求更改密码 tcp_client_socket.send("702 " + self.UserID + ' ' + str(self.lineEdit.text()) + ' ' + str(self.lineEdit_2.text())) data_list_703 = tcp_client_socket.rec() if data_list_703 == "703a": QMessageBox.about(self.Dialog, "提示", "密码修改成功!") self.Dialog.close() elif data_list_703 == "703b": self.lineEdit.setText("") self.lineEdit_2.setText("") self.lineEdit_3.setText("") QMessageBox.about(self.Dialog, "提示", "当前密码错误,请重新输入!")
def toolspurchase(self): tcp_client_socket.send("403 " + self.userID + " " + str(self.toolsbox.value())) userData_list = tcp_client_socket.rec().split() if userData_list[0] == "403a": reply = QMessageBox.about(self.form, "提示", "购买成功!") elif userData_list[0] == "403b": reply = QMessageBox.about(self.form, "提示", "购买失败!您的金币不足。")
def operate_friend(self, text): if text == "添加好友": tcp_client_socket.send("602 " + self.my_userID + ' ' + self.userID + ' ' + str(0)) success = tcp_client_socket.rec().split() if success[1] == "1": self.addfirend_button.setText("等待回应") self.addfirend_button.setEnabled(False) elif text == "删除好友": tcp_client_socket.send("602 " + self.my_userID + ' ' + self.userID + ' ' + str(1)) success = tcp_client_socket.rec().split() if success[1] == "1": self.addfirend_button.setText("添加好友") self.addfirend_button.setEnabled(True)
def skinsetup(self, skinID): # 皮肤设置 # print(num) # urllib.request.urlretrieve(self.skin_url[num], filename=self.path + '/background.jpg') # 本次登录时直接下载图片就行 tcp_client_socket.send("502 " + self.userID + " " + skinID) # 将这次设定的图片存到服务端,用于下次登录时使用 userData_list = tcp_client_socket.rec().split() if userData_list[0] == "502a": reply = QMessageBox.about(self.form, "提示", "设置成功!") else: reply = QMessageBox.about(self.form, "提示", "设置失败!")
def purchase(self, skin_ID): tcp_client_socket.send("402 " + self.userID + " " + skin_ID) userData_list = tcp_client_socket.rec().split() # print(userData_list) if userData_list[0] == "402a": reply = QMessageBox.about(self.form, "提示", "购买成功!") elif userData_list[0] == "402b": reply = QMessageBox.about(self.form, "提示", "购买失败!您已经拥有这个皮肤。") elif userData_list[0] == "402c": reply = QMessageBox.about(self.form, "提示", "购买失败!您的金币不足!")
def saveSettings(self): # 向服务器请求保存音量设置 tcp_client_socket.send("704 " + self.UserID + ' ' + str(self.BGMSound) + ' ' + str(self.ClickSound)) # todo:bug!!!! data_list_705 = tcp_client_socket.rec() if data_list_705 == "705a": self.Dialog.close()
def deleteAdministrator(self, x, y): if y == 3: isDel = QMessageBox.information( self.dialog, "提示", "是否确定删除管理员" + str(self.data[x][1]) + "?", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes) if isDel == QMessageBox.Yes: tcp_client_socket.send("818 " + self.administratorID + " " + str(self.data[x][0])) data_list_819 = tcp_client_socket.rec().split(" ") if (json.loads(data_list_819[1]) == 1): del self.data[x] self.tableWidget.removeRow(x)
def change_gold(self): if self.lineEdit_goldchange.text() is not None: tcp_client_socket.send("806 " + self.administratorsID + " 5 " + self.lineEdit_goldchange.text()) data_list = tcp_client_socket.rec().split() if data_list[0] == "807": if data_list[1] == "1": self.update_level() reply = QMessageBox.about(self.form, "提示", "修改成功") elif data_list[1] == "0": reply = QMessageBox.about(self.form, "提示", "修改积分金币规则失败") else: reply = QMessageBox.about(self.form, "提示", "输入不能为空")
def administrator_account_jump(self): self.form.setEnabled(False) # 设置本窗口无法选择 tcp_client_socket.send("816 " + self.administratorsID) data_list_817 = tcp_client_socket.rec().split("@") administratorData = json.loads(data_list_817[1]) form = myDialog() form.setWindowModality(2) # 使本窗口无法选中 ui = administrator_account_data() ui.setupUi(form, self.administratorsID, administratorData) form.show() form.exec_() self.form.setEnabled(True)
def delete_level(self): if self.lineEdit_delete.text() is not None: tcp_client_socket.send("806 " + self.administratorsID + " 2 " + self.lineEdit_delete.text()) data_list = tcp_client_socket.rec().split() print(data_list) if data_list[0] == "807": if data_list[1] == "1": self.update_level() reply = QMessageBox.about(self.form, "提示", "修改成功") elif data_list[1] == "0": reply = QMessageBox.about(self.form, "提示", "删除关卡失败") else: reply = QMessageBox.about(self.form, "提示", "关卡名不能为空")
def deleteGamer(self, x, y): if y == 3: isDel = QMessageBox.information( self.dialog, "提示", "是否确定删除玩家" + str(self.data[x][1]) + "?", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes) if isDel == QMessageBox.Yes: tcp_client_socket.send("814 " + self.administratorsID + " " + str(self.data[x][0])) data_list_815 = tcp_client_socket.rec().split(" ") if (json.loads(data_list_815[1]) == 1): del self.data[x] self.tableWidget.removeRow(x) elif json.loads(data_list_815[1]) == 2: reply = QMessageBox.about(self.dialog, "提示", "您输入的账号在线!请稍后再删除该账号")
def get_end(self): while True: data = tcp_client_socket.rec() if not data: continue data_list = data.split(" ") # print(data_list) if data_list[0] == "303": self.data_list = data_list print("扫雷游戏窗口状态:", self.sentmessage == 0) if self.sentmessage == 0: # 如果还没结束游戏,则关闭窗口 self.s_close = 1 break
def jump_to_ranklist(self): self.form.setEnabled(False) # 设置本窗口无法选择 # 向服务器请求排行数据 tcp_client_socket.send("204 " + self.userID) data_list_205 = tcp_client_socket.rec().split("@") self.rank_list = json.loads(data_list_205[1]) form1 = myDialog() form1.setWindowModality(2) # 使本窗口无法选中 ui = Ranklist_Dialog() ui.setupUi(form1, self.userID, self.rank_list) form1.sound = self.sound_volume # 设置音效音量 form1.show() form1.exec_() self.update_message() # 更新主界面信息 self.form.setEnabled(True)
def jump_to_friendList(self): self.form.setEnabled(False) # 向服务器请求好友列表数据 tcp_client_socket.send("600 " + self.userID) data_list_601 = tcp_client_socket.rec().split("@") self.friend_list = json.loads(data_list_601[1]) form1 = myDialog() form1.setWindowModality(2) # 使本窗口无法选中 ui = FriendList_Dialog() ui.setupUi(form1, self.userID, len(self.friend_list), self.friend_list) form1.sound = self.sound_volume # 设置音效音量 form1.show() form1.exec_() self.update_message() # 更新主界面信息 self.form.setEnabled(True)
def update_message(self): # 向服务器发送玩家数据请求请求 tcp_client_socket.send("200 " + self.userID) userData_list = tcp_client_socket.rec().split() self.username = userData_list[1] self.userID = userData_list[2] self.point = userData_list[3] self.gold = userData_list[4] self.background_volume = float(int(userData_list[5]) / 100) self.sound_volume = float(int(userData_list[6]) / 100) self.skin_url = userData_list[7] self.form.sound = self.sound_volume # 设置音量 # 设置金币积分 self.point_num_label.setText(self.point) self.gold_num_label.setText(self.gold)
def determine(self, UserName, Password): # todo:向服务器请求注册,服务器随机分配一个用户ID作为登录ID(数字) tcp_client_socket.send("102 " + self.UserName_edit.text() + " " + self.Password_edit.text()) data = tcp_client_socket.rec() data_list = data.split() # 获得服务器发来的消息 if data_list[0] == "103": ID = data_list[1] reply = QMessageBox.information( self.form, "注册成功", "注册成功!\n请记住您用于登录的账号为:" + ID + "\n密码为:" + str(Password), QMessageBox.Ok) else: reply = QMessageBox.about(self.form, "提示", "服务器出错") if reply == QMessageBox.Ok: self.form.close()
def modify_point(self): # 修改积分 # 向服务器请求修改数据 if self.lineEdit_pointM.text().isdigit(): if int(self.lineEdit_pointM.text()) >= 0: tcp_client_socket.send("802 " + self.administratorsID + " " + self.lineEdit_pointM.text() + " " + "1" + " " + self.lineEdit_userID.text()) data_list = tcp_client_socket.rec().split() if data_list[1] == '1': self.point = self.lineEdit_pointM.text() reply = QMessageBox.about(self.form, "提示", "修改成功") else: reply = QMessageBox.about(self.form, "提示", "修改失败") else: reply = QMessageBox.about(self.form, "提示", "您输入的数小于0!请重新输入") else: reply = QMessageBox.about(self.form, "提示", "您输入的不是正整数!请重新输入")
def requestData(self): if self.is_double == 0: # 如果是单人游戏,接收回复,否则让get_end结收 # 如果是强制关闭 if self.dialog.finish == 0: # tcp_client_socket.send("1") tcp_client_socket.send("300" + ' ' + self.userID + ' ' + str(self.difficulty) + ' ' + "-1" + ' ' + "-1" + ' ' + str(self.stagenum)) else: # tcp_client_socket.send("1") tcp_client_socket.send("300" + ' ' + self.userID + ' ' + str(self.difficulty) + ' ' + self.label_3.text() + ' ' + str(self.mine_num) + ' ' + str(self.stagenum)) data = tcp_client_socket.rec() self.data_list = data.split() else: self.sentmessage = 1 # 如果是强制关闭 if self.dialog.finish == 0: self.data_list = ["000", "0", "0"] # tcp_client_socket.send("1") tcp_client_socket.send("302" + ' ' + self.userID + ' ' + str(self.difficulty) + ' ' + "-1" + ' ' + "-1" + ' ' + str(self.stagenum)) else: self.data_list = ["000", "0", "0"] # tcp_client_socket.send("1") tcp_client_socket.send("302" + ' ' + self.userID + ' ' + str(self.difficulty) + ' ' + self.label_3.text() + ' ' + str(self.mine_num) + ' ' + str(self.stagenum)) while (True): if self.data_list[0] == "303": break
def change_mine(self): if self.lineEdit_minechange.text() is not None: temp = self.lineEdit_minechange.text().split("@") if len(temp) == 2 and temp[1] is not None and temp[1].isdecimal(): data = "806 " + self.administratorsID + " 4 " + temp[ 0] + " " + temp[1] tcp_client_socket.send(data) data_list = tcp_client_socket.rec().split() if data_list[0] == "807": if data_list[1] == "1": self.update_level() reply = QMessageBox.about(self.form, "提示", "修改成功") elif data_list[1] == "0": reply = QMessageBox.about(self.form, "提示", "修改雷数失败") else: reply = QMessageBox.about(self.form, "提示", "请重新输入") else: reply = QMessageBox.about(self.form, "提示", "输入不能为空")
def jump_to_personal_interface(self): self.form.setEnabled(False) # 向服务器请求个人战绩数据 tcp_client_socket.send("206 " + self.userID + " " + self.userID) data_list_207 = tcp_client_socket.rec().split("@") self.exploits_list = json.loads(data_list_207[5]) form1 = myDialog() form1.setWindowModality(2) # 使本窗口无法选中 ui = Personalinterface_Dialog() ui.setupUi(form1, self.userID, 0, data_list_207[1], data_list_207[2], data_list_207[3], data_list_207[4], self.exploits_list, data_list_207[6]) form1.sound = self.sound_volume # 设置音效音量 form1.show() form1.exec_() self.update_message() # 更新主界面信息 self.form.setEnabled(True)
def modify_volume(self): # 修改音效 # 向服务器请求修改数据 if self.lineEdit_volumeM.text().isdigit(): if int(self.lineEdit_volumeM.text()) >= 0 and int( self.lineEdit_volumeM.text()) <= 100: tcp_client_socket.send("802 " + self.administratorsID + " " + self.lineEdit_volumeM.text() + " " + "4" + " " + self.lineEdit_userID.text()) data_list = tcp_client_socket.rec().split() if data_list[1] == '1': self.volume = self.lineEdit_volumeM.text() reply = QMessageBox.about(self.form, "提示", "修改成功") else: reply = QMessageBox.about(self.form, "提示", "修改失败") else: reply = QMessageBox.about(self.form, "提示", "您输入的数不在0-100间!请重新输入") else: reply = QMessageBox.about(self.form, "提示", "您输入的不是整数!请重新输入")
def addAdministrator(self): if len(self.password.text()) < 6: self.password.setText("") QMessageBox.about(self.Dialog, "提示", "您输入的当前密码长度小于6!请重新输入") elif len(self.password.text()) >= 6: if self.password.text() != self.checkPassword.text(): self.password.setText("") self.checkPassword.setText("") QMessageBox.about(self.Dialog, "提示", "确认密码与新密码不一致,请重新输入!") elif self.password.text() == self.checkPassword.text(): # 向服务器请求添加管理员 tcp_client_socket.send( "820 " + self.adminID + ' ' + str(self.UserName.text()) + ' ' + str(self.password.text())) data_list_821 = tcp_client_socket.rec().split(" ") QMessageBox.about(self.Dialog, "提示", "创建管理员成功!\n\n管理员ID为: " + data_list_821[1] + "\n管理员用户名为: " + self.UserName.text() +"\n密码为: " + self.password.text()) self.Dialog.close() self.oldDialog.close()
def jump_to_setting(self): # self.form.setEnabled(False) # 向服务器请求设置信息 tcp_client_socket.send("700 " + self.userID) data_list_701 = tcp_client_socket.rec().split("@") self.username = data_list_701[1] self.userID = data_list_701[2] self.background_volume = int(data_list_701[3]) self.sound_volume = int(data_list_701[4]) form1 = myDialog() form1.setWindowModality(2) # 使本窗口无法选中 ui = setting_Dialog() ui.setupUi(form1, self.userID, self.username, self.background_volume, self.sound_volume) form1.sound = self.sound_volume # 设置音效音量 form1.show() form1.exec_() self.update_message() self.form.setEnabled(True)
def request(self, userID, point, diffculty, username): tcp_client_socket.send("208 " + userID + ' ' + point + ' ' + str(diffculty) + ' ' + username) while True: data = tcp_client_socket.rec() if not data: continue data_list = data.split(" ") if data_list[0] == "209": self.dialog.if_close = 1 self.data_list = data_list if data_list[1] == '1': sleep(0.15) # 等待0.15s,否则快速关闭程序,程序会崩溃 self.match = 1 self.enemy_username = data_list[2] self.enemy_point = data_list[3] self.timer.stop() self.label.setText("匹配成功,对手是" + self.enemy_username + ",积分为" + self.enemy_point) self.dialog.close() break
def clickCombat(self): if self.combatID.text() == "": QMessageBox.about(self.dialog, "提示", "请输入对局ID!") else: tcp_client_socket.send("824 " + self.administratorID + " " + self.combatID.text()) data_list_825 = tcp_client_socket.rec().split("@") if data_list_825[1] == "0": QMessageBox.about(self.dialog, "提示", "该对局不存在,请重新输入!") self.combatID.setText("") elif data_list_825[1] == "1": combatData = json.loads(data_list_825[2]) print(combatData) QMessageBox.about( self.dialog, "对局信息", "对局ID:" + self.combatID.text() + "\n\n玩家1ID:" + str(combatData[0]) + "\n玩家2ID:" + str(combatData[1]) + "\n\n难度:" + str(combatData[2]) + "\n开始时间:" + str(combatData[3]) + "\n结束时间:" + str(combatData[4]) + "\n\n玩家1的积分变化:" + str(combatData[5]) + "\n玩家2的积分变化:" + str(combatData[6]) + "\n") self.combatID.setText("")