def leer(self): with open(self.archivo) as plp: linea = plp.readline() linea = linea.rstrip('\n').split(',') while len(linea) > 1: if linea[0].upper() == 'C': self.canales = linea[1] if linea[0].upper() == 'S': lista = linea[1].split('|') self.sonidos.append(lista) if linea[0].upper() == 'T': duracion = float(linea[1]) linea = plp.readline() linea = linea.rstrip('\n').split(',') while linea[0].upper() == 'N': t = Tiempo(duracion) for c in linea[1]: t.agregar_nota(c == '#') self.tiempos.append(t) linea = plp.readline() linea = linea.rstrip('\n').split(',') continue linea = plp.readline() linea = linea.rstrip('\n').split(',')
def leer(self): '''Abre el archivo en modo lectura y lee. Modifica los atributos canales, tiempos y sonido. Pre: El archivo esta en formato plp''' with open(self.archivo) as plp: linea=plp.readline() linea=linea.rstrip('\n').split(',') while len(linea)>1: if linea[0].upper()=='C': self.canales=linea[1] if linea[0].upper()=='S': lista=linea[1].split('|') self.sonidos.append(lista) if linea[0].upper()=='T': duracion= float(linea[1]) linea=plp.readline() linea=linea.rstrip('\n').split(',') while linea[0].upper()=='N': t=Tiempo(duracion) for c in linea[1]: t.agregar_nota(c=='#') self.tiempos.append(t) linea=plp.readline() linea=linea.rstrip('\n').split(',') continue linea=plp.readline() linea=linea.rstrip('\n').split(',')
def anadir_marca_prev(self,duracion): tiempo=Tiempo(duracion) for iteracion in range(len(self.archivo.objeto_sonidos)): tiempo.agregar_nota(False) posicion=self.archivo.tiempos.index(self.t_act.dato)-1 self.archivo.tiempos.insert(posicion,tiempo) nodo=self.archivo.tiempos.obtener_nodo(posicion) self.pila.apilar(nodo)
def __init__(self, weather_json): super(InfoTiempo, self).__init__() prevision_json = weather_json['query']['results']['channel']['item'] self.condiciones_actuales = Tiempo(prevision_json['condition']) condiciones_futuras = [] for prevision in prevision_json['forecast']: estado_tiempo = Tiempo(prevision) condiciones_futuras.append(estado_tiempo) self.condiones_futuras = condiciones_futuras
def __init__(self): #identinficacion self.id = uuid.uuid1().hex self._x = 0 self._y = 0 self.ancho = 0 self.largo = 0 self.x_inicial = 0 self.y_inicial = 0 self.x_antes = 0 self.y_antes = 0 self.sistema_cerradox = [0, 0] self.sistema_cerradoy = [0, 0] self.enviarGanancia_x = 0 self.enviarGanancia_y = 0 self.recibirGanancia_x = 0 self.recibirGanancia_y = 0 # estado del personaje self.saltar = False self.correr= False self.caminar = False #sentido self.sentido = False self.protagonista = False self.iA = False self.agente = None #el personaje esta compuesto por cuatro rectangulos self.rectangulo = Rect(0,0,0,0)#cuerpo completo self.rec1 = Rect(0, 0, 0, 0)#bajo self.rec2 = Rect(0, 0, 0, 0)#izquierda self.rec3 = Rect(0, 0, 0, 0)#derecha self.rec4 = Rect(0, 0, 0, 0)#arriba self.ady_left = False self.ady_right = False self.ady_down = False self.ady_up = False self.tic = Tiempo() self.status={} self.status["angulo"] = 0 self.status["velocidad"]=0 self.status["velocidad x"] = 0 self.status["velocidad y"] = 0 self.status["gravedad"] = 9.8 self.status["parabola"] = (90, 88)#velocidad inicial, angulo inicial self.status["caida"]=(270, 90) self.status["correr"] = (23, 1)#velocidad, aceleracion self.status["caminar"] = 30 #velocidad
def __init__(self,campoAccion, dimen = 3): self.monito = None self.campoAccion=campoAccion self.horizontal = 0 self.vertical = 0 self.moverse = False #actividad de la ventana self.tiempo = Tiempo() #------------estilo self.estilo = MOVAUTONOMO #------------autonomo self.tipoMOVAUT = MOVAUTONOMO_CONSTANTE self.velocidad = 10 self.aceleracion = 2 self.direccion = MOVAUTONOMO_DERECHA #------------personaje self.tipoMOVPER = MOVPERSONAJE_CENTRADO self.enfocar_personaje = False self.fueraRango = False self.angulo = 0 self.altura = 0 self.eje_x = 0 self.eje_y = 0 if dimen == 1: self.arriba = 50 self.abajo = 565 self.derecha = 790 self.izquierda = 10 if dimen == 2: self.arriba = 10 self.abajo = 590 self.derecha = 750 self.izquierda = 50 if dimen == 3: self.arriba = 150 self.abajo = 450 self.derecha = 580 self.izquierda = 220
def tiempos(self): # TODO refactorizar codigo repetido tiempo_mas_reciente = Tiempo(Simulacion.INFINITO, None) evento_mas_reciente = None for key, value in self.lista_de_eventos.items(): if type(value) is list: for i in range(len(value)): if value[i].tiempos: if value[i].tiempos[ 0].tiempo < tiempo_mas_reciente.tiempo: evento_mas_reciente = value[i] tiempo_mas_reciente = value[i].tiempos[0] else: if value.tiempos: if value.tiempos[0].tiempo < tiempo_mas_reciente.tiempo: evento_mas_reciente = value tiempo_mas_reciente = value.tiempos[0] # Acumular variables de respuesta pasado un mes intervalo = (len(self.reportes_por_mes) + 1) * Simulacion.MES if self.reloj_simulacion and self.reloj_simulacion / intervalo >= 1: self.reportes_por_mes.append(self.reportes()) # Contadores Estadisticos self.tiempo_ocioso = 0 self.total_material_transportado = 0 self.total_descomposturas = 0 self.acrt = 0 self.reloj_simulacion = tiempo_mas_reciente.tiempo evento_mas_reciente.popleft() return evento_mas_reciente.nombre_funcion, tiempo_mas_reciente.camion
def agregar(self, tiempo, camion): self.tiempos.append(Tiempo(tiempo, camion))
class Camara (object): def __init__(self,campoAccion, dimen = 3): self.monito = None self.campoAccion=campoAccion self.horizontal = 0 self.vertical = 0 self.moverse = False #actividad de la ventana self.tiempo = Tiempo() #------------estilo self.estilo = MOVAUTONOMO #------------autonomo self.tipoMOVAUT = MOVAUTONOMO_CONSTANTE self.velocidad = 10 self.aceleracion = 2 self.direccion = MOVAUTONOMO_DERECHA #------------personaje self.tipoMOVPER = MOVPERSONAJE_CENTRADO self.enfocar_personaje = False self.fueraRango = False self.angulo = 0 self.altura = 0 self.eje_x = 0 self.eje_y = 0 if dimen == 1: self.arriba = 50 self.abajo = 565 self.derecha = 790 self.izquierda = 10 if dimen == 2: self.arriba = 10 self.abajo = 590 self.derecha = 750 self.izquierda = 50 if dimen == 3: self.arriba = 150 self.abajo = 450 self.derecha = 580 self.izquierda = 220 def setMov(self, mov): self.moverse = mov def getMov(self): return self.moverse def setEstilo(self, estilo): self.estilo = estilo def setMovAutonomo(self, direccion, tipoMOV, velocidad = 20, aceleracion = 2): self.direccion = direccion self.aceleracion = aceleracion self.velocidad = velocidad self.tipoMOVAUT = tipoMOV def setMovPersonaje(self, tipoMov): self.tipoMOVPER = tipoMov def setPersonaje(self, personaje): self.enfocar_personaje = True self.monito = personaje self.tipoMOVPER = MOVPERSONAJE_CENTRADO def centrado(self, personajes, entornos): self.campoAccion.left = personajes.x*-1 if self.moverse == False: self.tiempo.modPasivo() self.horizontal = personajes.x self.vertical = personajes.y else: if self.estilo == MOVAUTONOMO: t = self.tiempo.cronometroC() if self.tipoMOVAUT == MOVAUTONOMO_ACELERADO: if self.direccion == MOVAUTONOMO_DERECHA: ejex =mov_recAcelerado(t, self.aceleracion, self.velocidad, self.horizontal) personajes.x = ejex entornos.x= ejex elif self.direccion == MOVAUTONOMO_IZQ: ejex =mov_recAcelerado(t, self.aceleracion*-1, self.velocidad*-1, self.horizontal) personajes.x = ejex entornos.x= ejex elif self.direccion == MOVAUTONOMO_ABAJO: pass#construccion elif self.direccion == MOVAUTONOMO_ARRIBA: pass elif self.tipoMOVAUT == MOVAUTONOMO_CONSTANTE: if self.direccion == MOVAUTONOMO_DERECHA: ejex = mov_recUniforme(t, self.velocidad, self.horizontal) personajes.x = ejex entornos.x= ejex elif self.direccion == MOVAUTONOMO_IZQ: ejex = mov_recUniforme(t, self.velocidad*-1, self.horizontal) personajes.x = ejex entornos.x= ejex elif self.estilo == MOVPERSONAJE: if self.tipoMOVPER == MOVPERSONAJE_CENTRADO: coorx, coory = self.monito.coordenadas() tamx, tamy = self.monito.imagen.tam.size if self.enfocar_personaje == True: self.enfocar_personaje = False self.fueraRango = True #self.altura = coory + personajes.y self.eje_x = coorx self.eje_y = coory self.tiempo.modPasivo() self.horizontal = personajes.x self.vertical = personajes.y origen = (coorx+self.horizontal, coory+self.vertical) destino = (400-tamx,300-tamy) self.angulo = instanAng2(origen,destino) print self.altura print "ORIGEN : "+str(origen) print "DESTINO: "+str(destino) print "ANGULO : "+str(self.angulo) if self.fueraRango == True: t = self.tiempo.cronometroC() ejex ,ejey = mov_parabolico(None, 30,0,self.angulo*-1,t, 0)#V_inicial,altura, angulo, tiempo, gravedad) #print ejex, ejey limitx = ejex+self.eje_x+tamx+self.horizontal limity = ejey+self.eje_y+tamy+self.vertical if 395<limitx<405 and 295 <limity<305: self.fueraRango = False self.tipoMOVPER = MOVPERSONAJE_BORDES personajes.x= ejex+self.horizontal #personajes.y= ejey+self.vertical entornos.x =self.horizontal + ejex #entornos.y = self.vertical +ejey #print personajes.x, personajes.y elif self.tipoMOVPER == MOVPERSONAJE_BORDES: coorx, coory = self.monito.coordenadas() tamx, tamy = self.monito.imagen.tam.size if self.enfocar_personaje == False: self.enfocar_personaje = True self.eje_x = coorx self.eje_y = coory else: if self.eje_x != coorx: personajes.x-= coorx -self.eje_x entornos.x-=coorx -self.eje_x self.eje_x = coorx
class Personaje(object): def __init__(self): #identinficacion self.id = uuid.uuid1().hex self._x = 0 self._y = 0 self.ancho = 0 self.largo = 0 self.x_inicial = 0 self.y_inicial = 0 self.x_antes = 0 self.y_antes = 0 self.sistema_cerradox = [0, 0] self.sistema_cerradoy = [0, 0] self.enviarGanancia_x = 0 self.enviarGanancia_y = 0 self.recibirGanancia_x = 0 self.recibirGanancia_y = 0 # estado del personaje self.saltar = False self.correr= False self.caminar = False #sentido self.sentido = False self.protagonista = False self.iA = False self.agente = None #el personaje esta compuesto por cuatro rectangulos self.rectangulo = Rect(0,0,0,0)#cuerpo completo self.rec1 = Rect(0, 0, 0, 0)#bajo self.rec2 = Rect(0, 0, 0, 0)#izquierda self.rec3 = Rect(0, 0, 0, 0)#derecha self.rec4 = Rect(0, 0, 0, 0)#arriba self.ady_left = False self.ady_right = False self.ady_down = False self.ady_up = False self.tic = Tiempo() self.status={} self.status["angulo"] = 0 self.status["velocidad"]=0 self.status["velocidad x"] = 0 self.status["velocidad y"] = 0 self.status["gravedad"] = 9.8 self.status["parabola"] = (90, 88)#velocidad inicial, angulo inicial self.status["caida"]=(270, 90) self.status["correr"] = (23, 1)#velocidad, aceleracion self.status["caminar"] = 30 #velocidad def runGanancia1(self): self.enviarGanancia_x = self._x - self.x_antes self.enviarGanancia_y = self._y - self.y_antes self._x += self.recibirGanancia_x self._y += self.recibirGanancia_y def runGanancia2(self): self._x += self.sistema_cerradox[1] - self.sistema_cerradox[0] self._y += self.sistema_cerradoy[1] - self.sistema_cerradoy[0] self._x += self.recibirGanancia_x self._y += self.recibirGanancia_y self.enviarGanancia_x = self._x - self.x_antes self.enviarGanancia_y = self._y - self.y_antes def getDiferenciaXY(self): x = self._x - self.x_antes y = self._y - self.y_antes return x,y def setGananciaXY(self, g): self.recibirGanancia_x=g[0] self.recibirGanancia_y=g[1] def getGananciaXY(self): return self.enviarGanancia_x, self.enviarGanancia_y def getStatus(self, valor): return self.status[valor] def tam_rectangulos(self, rec_size): self.ancho, self.largo=rec_size self.rectangulo.width, self.rectangulo.height = (rec_size[0], rec_size[1]) self.rec1.width, self.rec1.height = (rec_size[0] / 2.0, rec_size[1] / 4.0) self.rec2.width, self.rec2.height = (rec_size[0] / 4.0, rec_size[1] / 2.0) self.rec3.width, self.rec3.height = (rec_size[0] / 4.0, rec_size[1] / 2.0) self.rec4.width, self.rec4.height = (rec_size[0] / 2.0, rec_size[1] / 4.0) def pos_rectangulos(self, coor, tam): x, y = coor ancho, largo = tam self.rectangulo.left, self.rectangulo.top = (x, y) (self.rec1.left, self.rec1.top) = (x + (ancho / 4.0),y + largo - self.rec1.height) # + 3*(largo/4.0))#abajo (self.rec2.left, self.rec2.top) = (x, y + (largo / 4.0)) (self.rec3.left, self.rec3.top) = (x + ancho - self.rec3.width,y + (largo / 4.0)) (self.rec4.left, self.rec4.top) = (x + (ancho / 4.0), y) def actualizacionRec(self): self.pos_rectangulos((self._x, self._y),(self.ancho, self.largo)) def setXY(self, x, y): self._x = self.x_antes = x self._y = self.y_antes = y self.actualizacionRec() def getXY(self): return (self._x, self._y) def saltando(self,): self.x_antes = self._x self.y_antes = self._y if self.saltar == False and self.correr == False and self.caminar == False: self.tic.modPasivo() self.x_inicial = self._x self.y_inicial = self._y self.sistema_cerradox[0] = self.sistema_cerradox[1]= 0 self.sistema_cerradoy[0] = self.sistema_cerradoy[1]= 0 if self.saltar == True and self.correr == False and self.caminar == False: self.tiempo = self.tic.cronometroC() self.sistema_cerradox[0] = self.sistema_cerradox[1] self.sistema_cerradoy[0] = self.sistema_cerradoy[1] velocidad_inicial = self.status["parabola"][0] angulo_disparo = self.status["parabola"][1] gravedad = self.status["gravedad"] tupla = mov_parabolico1(velocidad_inicial ,angulo_disparo, self.tiempo, gravedad) (x, y) = tupla self.sistema_cerradox[1] = x self.sistema_cerradoy[1] = y self.status["velocidad x"],self.status["velocidad y"]=velocidad_InstanteXY(velocidad_inicial,angulo_disparo,self.tiempo,gravedad) self.status["velocidad"]=velocidad_Instante(self.status["velocidad x"],self.status["velocidad y"]) self.status["angulo"]=angulo_actual(self.status["velocidad x"],self.status["velocidad y"]) self.record = self.tiempo def corriendo(self,): self.x_antes = self._x self.y_antes = self._y if self.saltar == False and self.correr == False and self.caminar == False: self.tic.modPasivo() self.x_inicial = self._x self.y_inicial = self._y self.sistema_cerradox[0] = self.sistema_cerradox[1] = 0 self.sistema_cerradoy[0] = self.sistema_cerradoy[1] = 0 if self.correr == True and self.saltar == False and self.caminar == False: t = self.tic.cronometroC() self.sistema_cerradox[0] = self.sistema_cerradox[1] self.sistema_cerradoy[0] = self.sistema_cerradoy[1] velocidad = self.status["correr"][0] aceleracion =self.status["correr"][1] if self.sentido == True: self.status["angulo"] = 0 else: self.status["angulo"] = 180 velocidad *= -1 aceleracion *= -1 vel_t = vel_movRecAcelerado(aceleracion,t, velocidad) self.status["velocidad"] = vel_t self.status["velocidad x"] = vel_t self.status["velocidad y"] = 0 x = mov_recAcelerado(t, aceleracion, velocidad) self.sistema_cerradox[1] = x def caminando(self,): self.x_antes = self._x self.y_antes = self._y if self.saltar == False and self.correr == False and self.caminar == False: self.tic.modPasivo() self.x_inicial = self._x self.y_inicial = self._y self.sistema_cerradox[0] = self.sistema_cerradox[1] = 0 self.sistema_cerradoy[0] = self.sistema_cerradoy[1] = 0 if self.caminar == True and self.saltar == False and self.correr == False: # aceleracion | disancia inicial | velocidad inicial t = self.tic.cronometroC() self.sistema_cerradox[0] = self.sistema_cerradox[1] self.sistema_cerradoy[0] = self.sistema_cerradoy[1] velocidad = self.status["caminar"] self.status["velocidad"] = velocidad if self.sentido == True: self.angulo = 0 else: self.angulo = 180 velocidad *= -1 self.status["angulo"] = self.angulo x = mov_recUniforme(t, velocidad) self.sistema_cerradox[1]=x def getEjeX(self): return self._x def getEjeY(self): return self._y def getCoordenadas(self): return (self._x, self._y) def setSalto(self, salto): self.saltar = salto self.status["angulo"] = self.status["parabola"][1] def getSalto(self): return self.saltar def getCorrer(self): return self.correr def setCorrer(self, correr, dic = True): self.correr = correr self.sentido = dic def getCaminar(self): return self.caminar def setCaminar(self, caminar, dic = True): self.caminar = caminar self.sentido = dic def getSentido(self): return self.sentido def getStatus(self, status): return self.status[status] def reseteo(self): self.tiempo=0 self.x_inicial=self._x self.y_inicial=self._y self.sistema_cerradox[0] = self.sistema_cerradox[1] = 0 self.sistema_cerradoy[0] = self.sistema_cerradoy[1] = 0 self.actualizacionRec() self.tic.modPasivo()
def anadir_marca_next(self,duracion): tiempo=Tiempo(duracion) for iteracion in range(len(self.archivo.objeto_sonidos)): tiempo.agregar_nota(False) posicion=self.archivo.tiempos.index(self.t_act.dato)+1 self.archivo.tiempos.insert(posicion,tiempo)
def anadir_marca(self,duracion): tiempo=Tiempo(duracion) for iteracion in range(len(self.archivo.objeto_sonidos)): tiempo.agregar_nota(False) self.archivo.tiempos.append(tiempo)
def anadir_marca_prev(self, duracion): tiempo = Tiempo(duracion) for iteracion in range(len(self.archivo.objeto_sonidos)): tiempo.agregar_nota(False) return