mix = row[1] t = mix.partition('(') if t[1] == '': type = mix length = '' else: type = t[0] length = t[2][:len(t[2]) - 1] row = (row[0], type, '', length, row[3]) data.append(row) # print row # print data writeExcel('f:/' + tablename + '.xlsx', data) def excel2db(path): list = readExcel(path) # 第一列为字段名 sqlExecute = DB('192.168.1.15', 'ymt', 'yimiaotong2015', 'dlb') db2excel(sqlExecute, 'users') sqlExecute.close() # print 'int(11)'.partition('(') # print 'int11)'.partition('(') # print len('12312')
def main(): try : # # CONFIGURACIÓN # # Gestor de base de datos db = DB() # Carga los valores de configuración config = Config(db) # Listas de probabilidades de aparación probabilidad_enemigos = db.get_probabilidad('enemigos') probabilidad_gemas = db.get_probabilidad('gemas') # Instancia un reloj para controlar el tiempo reloj = pygame.time.Clock() # # VENTANA # # Crea la ventana ventana = pygame.display.set_mode((config.ventana_ancho, config.ventana_alto)) # Título de la ventana pygame.display.set_caption('Gemas') # Carga el fondo (convirtiéndolo al formato usado en SDL para mejorar la eficiencia) fondo = pygame.image.load(os.path.join(config.dir_img, 'fondo.jpg')).convert() # Inicia partidas hasta que el usuario decide terminar la ejecución del programa salir = False while not salir: # # SPRITES # # Diccionario de sprites activos en cada momento sprites_activos = {} # Instancia al jugador y lo añade a la lista de sprites activos jugador = Jugador(config) sprites_activos['jugador'] = jugador # Instancia dos enemigos y los añade a la lista de sprites activos sprites_activos['enemigo'] = [Enemigo(config, 0), Enemigo(config, 1)] # Indica el momento en el que se generó el último enemigo ultimo_enemigo_respawn = pygame.time.get_ticks() # Instancia las gemas y las añade a la lista de sprites activos # # Hay varios tipos de gemas, cada una con una probabilidad distinta de ser # generada. La generación de las gemas es aleatoria pero teniendo en cuenta # dicha probabilidad sprites_activos['gema'] = [] for i in range(1, config.gema_max_activas + 1): tipo_gema = get_tipo(probabilidad_gemas) gema = Gema(config, tipo_gema, sprites_activos) sprites_activos['gema'].append(gema) # Indica el momento en que ha de generarse una nueva gema (0 = no se genera ninguna) proximo_respawn_gema = 0 # Marcador marcador = Marcador(config) sprites_activos['marcador'] = marcador # Puntuación máxima record = Record(config, db) sprites_activos['record'] = record # Fin de partida gameover = GameOver(config) # # BUCLE DE EVENTOS # # El programa permanece funcionando hasta que se cierra la ventana # Cada iteración del bucle es un frame fin_partida = False while not fin_partida: # Averigua el tiempo (en milisegundos) transcurrido por cada frame # Además, al usar FRAMERATE en la llamada, se fija el número de frames por segundo # independientemente del hardware de la máquina tiempo = reloj.tick(config.framerate) # Obtiene y recorre la lista de eventos que están teniendo lugar for evento in pygame.event.get(): # Si encuentra el evento QUIT termina la ejecución if evento.type == QUIT: fin_partida = True salir = True # La tecla ESC termina la ejecución elif evento.type == KEYDOWN: if evento.key == K_ESCAPE: salir = True fin_partida = True # # CALCULO DEL MOVIMIENTO Y PUNTUACIÓN # jugador.mover(tiempo, sprites_activos) marcador.render_puntos(jugador.puntos) for enemigo in sprites_activos['enemigo']: enemigo.mover(tiempo, sprites_activos) # # ACTUALIZACIÓN DE POSICIONES EN PANTALLA # # Situa el fondo en el primer pixel de la ventana ventana.blit(fondo, (0, 0)) # Actualiza la posición de los sprites for nombre in sprites_activos.keys(): # Si se trata de una lista de sprites la recorre y # procesa cada elemento if isinstance(sprites_activos[nombre], list): for elemento in sprites_activos[nombre]: # Si el sprite es una gema sin vida la elimina de los sprites activos if nombre == 'gema' and elemento.vida <= 0: sprites_activos[nombre].remove(elemento) else: ventana.blit(elemento.imagen, elemento.rect) else: ventana.blit(sprites_activos[nombre].imagen, sprites_activos[nombre].rect) # # ACTUALIZACIÓN DE LA PANTALLA # # Dibuja la escena pygame.display.flip() # # EVALUACIÓN DEL ESTADO DE LOS SPRITES # # Comprueba si el jugador sigue vivo if not jugador.vivo: # Guarda la puntución db.guarda_puntuacion(jugador.puntos) # Pequeña pausa para que el mensaje de game over no salte brúscamente pygame.time.delay(1000) # Avisa al jugador ventana.blit(gameover.imagen, gameover.rect) pygame.draw.rect(ventana, (255, 255, 255), gameover.rect.inflate(7, 5), 2) # Actualiza la pantalla pygame.display.flip() # y finaliza la partida fin_partida = True else: # Si el jugador sigue vivo: # - Genera nuevas gemas si es necesario # - Genera nuevos enemigos según aumenta el tiempo de juego # # Generación de gemas # # Las gemas se generan siempre que haya menos del máximo permitido y # siempre después de pasado cierto tiempo (config.gema_respawn) desde la # desaparición de una gema o desde la generación de una nueva, lo que ocurra # antes. Es decir, mientras haya menos gemas de las permitidas se genera una # nueva cada 'config.gema_respawn' milisegundos # Si hay menos gemas activas del máximo permitido es necesario generar una nueva if len(sprites_activos['gema']) < config.gema_max_activas: # Calcula el momento para la creación de la gema, pero sólo si dicho momento no # ha sido todavía calculado para evitar que a cada iteración del bucle (cada frame) # se recalcule y la gema no llegue a generarse nunca if proximo_respawn_gema == 0: # La gema se generará después del momento actual más el tiempo de espera # para la generación de gemas proximo_respawn_gema = pygame.time.get_ticks() + config.gema_respawn # Comprueba si ha pasado suficiente tiempo como para generar la gema if proximo_respawn_gema <= pygame.time.get_ticks(): # Ya se puede crear la gema y añadirla a la lista de sprites activos tipo_gema = get_tipo(probabilidad_gemas) gema = Gema(config, tipo_gema, sprites_activos) sprites_activos['gema'].append(gema) # Resetea el momento para la creación de la siguiente gema proximo_respawn_gema = 0 # # Generación de enemigos # # Cada cierto tiempo se genera un enemigo nuevo. El tipo es aleatorio pero # sujeto a la probabilidad de generación de cada enemigo if (pygame.time.get_ticks() - ultimo_enemigo_respawn) / config.enemigo_respawn > 0: tipo_enemigo = get_tipo(probabilidad_enemigos) sprites_activos['enemigo'].append(Enemigo(config, tipo_enemigo)) # Anota el momento en el que se ha generado el último enemigo ultimo_enemigo_respawn = pygame.time.get_ticks() # # FIN DE LA PARTIDA # if fin_partida: # # CONTROL PARA JUGAR UNA NUEVA PARTIDA O TERMINAR EL PROGRAMA # while not salir and fin_partida: # Obtiene y recorre la lista de eventos que están teniendo lugar for evento in pygame.event.get(): # Si encuentra el evento QUIT termina la ejecución if evento.type == QUIT: salir = True # Pulsaciones de teclas elif evento.type == KEYDOWN: # La tecla ESC termina la ejecución if evento.key == K_ESCAPE: salir = True # La tecla RETURN inicia una nueva partida elif evento.key == K_RETURN: fin_partida = False # # FIN DE LA EJECUCIÓN DEL PROGRAMA # # Cierra la conexión con la base de datos db.close() # Termina la ejecución sys.exit(0) except pygame.error, e: print '\n' print u'Error en Pygame: ' print '\n\t' , e, '\n'