Пример #1
0
def quadratic():
    turtle.setworldcoordinates(-12, -2, 12, 102)
    f = lambda x: x**2
    demo = Demo(f)
    demo.start(-10)
    demo.bag([x * 0.5 for x in range(-20, 21)])
    gen = hill_climb.seek(-10, 0.5, f)
    for x, y in gen:
        demo.move(x, y, False)
Пример #2
0
def cosine_slope():
    turtle.setworldcoordinates(-6.2, -12, 6.2, 12)
    f = lambda x: -x + 5 * math.cos(x)
    demo = Demo(f)
    demo.start(-6)
    demo.bag([x * 0.1 for x in range(-62, 62)])
    gen = hill_climb.seek(-6, 0.1, f)
    for x, y in gen:
        demo.move(x, y, False)
Пример #3
0
def sa_demo(curr_x, step, f, temperature, x_points, min_x, max_x, *setup):
    turtle.setworldcoordinates(*setup)
    demo = Demo(f)
    demo.start(curr_x)
    demo.bag(x_points)
    gen = sim_anneal.seek(curr_x, step, f, temperature, min_x, max_x)
    for x, y, t, j in gen:
        demo.move(x, y, j)
        curr_x = x
    print(curr_x, f(curr_x))
Пример #4
0
def slanty_bag():
    turtle.setworldcoordinates(-2.2, -2, 12.2, 22)
    demo = Demo(slanty_bag_curve)
    demo.bag([x * 0.5 for x in range(-1, 22)])

    x = -0.5
    step = 0.1
    demo.start(x)
    gen = hill_climb.seek(x, step, slanty_bag_curve)
    for x, y in gen:
        demo.move(x, y, False)
Пример #5
0
def stuck():
    turtle.setworldcoordinates(-12, -1, 12, 15)
    f = lambda x: math.fabs(x)
    demo = Demo(f)
    start = -10
    step = 3
    demo.start(start)
    demo.bag(range(-10, 11))
    gen = hill_climb.seek(start, step, f)
    for x, y in gen:
        demo.move(x, y, False)
Пример #6
0
    def on_pubmsg(self, connection, event):
	source = event.source()
	nick = source.split('!')[0]
	args = event.arguments()
	message = args[0].split(' ')
	
	if message[0] == '!!' and len(message) > 1:
	    try:
		if self.admins[event.source()] == 'admin':
		    command = "say \"^8(^1IRC:^5@^2" + nick + "^8)^7 " + ' '.join(message[1:]) + "\""
		elif self.admins[event.source()] == 'mod':
		    command = "say \"^8(^1IRC:^5+^2" + nick + "^8)^7 " + ' '.join(message[1:]) + "\""
		    
		self.rcon.send(command)
	    except:
		#command = "say \"^8(^1IRC:^2" + nick + "^8)^7 " + ' '.join(message[1:]) + "\""
		self.connection.privmsg(self.target, self.m.MSG_ERR_ADMIN_PRIV)
		
	elif message[0][0] == '@' and len(message[0]) > 1 and len(message) > 1:
	    if message[0][1:].isdigit():
		cid = message[0].split("@")[1]
		output = "tell " + cid + " \"^8(^1IRC:^2" + nick + "^8)^7 " + ' '.join(message[1:]) + "\""
		self.rcon.send(output)
	elif message[0] == '!bigtext' and len(message) > 1:
	    command = "bigtext \"" + ' '.join(message[1:]) + "\""
	    self.rcon.send(command)
	elif message[0] == '!kick' and len(message) > 1:
	    try:
		if self.admins[event.source()] == 'admin':
		    try:
			c = self.getClientObject(message[1])
			self.rcon.send("kick " + message[1])
			self.connection.privmsg(self.target, self.m.MSG_RCON_KICK % (nick, c.coloredIrcNickname())) 
		    except:
			self.connection.privmsg(self.target, self.m.MSG_ERR_CID)
	    except KeyError:
		self.connection.privmsg(self.target, self.m.MSG_ERR_ADMIN)
	elif message[0] == '!slap' and len(message) > 1:
	    try:
		if self.admins[event.source()] == 'admin':
		    try:
			c = self.getClientObject(message[1])
			self.rcon.send("slap " + message[1])    
			self.connection.privmsg(self.target, self.m.MSG_RCON_SLAP % (nick, c.coloredIrcNickname()))
		    except:
			self.connection.privmsg(self.target, self.m.MSG_ERR_CID)
	    except KeyError:
		self.connection.privmsg(self.target, self.m.MSG_ERR_ADMIN)
	elif message[0] == '!nuke' and len(message) > 1:
	    try:
		if self.admins[event.source()] == 'admin':
		    try:
			c = self.getClientObject(message[1])
			self.rcon.send("nuke " + message[1])
			self.connection.privmsg(self.target, self.m.MSG_RCON_NUKE % (nick, c.coloredIrcNickname()))
		    except:
			self.connection.privmsg(self.target, self.m.MSG_ERR_CID)
	    except KeyError:
		self.connection.privmsg(self.target, self.m.MSG_ERR_ADMIN)
	elif message[0] == '!mute' and len(message) > 1:
	    try:
		if self.admins[event.source()] == 'admin':
		    try:
			c = self.getClientObject(message[1])
			self.rcon.send("mute " + message[1])
			self.connection.privmsg(self.target, self.m.MSG_RCON_MUTE % (nick, c.coloredIrcNickname()))
		    except:
			self.connection.privmsg(self.target, self.m.MSG_ERR_CID)
	    except KeyError:
		self.connection.privmsg(self.target, self.m.MSG_ERR_ADMIN)
	elif message[0] == '!nextmap' and len(message) > 1:
	    try:
		if self.admins[event.source()] == 'admin':
		    self.rcon.send("g_nextmap " + message[1])
		    self.connection.privmsg(self.target, self.m.MSG_RCON_NEXTMAP % (message[1]))
	    except KeyError:
		self.connection.privmsg(self.target, self.m.MSG_ERR_ADMIN)
	elif message[0] == '!map':
	    if len(message) > 1:
		try:
	    	    if self.admins[event.source()] == 'admin':
	        	self.rcon.send("map " + message[1])
	        	self.connection.privmsg(self.target, self.m.MSG_RCON_MAP %(nick, message[1]))
		except KeyError:
	        	self.connection.privmsg(self.target, self.m.MSG_ERR_ADMIN)
	    else:
		self.connection.privmsg(self.target, self.m.MSG_CURR_MAP %(self.currentMap))
	elif message[0] == "!shuffle":
	    try:
		if self.admins[event.source()] == 'admin':
		    self.rcon.send("shuffleteams")
		    self.connection.privmsg(self.target, self.m.MSG_RCON_SHUFFLE % (nick))
	    except KeyError:
		self.connection.privmsg(self.target, self.m.MSG_ERR_ADMIN)
	elif message[0] == '!force' and len(message) > 3:
	    try:
		if self.admins[event.source()] == 'admin':
		    try:
			c = self.getClientObject(message[1])
			self.rcon.send("forcecvar " + message[1] + " " + message[2] + " " + ''.join(message[3:]))
			self.connection.privmsg(self.target, self.m.MSG_RCON_FORCECVAR % (nick, message[2], ''.join(message[3:]), c.coloredIrcNickname()))
		    except:
			self.connection.privmsg(self.target, self.m.MSG_ERR_CID)
	    except KeyError:
		self.connection.privmsg(self.target, self.m.MSG_ERR_ADMIN)
	elif message[0] == '!list':
	    if self.reader != None:
		output = (self.m.MSG_LIST % (len(self.reader.clients), self.currentMap)) + " "
		
		for key, c in self.reader.clients.iteritems():
		    output = output + "(" + str(key) + ")" + c.coloredIrcNickname() + " "
		    
		self.connection.privmsg(self.target, output)
	    else:
		self.connection.privmsg(self.target, self.m.MSG_ERR_OBJECT)
	elif message[0] == '!ts3' and self.cfg.ts3enabled:
	    try:
		ts3client = TS3(self.cfg.ts3host, self.cfg.ts3port, self.cfg.ts3user, self.cfg.ts3pass, self, self.target, "list", "")
		ts3client.start()
	    except:
		self.connection.privmsg(self.target, self.m.MSG_ERR_GENERAL)
	elif message[0] == '!ts3info' and len(message) > 1 and self.cfg.ts3enabled:
	    try:
		ts3client = TS3(self.cfg.ts3host, self.cfg.ts3port, self.cfg.ts3user, self.cfg.ts3pass, self, self.target, "info", message[1])
		ts3client.start()
	    except:
		self.connection.privmsg(self.target, self.m.MSG_ERR_GENERAL)
	elif message[0] == '!ban' and len(message) > 1:
	    if self.reader != None:
		try:
		    if self.admins[event.source()] == 'admin':
			try:
			    c = self.getClientObject(message[1])
			    self.rcon.send("addIP " + c.ip)
			    self.rcon.send("kick " + message[1])
			    self.connection.privmsg(self.target, self.m.MSG_RCON_BAN % (nick, c.coloredIrcNickname(), c.ip))
			except:
			    self.connection.privmsg(self.target, self.m.MSG_ERR_CID)
		except KeyError:
		    self.connection.privmsg(self.target, self.m.MSG_ERR_ADMIN)
	elif (message[0] == '!banguid' or message[0] == '!permban') and len(message) > 2:
	    if self.reader != None:
		try:
		    if self.admins[event.source()] == 'admin':
			try:
			    c = client.Client(-1)
			    
			    if message[1][0] == "#":
				ext_id = message[1].split("#")[1]
				ret = self.db.extInfo(int(ext_id))
				c.guid = ret[2]
				c.name = ret[3]
				c.ip = ret[0]
			    else:
				c = self.getClientObject(message[1])
				
			    guid = c.guid
			    reason = ' '.join(message[2:])
			    id = self.db.getId(c.guid)
			    
			    try:
				self.db.permBan(id, reason, nick)
			    except:
				self.connection.privmsg(self.target, self.m.MSG_ERR_DB)
				
			    self.rcon.send("addIP " + c.ip)
			    self.rcon.send("kick " + message[1])
			    self.connection.privmsg(self.target, self.m.MSG_RCON_BANGUID % (nick, c.coloredIrcNickname(), c.guid, c.ip, reason))
			except:
			    self.connection.privmsg(self.target, self.m.MSG_ERR_CID)
		except:
		    self.connection.privmsg(self.target, self.m.MSG_ERR_ADMIN)
	elif message[0] == '!search' and len(message) > 1:
	    try:
		if self.admins[event.source()] == 'admin':
		    try:
			if len(message[1]) >= 3 and message[1].isalnum():
			    results = self.db.search(message[1])
			    output = self.m.MSG_SEARCH % (message[1]) + " "
			
			    if len(results) > 40:
				output = output + self.m.MSG_ERR_SEARCH_RES
			    else:
				for result in results:
				    output = output + "(\x02#" + str(result[1]) + "\x02)" + result[0] + " "
			else:
			    output = self.m.MSG_ERR_SEARCH
			    	
			self.connection.privmsg(self.target, output)
		    except:
			print sys.exc_info()
			self.connection.privmsg(self.target, self.m.MSG_ERR_DB)
	    except:
		self.connection.privmsg(self.target, self.m.MSG_ERR_ADMIN)
	elif message[0] == '!tempban' and len(message) > 2:
	    try:
		if self.admins[event.source()] == 'admin':
		    try:
			c = client.Client(-1)
			c = self.getClientObject(message[1])
			id = self.db.getId(c.guid)
			duration = float(message[2])
			
			if duration > 0.0:
			    self.db.tempBan(id, duration, nick)
			    self.rcon.send("kick " + message[1])
			    self.connection.privmsg(self.target, self.m.MSG_RCON_TEMPBAN % (nick, c.coloredIrcNickname(), str(duration)))
		    except:
			self.connection.privmsg(self.target, self.m.MSG_ERR_DB)
	    except:
		self.connection.privmsg(self.target, self.m.MSG_ERR_ADMIN)
	elif message[0] == '!extinfo' and len(message) > 1:
	    try:
		if self.admins[event.source()] == 'admin':
		    try:
			ret = self.db.extInfo(int(message[1]))
			
			try:
			    (ip_ptr, alias, addr) = socket.gethostbyaddr(ret[0])
			    added = " [" + ip_ptr + "]"
			except:
			    added = ""
			    
			output = self.m.MSG_EXTINFO % (message[1], ret[3], ret[0], added, ret[2], str(ret[1]))
			self.connection.privmsg(self.target, output)
		    except:
			print sys.exc_info()
			self.connection.privmsg(self.target, self.m.MSG_ERR_DB)
	    except:
		self.connection.privmsg(self.target, self.m.MSG_ERR_ADMIN)
	elif message[0] == '!aliases' or message[0] == '!alias' and len(message) > 1:
	    if self.reader != None:
		try:
		    if self.admins[event.source()] == 'mod' or self.admins[event.source()] == 'admin':
			try:
			    c = client.Client(-1)
			    
			    if message[1][0] == "#":
				ext_id = message[1].split("#")[1]
				ret = self.db.extInfo(int(ext_id))
				c.guid = ret[2]
				c.name = ret[3]
				c.ip = ret[0]
			    else:
				c = self.reader.clients[int(message[1])]
			
			    guid = c.guid
		    
			    try:
				aliases = self.db.getAliases(guid)
				output = self.m.MSG_ALIASES % (c.coloredIrcNickname()) + " "
			
				if len(aliases) == 0:
				    output = output + "None"
				    self.connection.privmsg(self.target, output)
				else:
				    i = 0
				    for alias in aliases:
					output = output + alias[0] + " "
					i = i + 1
					if i == 10:
					    self.connection.privmsg(self.target, output)
					    i = 0
					    output = self.m.MSG_ALIASES % (c.coloredIrcNickname()) + " "
					    time.sleep(1.0)
				    
				    if i != 0:
					self.connection.privmsg(self.target, output)
			    except:
				print sys.exc_info()
				self.connection.privmsg(self.target, self.m.MSG_ERR_DB)
			except:
			    self.connection.privmsg(self.target, self.m.MSG_ERR_CID)
		except:
		    self.connection.privmsg(self.target, self.m.MSG_ERR_ADMIN_MOD)
	    else:
		self.connection.privmsg(self.target, self.m.MSG_ERR_OBJECT)
	elif message[0] == '!info' and len(message) > 1:
	    if self.reader != None:
		try:
		    if self.admins[event.source()] == 'admin' or self.admins[event.source()] == 'mod':
			try:
			    c = client.Client(-1)
			    c = self.reader.clients[int(message[1])]
			    output = self.m.MSG_INFO + " " + c.coloredIrcNickname() + " "
			    ip = c.ip.split(':')[0]
			    try:
				(ip_ptr, alias, addr) = socket.gethostbyaddr(ip)
				added = " [" + ip_ptr + "]"
			    except:
				print sys.exc_info()
				added = ""
			
			    output = output + "(" + c.ip + added + ", " + c.guid + ")"
			    
			    if self.cfg.geoEnabled:
				loc = Localization(self, c.ip, output, self.target)
				loc.start()
			    else:
				self.connection.privmsg(self.target, output)
			except:
			    self.connection.privmsg(self.target, self.m.MSG_ERR_CID)
		except:
		    self.connection.privmsg(self.target, self.m.MSG_ERR_ADMIN_MOD)
	    else:
		self.connection.privmsg(self.target, self.m.MSG_ERR_OBJECT)
	elif message[0] == '!demo' and len(message) > 1:
	    if self.reader != None:
		try:
		    if self.admins[event.source()] == 'admin' or self.admins[event.source()] == 'mod':
			try:
			    if len(message) >= 3:
				try:
				    duration = int(message[2])
				except:
				    duration = 1
			    else:
				duration = 1
				
			    c = client.Client(-1)
			    c = self.reader.clients[int(message[1])]
			    output = self.m.MSG_DEMO + c.coloredIrcNickname()
			    d = Demo(self, self.rcon, output, self.target, duration, c.id)
			    d.start()
			except:
			    self.connection.privmsg(self.target, self.m.MSG_ERR_CID)
		except:
		    self.connection.privmsg(self.target, self.m.MSG_ERR_ADMIN_MOD)
	    else:
		self.connection.privmsg(self.target, self.m.MSG_ERR_OBJECT)
	elif message[0] == '!stamina' and len(message) > 2:
	    if self.reader != None:
		try:
		    if self.admins[event.source()] == 'admin':
			try:
			    c = self.getClientObject(message[1])

			    output = self.m.MSG_RCON_STAMINA % (c.coloredIrcNickname(), message[2])
	
			    self.rcon.send("stamina " + message[1] + " " + message[2])
			    self.connection.privmsg(self.target, output);
			except:
			    self.connection.privmsg(self.target, self.m.MSG_ERR_CID);
		except:
		    self.connection.privmsg(self.target, self.m.MSG_ERR_ADMIN);
	    else:
		self.connection.privmsg(self.target, self.m.MSG_ERR_OBJECT);
	elif message[0] == '!wj' and len(message) > 2:
	    if self.reader != None:
		try:
		    if self.admins[event.source()] == 'admin':
			try:
			    c = self.getClientObject(message[1])

			    output = self.m.MSG_RCON_WJ % (c.coloredIrcNickname(), message[2])
	
			    self.rcon.send("walljumps " + message[1] + " " + message[2])
			    self.connection.privmsg(self.target, output);
			except:
			    self.connection.privmsg(self.target, self.m.MSG_ERR_CID);
		except:
		    self.connection.privmsg(self.target, self.m.MSG_ERR_ADMIN);
	    else:
		self.connection.privmsg(self.target, self.m.MSG_ERR_OBJECT);
	elif message[0] == '!damage' and len(message) > 3:
	    if self.reader != None:
		try:
		    if self.admins[event.source()] == 'admin':
			try:
			    c = self.getClientObject(message[1])
			    
			    if message[2] == 'source' or message[2] == 'target':
				output = self.m.MSG_RCON_DAMAGE % (c.coloredIrcNickname(), message[2], message[3])
	
				self.rcon.send("damage " + message[1] + " " + message[2] + " " + message[3])
				self.connection.privmsg(self.target, output);
			    else:
				self.connection.privmsg(self.target, self.m.MSG_ERR_PARAMS);
			except:
			    self.connection.privmsg(self.target, self.m.MSG_ERR_CID);
		except:
		    self.connection.privmsg(self.target, self.m.MSG_ERR_ADMIN);
	    else:
		self.connection.privmsg(self.target, self.m.MSG_ERR_OBJECT);
Пример #7
0
class GuiEvent:
    def __init__(self, ui, mainWnd):
        self.ui = ui
        self.mainWnd = mainWnd

        # 默认视频源为相机
        self.ui.radioButtonVideo.setChecked(True)
        self.isVideo = True

        # 信号槽设置
        ui.open.clicked.connect(self.open)
        ui.close.clicked.connect(self.close)

        ui.radioButtonCam.clicked.connect(self.radioButtonCam)
        ui.radioButtonVideo.clicked.connect(self.radioButtonVideo)

        ui.find_video.clicked.connect(self.find_video)
        ui.find_output.clicked.connect(self.find_output)

        # 创建一个关闭事件并设为未触发
        self.stopEvent = threading.Event()
        self.stopEvent.clear()
        self.ui.close.setEnabled(False)
        self.modes = init_models()
        print(" ")

    def callback_progress(self, percentage):
        self.ui.video_progressBar.setProperty("value", percentage * 100)

    def callback_video(self, image):
        image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
        showImage = QtGui.QImage(image.data, image.shape[1], image.shape[0],
                                 QtGui.QImage.Format_RGB888)
        self.ui.DispalyLabel.setPixmap(QPixmap.fromImage(showImage))
        if self.stopEvent.is_set():
            # 关闭事件置为未触发,清空显示label
            self.stopEvent.clear()
            return True
        return False

        # self.ui.DispalyLabel.clear()

        # pix = QtGui.QPixmap.fromImage(showImage)
        # self.item = QGraphicsPixmapItem(pix)  # 创建像素图元
        # self.scene = QGraphicsScene()  # 创建场景
        # self.scene.addItem(self.item)
        # self.ui.graphicsView.setScene(self.scene)  # 将场景添加至视图

    def radioButtonCam(self):
        self.isVideo = False

    def radioButtonVideo(self):
        self.isVideo = True

    def find_video(self):
        self.fileName, self.fileType = QFileDialog.getOpenFileName(
            self.mainWnd, 'Choose file', '', '*')
        self.ui.input_video_path.setPlainText(self.fileName)

    def find_output(self):
        self.output_dir = QFileDialog.getExistingDirectory(
            self.mainWnd, 'Choose dir', '')
        self.ui.output_path.setPlainText(self.output_dir)
        self.output_video = os.path.join(self.output_dir,
                                         opt.default_output_name + '.avi')
        self.output_txt = os.path.join(self.output_dir,
                                       opt.default_output_name + '.txt')

    def open(self):
        self.ui.video_progressBar.setProperty("value", 0)
        self.ui.DispalyLabel.clear()
        self.stopEvent.clear()
        self.ui.close.setEnabled(True)
        self.ui.open.setEnabled(False)
        if self.isVideo:
            self.demo = Demo(self.fileName, self.output_video, self.output_txt,
                             self.modes, self.callback_progress,
                             self.callback_video, self.isVideo)
        else:
            self.rtsp_path = self.ui.input_camera_rtsp.toPlainText()
            self.demo = Demo(self.rtsp_path,
                             self.output_video,
                             self.output_txt,
                             self.modes,
                             callback_video=self.callback_video,
                             is_video=self.isVideo)
        self.demo.start(
        )  # demo.start() 在执行open函数之后,就回收了,所以要使用self.demo,这样可以保留

    def close(self):
        # 关闭事件设为触发,关闭视频播放
        self.stopEvent.set()
        self.ui.open.setEnabled(True)
        self.ui.close.setEnabled(False)
Пример #8
0
def main():
    demo = Demo()
    demo.start()
Пример #9
0
def main():
    demo = Demo([1000, 600], "Raycast Simulation")
    demo.start()