def get_file(self, path_mapa):
        """
        Recibe un string con el path de la partida.

        Revisa los archivos dentro de mapas/, y maneja posibles sub-directorios
        dentro de dicha carpeta.

        Es posible que un archivo no posea extensión en algunos sistemas
        operativos, por lo que este método no chequea si el input tenga una.
        """
        path_mapa = path_mapa.strip()
        if "\\" in path_mapa:
            msg = "Path debe usar slash '/', no backslash '\\'"
            self.feedback_signal.emit(msg)
        elif path_mapa == "":
            msg = ""
            self.feedback_signal.emit(msg)
        else:
            path_mapa = ["mapas"] + path_mapa.split("/")
            try:
                with open(os.path.join(*path_mapa)) as archivo_mapa:
                    lista_mapa = []
                    for linea in archivo_mapa.read().splitlines():
                        lista_mapa.append(linea.split(" "))
                    mapa = Mapa(lista_mapa)
                    # procesar...
                    # Agregar error de formato en mapa
                    self.goto_signal.emit(mapa)

            except FileNotFoundError as err:
                msg = f"ERROR: {err.filename} no existe."
                self.feedback_signal.emit(msg)
Esempio n. 2
0
 def test_init2(self):
     alto = 15
     largo = 15
     mapa = Mapa(alto, largo)
     # Me fijo si tiene el alto y largo que le pedí
     self.assertEqual(len(mapa.celdas), alto)
     for i in range(0, alto - 1):
         self.assertEqual(len(mapa.celdas[i]), largo)
     # Primera y última fila
     for i in (0, (alto - 1)):
         for j in range(0, largo):
             self.assertEqual(
                 "Pared_no_rompible"
                 in str(type(mapa.celdas[i][j].contenido)), True)
     # for i in range(2, alto):
     #     for j in range(2, largo):
     #         if(i % 2 == 0):
     #             #Dummy
     #             self.assertEqual("Contenido_dummy" in str(type(mapa.celdas[i][j].contenido)), True)
     #         else:
     #             # Paredes
     #             if(j % 2 == 0):
     #                 self.assertEqual("Contenido_dummy" in str(type(mapa.celdas[i][j].contenido)), True)
     #             else:
     #                 self.assertEqual("Pared_no_rompible" in str(type(mapa.celdas[i][j].contenido)), True)
     # Primera y última columna
     for j in (0, (largo - 1)):
         for i in range(0, alto):
             self.assertEqual(
                 "Pared_no_rompible"
                 in str(type(mapa.celdas[i][j].contenido)), True)
Esempio n. 3
0
    def __init__(self, x, y, angulo, raio):
        self.coord_x = x
        self.coord_y = y
        self.angulo = angulo
        self.direcao = Direcoes.LESTE
        self.raio = raio
        self.vel_motor_direita = 0
        self.vel_motor_esquerda = 0
        self.dist_esquerda_anterior = 0
        self.dist_direita_anterior = 0

        self.mapa = Mapa()
        self.mapa.inicializa()

        self.lista_de_comandos = []
        self.algoritmo_de_movimentacao = algoritmo_de_movimentacao
        self.algoritmo_de_movimentacao.setup(self)

        self.estado = self.Estados.PARA
        self.contagem = 0

        self.sensores_distancia = []
        self.sensores_distancia.append(SensorDistancia(raio, 0,
                                                       0))  # sensor frontal
        self.sensores_distancia.append(SensorDistancia(0, raio, math.pi /
                                                       2))  # sensor esquerdo
        self.sensores_distancia.append(SensorDistancia(0, -raio, -math.pi /
                                                       2))  # sensor direito

        self.retas = []
        self.retas.append([-raio, -raio, raio, -raio, None])  # Roda direita
        self.retas.append([-raio, raio, raio, raio, None])  # Roda esquerda
        self.referencia_figura = None

        self.ideal = True
Esempio n. 4
0
def mapa_aleatorio(ciudades):
  m = Mapa()
  for x in ciudades:
    m.agregar_ciudad(x)
  for x in ciudades:
    for y in ciudades:
      if x<y:
        m.agregar_camino(x, y, random.randint(1, 100))
  return m
Esempio n. 5
0
def distanciaAlSol(planeta):
    mapa = Mapa()
    
    vectorPlaneta = mapa.obtenerVector(planeta)
    if not v1:
        print("El planeta no existe")
        return False
    
    # Calcular distancia
    
    distancia = 0 # ???
    
    return distancia
Esempio n. 6
0
    def crear_mapa(self, filas):
        """Crea el Mapa a partir de la definicion provista por parametro (`filas`),
        y devuelve una tupla con el mapa y el actor que representa al heroe del juego.
        `filas` es una lista de strings, que corresponde con el contenido completo
        del archivo .map.Se presupone que en el mapa se proporciona una salida para
        poder finalizar el juego, y si se proporciona algun caracter que no corresponde
        a ningun personaje, se lo reemplaza por una celda vacía automáticamente.
        Si hay mas de un heroe en la definicion del mapa, o bien si
        no hay ningun heroe, la funcion lanza una excepcion, si el mapa no tiene
        el formato correcto(debe ser rectangular), también
        """
        dic_funciones = {
            "#": Juego.agregar_pared,
            "o": Juego.agregar_orco,
            "g": Juego.agregar_goblin,
            "<": Juego.agregar_salida
        }
        ALTO = len(filas)
        ANCHO = len(filas[0])
        if ANCHO == 0: raise IndexError("Linea vacia")
        mapa = Mapa(ANCHO, ALTO)
        x = 0
        y = -1
        heroe = None
        cantidad_heroes = 0
        for fila in filas:
            if len(fila) != ANCHO:
                raise errores.MapaIncorrectoError(
                    "la linea", fila,
                    "no contiene la misma cantidad de caracteres que la primer linea del archivo"
                )
            x = 0
            y += 1
            for caracter in fila:
                if caracter == "@":
                    # Lo necesitamos ya que, debemos definir heroe para poder devolverlo
                    heroe = actores.Heroe()
                    mapa.agregar_actor(heroe, x, y)
                    cantidad_heroes += 1
                    if cantidad_heroes > 1:
                        raise errores.DemasiadosHeroesError(
                            "Se esta añadiendo", cantidad_heroes - 1,
                            "heroes de mas")
                elif caracter in dic_funciones:
                    dic_funciones[caracter](self, mapa, x, y)

                x += 1

        if heroe == None:
            raise errores.NoHayHeroeError("No hay ningun heroe(@) en el mapa")
        return mapa, heroe
Esempio n. 7
0
def generar_laberinto(filas, columnas):
    """Generar un laberinto.

    Argumentos:
        filas, columnas (int): Tamaño del mapa

    Devuelve:
        Mapa: un mapa nuevo con celdas bloqueadas formando un laberinto
              aleatorio
    """

    camino = Pila()
    celdas_visitadas = []
    mapa = Mapa(filas, columnas)
    mapa.bloquear_todo()
    camino.apilar(mapa.origen())
    celdas_visitadas.append(mapa.origen())
    mapa.desbloquear(mapa.origen())

    def backtrack(camino, celdas_visitadas, mapa):
        celdas_a_elegir = []
        celda = camino.ver_tope()

        for celda_vecina in mapa.obtener_vecinos_pares(celda):
            if not celda_vecina in celdas_visitadas:
                if celda_vecina.fila != 0 and celda_vecina.columna != 0:
                    if celda_vecina.fila != mapa.filas - 1 and celda_vecina.columna != mapa.columnas - 1:
                        celdas_a_elegir.append(celda_vecina)

        if not celdas_a_elegir == [] and mapa.destino() != celda:
            indice_aleatorio = random.randint(0, len(celdas_a_elegir) - 1)
            celda_aleatoria = celdas_a_elegir[indice_aleatorio]
            camino.apilar(celda_aleatoria)
            celdas_visitadas.append(celda_aleatoria)
            mapa.desbloquear(celda_aleatoria)
            celda_intermedia = celda.obtener_celda_intermedia(celda_aleatoria)
            mapa.desbloquear(celda_intermedia)
        else:
            camino.desapilar()

        return camino, celdas_visitadas

    while not camino.esta_vacia():
        camino, celdas_visitadas = backtrack(camino, celdas_visitadas, mapa)
        # try:
        #     camino, celdas_visitadas = backtrack(camino, celdas_visitadas, mapa)
        # except:
        #     raise Exception(f"excepcion al generar laberinto:{camino} {celdas_visitadas}")

    mapa.desbloquear(mapa.destino())
    return mapa
Esempio n. 8
0
    def inicializarMapa(self):
        self.mapa = Mapa(self.estado['linhas'], self.estado['colunas'])

        # Temos que adicionar todas as unidades ao mapa, para que ele
        # as possa desenhar
        self.mapa.inserirUnidade(self.robo)
        self.mapa.inserirUnidade(self.meta)
        for p in self.estado['pedras']:
            self.mapa.inserirUnidade(p)
        for p in self.estado['pontos']:
            self.mapa.inserirUnidade(p)

        # Por final é preciso adicionar o mapa ao cenário do Jogo, para
        # que o jogo decidir desenhar o mapa.
        self.add(self.mapa)
Esempio n. 9
0
def main():
    os.system('cls')
    mapa = Mapa(4, 1, 1, 2)
    print(
        "------------------------------      START     ------------------------------"
    )
    print("                              ---SIMBOLISMO---")
    print("                                   A: AIRE")
    print("                                  S: PRESTE")
    print('                                   H: HOYO')
    print("                                  W: WUMPUS")
    print("                                   G: ORO")
    print("                           AG: RECORRIDO DEL AGENTE")
    print("                              SEG: LUGAR SEGURO\n")
    mapa.showMap()
    bestFirst(mapa)
Esempio n. 10
0
def main(ekran):
    curses.curs_set(0)

    ekran.clear()
    ekran_y = 40
    ekran_x = 100

    okno_mapy = curses.newwin(ekran_y, ekran_x-15,0,0)
    okno_eq = curses.newwin(ekran_y, ekran_x-60,0,ekran_x-16)
    
    
    
    curses.beep()
    okno_eq.border(0,0,0,0,curses.ACS_TTEE,0,curses.ACS_BTEE,0)


    if (curses.LINES -1 < ekran_y) | (curses.COLS -1 < ekran_x):
        return ("Okno terminala jest za male!")


    postac = Postac(*okno_mapy.getmaxyx(), okno_mapy)
    mapa = Mapa(okno_mapy, postac)
    
    mapa.stworz_pokoj()

    while True:
        
        mapa.rysuj()
        ekran.refresh()
        okno_mapy.refresh()
        okno_eq.refresh()
        
        strzalka = ekran.getch()
        
        postac.ruch(strzalka)
        
        



    ekran.getch()
Esempio n. 11
0
    def __init__(self, superficie, nivel, slot):
        from jogador import Jogador
        from mapa import Mapa
        from poderes import Cinza
        from entidades import classes_instanciaveis, renderizar_hitbox, poderes_no_jogador
        self.__classes_instanciaveis = classes_instanciaveis
        global dicionaro_mapa
        super().__init__(superficie)
        (width, height) = superficie.get_size()
        self.__campo_visivel = pygame.Rect(0, 0, width, height)
        self.__comeco = 0
        self.__tempo_maximo = 350
        self.__fonte = pygame.font.SysFont('miriam', 48)
        self.__atrasofim = 0
        self.__nivel = nivel
        self.__slot = slot
        self.__sobreposicao = None

        ##### ENTRADAS DO JOGADOR #####
        self.__cima, self.__baixo, self.__direita, self.__esquerda = 0, 0, 0, 0
        self.__espaco = False
        self.__bola_fogo = False
        self.__troca_poder = False

        ##### MAPA #####
        self.__mapa = Mapa(superficie)
        poder_atual = Cinza()
        poder_armazenado = Cinza()
        slots = DAOJogo.saves
        slot_atual = slots[self.__slot]
        for item in poderes_no_jogador:
            if item.__name__ == slot_atual[2]:
                poder_atual = item()
            if item.__name__ == slot_atual[3]:
                poder_armazenado = item()
        self.__jogador = self.__mapa.iniciar(nivel, dicionaro_mapa,
                                             poder_atual, poder_armazenado,
                                             slot_atual[4])
        self.__comeco = pygame.time.get_ticks() / 1000
        if not pygame.mixer.music.get_busy(): pygame.mixer.music.play(-1)
Esempio n. 12
0
    def __init__(self, superficie, nivel):
        self.__superficie = superficie
        self.__background_colour = (150, 220, 255)  # Cor do fundo
        (width, height) = superficie.get_size()
        self.__campo_visivel = pygame.Rect(0, 0, width, height)
        self.__comeco = 0
        self.__tempo_maximo = 350
        self.__fonte = pygame.font.SysFont('Arial', 20)
        self.__atrasofim = 0

        ##### ENTRADAS DO JOGADOR #####
        self.__cima, self.__baixo, self.__direita, self.__esquerda = 0, 0, 0, 0
        self.__atrito = 0.5
        self.__espaco = False
        self.__bola_fogo = False

        ###### INSTANCIAS DE OBJETOS ######
        self.__jogador = Jogador('mario', 200, 550, 0, 1)

        ##### MAPA #####
        self.__mapa = Mapa((width, height))
        self.__mapa.iniciar([nivel[0].copy(), nivel[1].copy()])
        self.__comeco = pygame.time.get_ticks() / 1000
Esempio n. 13
0
# Dada una lista de ciudades, arma un mapa con distancias aleatorias 
# entre cada par de ciudades.
def mapa_aleatorio(ciudades):
  m = Mapa()
  for x in ciudades:
    m.agregar_ciudad(x)
  for x in ciudades:
    for y in ciudades:
      if x<y:
        m.agregar_camino(x, y, random.randint(1, 100))
  return m

#######################################################################

if __name__=="__main__":
  mapa1 = Mapa()
  mapa1.agregar_ciudad('a')
  mapa1.agregar_ciudad('b')
  mapa1.agregar_ciudad('c')
  mapa1.agregar_ciudad('d')
  mapa1.agregar_ciudad('e')
  mapa1.agregar_camino('a', 'b', 2)
  mapa1.agregar_camino('a', 'c', 5)
  mapa1.agregar_camino('a', 'd', 1)
  mapa1.agregar_camino('a', 'e', 3)
  mapa1.agregar_camino('b', 'c', 1)
  mapa1.agregar_camino('b', 'd', 3)
  mapa1.agregar_camino('b', 'e', 9)
  mapa1.agregar_camino('c', 'd', 1)
  mapa1.agregar_camino('c', 'e', 4)
  mapa1.agregar_camino('d', 'e', 2)
Esempio n. 14
0
            # lo recordamos.
            if di < menor_distancia:
                mejor_recorrido = re
                menor_distancia = di

            # Paso para atrás.
            ciudades_faltantes.add(c)
            recorrido_actual.pop()

    return mejor_recorrido


#######################################################################

if __name__ == "__main__":
    mapa1 = Mapa()
    mapa1.agregar_ciudad('a')
    mapa1.agregar_ciudad('b')
    mapa1.agregar_ciudad('c')
    mapa1.agregar_ciudad('d')
    mapa1.agregar_ciudad('e')
    mapa1.agregar_camino('a', 'b', 2)
    mapa1.agregar_camino('a', 'c', 5)
    mapa1.agregar_camino('a', 'd', 1)
    mapa1.agregar_camino('a', 'e', 3)
    mapa1.agregar_camino('b', 'c', 1)
    mapa1.agregar_camino('b', 'd', 3)
    mapa1.agregar_camino('b', 'e', 9)
    mapa1.agregar_camino('c', 'd', 1)
    mapa1.agregar_camino('c', 'e', 4)
    mapa1.agregar_camino('d', 'e', 2)
Esempio n. 15
0
from robot import Robot
from mapa import Mapa
from moneda import Moneda
from utilidades import cargar_mapa, cargar_instrucciones
import time

mi_mapa = cargar_mapa("mapas/mapa1.txt")
reglas = cargar_instrucciones("instrucciones/programa1.txt")

mapa = Mapa(4, 8)

for y in range(len(mi_mapa)):
    fila = mi_mapa[y]
    for x in range(len(fila)):
        casilla = mi_mapa[y][x]
        if casilla == "*":
            robot = Robot(x, y)
            mapa.asignar_robot(robot)
            robot.asignar_mapa(mapa)
        else:
            cantidad = int(casilla)
            for i in range(cantidad):
                moneda = Moneda(x, y)
                mapa.agregar_moneda(moneda)
mon = 0
for i in reglas:
    if i == 'PICK':
        robot.recoger()
        mon += 1
    if i == 'MOVE':
        robot.move()
Esempio n. 16
0
def main():
    global FPSCLOCK, POVRSINA

    startKliknut = 0
    startVrijeme = 1

    pygame.mixer.pre_init(44100, 16, 2, 4096)
    pygame.init()
    FPSCLOCK = pygame.time.Clock()
    POVRSINA = pygame.display.set_mode((UkupnaVisina, SirinaProzora), 0, 32)

    #zvukovi
    pucanjZvuk = pygame.mixer.Sound("glazba/pucanj.ogg")
    ouchZvuk = pygame.mixer.Sound("glazba/ouch.ogg")
    smrtZvuk = pygame.mixer.Sound("glazba/smrt.ogg")

    pygame.mixer.music.load('glazba/menu.ogg')
    pygame.mixer.music.play(-1, 0.0)

    lvlSeed = maestro()
    UI = sucelje(VisinaProzora, SirinaProzora, POVRSINA, menuLvl1, menuLvl2,
                 menuLvl3, glavniMenu, predjenLabel, toranj_upgrade_hover,
                 ikonaStart_H)
    mousex = 0
    mousey = 0
    pygame.display.set_caption('Zavrsni')
    pygame.mouse.set_visible(False)
    odabraniToranj = None
    odabraniUpgrade = None
    odabraniLvl = None
    mod = modMenu
    pocetak = 1
    listaNeprijatelj = []
    izvrsavaj = True
    audio = True
    while izvrsavaj:
        kliknuto = False
        for event in pygame.event.get():
            if event.type == QUIT or (event.type == KEYUP
                                      and event.key == K_ESCAPE):
                izvrsavaj = False
            if event.type == MOUSEMOTION:
                mousex, mousey = event.pos
            if event.type == MOUSEBUTTONUP:
                mousex, mousey = event.pos
                kliknuto = True
        if mod == modMenu:
            POVRSINA.blit(naslov, ((0, 0), (840, 480)))
            UI.gumbGlavniMenu(menuGumb)
            #varijable tornjeva
            #Tetejac
            dmg1 = 10
            domet1 = 100
            ASpeed1 = 700
            brzinaP1 = 15
            cijena1 = 10
            cijenau1 = 5
            #Kalašnjikov
            dmg2 = 15
            domet2 = 200
            ASpeed2 = 900
            brzinaP2 = 15
            cijena2 = 20
            cijenau2 = 5
            #Karabin
            dmg3 = 20
            domet3 = 200
            ASpeed3 = 900
            brzinaP3 = 20
            cijena3 = 50
            cijenau3 = 10
            #snajper
            dmg4 = 100
            domet4 = 500
            ASpeed4 = 7000
            brzinaP4 = 40
            cijena4 = 100
            cijenau4 = 30
            #mitraljez
            dmg5 = 5
            domet5 = 90
            ASpeed5 = 333
            brzinaP5 = 20
            cijena5 = 100
            cijenau5 = 50
            if kliknuto:
                UI.klikGlavniMenu(mousex, mousey, menuStisnuto)
                odabraniLvl = UI.kliknutoGlavniMenu(mousex, mousey)
                if odabraniLvl is not None:
                    mod = modIgra
                    lvlSeed.lvlLoad(odabraniLvl)
                    grid = lvlSeed.grid()
                    start = lvlSeed.start()
                    kraj = lvlSeed.kraj()
                    startGold = lvlSeed.startGold()
                    brojNeprijatelja = lvlSeed.brNeprijatelja()
                    zgradaHP = lvlSeed.zgradaHP()
                    UI.postaviMrezu(grid)
                    UI.postaviNovce(startGold)
                    pygame.mixer.music.fadeout(1000)
                    pygame.mixer.music.load('glazba/' + odabraniLvl + '.ogg')

                    pygame.mixer.music.play(-1, 0.0)
                    lvl = Mapa(grid, VisinaProzora, SirinaProzora, okolis,
                               put_ravno, put_dole, put_kutLD, put_kutDD,
                               put_kraj, put_kraj_D, put_pocetak_D,
                               put_pocetak_G)
                    tornjevi = []
                    GlZgrada = zgrada(POVRSINA, glavnaZgrada, zgradaHP, kraj,
                                      VisinaProzora, SirinaProzora, grid)
            #if not kliknuto:

            UI.crtajGlavniMenu()
        elif mod == modPobjeda:
            UI.gumbPobjeda(menuGumb)
            if kliknuto:
                if UI.kliknutoPobjeda(mousex, mousey, menuStisnuto):
                    mod = modMenu
            #if not kliknuto:
            #    UI.hoverPobjeda(mousex, mousey)
            UI.CrtajPobjedu()
        elif mod == modIzgubljeno:
            UI.crtajPreostalo(trenutnoNeprijatelja, ukupnoNeprijatelja)
            UI.gumbPobjeda(menuGumb)
            if kliknuto:
                if UI.kliknutoPobjeda(mousex, mousey, menuStisnuto):
                    mod = modMenu
            #if not kliknuto:
            #    UI.hoverPobjeda(mousex, mousey)
            UI.CrtajIzgubljeno(izgubljenoSlika)
        elif mod == modIgra:
            UI.menuObrub(menuSlika)
            UI.gumbTornja(slikaGumb)
            if odabraniToranj is not None:
                UI.odabraniGumb(odabraniToranj, slikaOdabrano)
            UI.menu(toranj1ikona, toranj2ikona, toranj3ikona, snajperikona, mitraljezikona, \
                toranj1_upgrade, toranj2_upgrade, toranj3_upgrade, toranj4_upgrade, toranj5_upgrade, \
                dmg1, dmg2, dmg3, dmg4, dmg5, \
                domet1, domet2, domet3, domet4, domet5, \
                cijena1, cijena2, cijena3, cijena4, cijena5, \
                cijenau1, cijenau2, cijenau3, cijenau4, cijenau5, ikonaStart)
            if audio:
                UI.CrtajAudio(audioON)
            else:
                UI.CrtajAudio(audioOFF)
            dmgLista = []
            lvl.crtajMrezu(POVRSINA, start, kraj)
            #neprijatelji
            if startKliknut:
                if startVrijeme:
                    startVrijeme = 0
                    lvlSeed.postaviVrijeme()
                #stvaranje neprijatelja
                elif lvlSeed.vrijeme():
                    tip, brzina, HP = lvlSeed.vratiNeprijatelj()
                    if tip is not None:
                        if tip == 1:
                            ikona = ikonaNeprijatelj1
                            dmgIkona = dmgikonaNeprijatelj1
                        elif tip == 2:
                            ikona = ikonaNeprijatelj1a
                            dmgIkona = dmgikonaNeprijatelj1a
                        elif tip == 3:
                            ikona = ikonaNeprijatelj2
                            dmgIkona = dmgikonaNeprijatelj2
                        elif tip == 4:
                            ikona = ikonaNeprijatelj2a
                            dmgIkona = dmgikonaNeprijatelj2a
                        elif tip == 5:
                            ikona = ikonaNeprijatelj3
                            dmgIkona = dmgikonaNeprijatelj3
                        elif tip == 6:
                            ikona = ikonaNeprijatelj3a
                            dmgIkona = dmgikonaNeprijatelj3a
                        elif tip == 7:
                            ikona = ikonaNeprijatelj4
                            dmgIkona = dmgikonaNeprijatelj4
                        else:
                            ikona = ikonaNeprijatelj4a
                            dmgIkona = dmgikonaNeprijatelj4a
                        listaNeprijatelj.append(
                            neprijatelj(grid, VisinaProzora, SirinaProzora,
                                        start, kraj, POVRSINA, brzina, R,
                                        ikona, dmgIkona, HP, ouchZvuk))
                    else:
                        pocetak = 0
            NeprijateljiRect = []
            GlZgrada.crtaj()

            for i in range(len(listaNeprijatelj)):
                listaNeprijatelj[i].Pomakni()
            for i in range(len(listaNeprijatelj)):
                NeprijateljiRect.append(listaNeprijatelj[i].ikonaRect)
            #Gradnja
            if kliknuto:
                UI.startKliknut(mousex, mousey)
                if UI.AudioKliknut(mousex, mousey):
                    audio = not audio
                if not startKliknut:
                    startKliknut = UI.kliknutoStart(mousex, mousey)
                lijevo, gore = UI.poljeNaPixelu(mousex, mousey)
                #gradnja upgradea
                if lijevo is None and gore is None:
                    odabraniToranj = UI.odabraniToranj(mousex, mousey,
                                                       slikaOdabrano)
                    odabraniUpgrade = UI.odabraniUpgrade(mousex, mousey)
                    #postavljanje parametara upgradeova
                    if odabraniUpgrade is not None:
                        if odabraniUpgrade == upgrade1:
                            if UI.vratiNovce() >= cijenau1:
                                dmg1 = dmg1 + 1
                                UI.azurirajNovce(-cijenau1)
                                cijenau1 = cijenau1 + 1
                                for i in tornjevi:
                                    if i.vratiTip() == 1:
                                        i.upgradeDMG(1)
                        if odabraniUpgrade == upgrade2:
                            if UI.vratiNovce() >= cijenau2:
                                dmg2 = dmg2 + 1
                                UI.azurirajNovce(-cijenau2)
                                cijenau2 = cijenau2 + 1
                                for i in tornjevi:
                                    if i.vratiTip() == 2:
                                        i.upgradeDMG(1)
                        if odabraniUpgrade == upgrade3:
                            if UI.vratiNovce() >= cijenau3:
                                dmg3 = dmg3 + 1
                                UI.azurirajNovce(-cijenau3)
                                cijenau3 = cijenau3 + 1
                                for i in tornjevi:
                                    if i.vratiTip() == 3:
                                        i.upgradeDMG(1)
                        if odabraniUpgrade == upgrade4:
                            if UI.vratiNovce() >= cijenau4:
                                dmg4 = dmg4 + 50
                                UI.azurirajNovce(-cijenau4)
                                cijenau4 = cijenau4 + 3
                                for i in tornjevi:
                                    if i.vratiTip() == 4:
                                        i.upgradeDMG(50)
                        if odabraniUpgrade == upgrade5:
                            if UI.vratiNovce() >= cijenau5:
                                dmg5 = dmg5 + 2
                                UI.azurirajNovce(-cijenau5)
                                cijenau5 = cijenau5 + 5
                                for i in tornjevi:
                                    if i.vratiTip() == 5:
                                        i.upgradeDMG(2)
                #gradnja tornja
                elif not grid[gore][lijevo] == Z and not grid[gore][
                        lijevo] == T:
                    #stvaranje tornjeva
                    if odabraniToranj is not None:
                        if odabraniToranj == toranj1:
                            if UI.vratiNovce() >= cijena1:
                                grid[gore][lijevo] = T
                                tornjevi.append(
                                    toranj(1, brzinaP1, gore, lijevo, grid,
                                           POVRSINA, VisinaProzora,
                                           SirinaProzora, domet1, dmg1,
                                           ASpeed1, toranj1slika, pucanjZvuk))
                                UI.azurirajNovce(-cijena1)
                                cijena1 = cijena1 + 10
                        if odabraniToranj == toranj2:
                            if UI.vratiNovce() >= cijena2:
                                grid[gore][lijevo] = T
                                tornjevi.append(
                                    toranj(2, brzinaP2, gore, lijevo, grid,
                                           POVRSINA, VisinaProzora,
                                           SirinaProzora, domet2, dmg2,
                                           ASpeed2, toranj2slika, pucanjZvuk))
                                UI.azurirajNovce(-cijena2)
                                cijena2 = cijena2 + 10
                        if odabraniToranj == toranj3:
                            if UI.vratiNovce() >= cijena3:
                                grid[gore][lijevo] = T
                                tornjevi.append(
                                    toranj(3, brzinaP3, gore, lijevo, grid,
                                           POVRSINA, VisinaProzora,
                                           SirinaProzora, domet3, dmg3,
                                           ASpeed3, toranj3slika, pucanjZvuk))
                                UI.azurirajNovce(-cijena3)
                                cijena3 = cijena3 + 10
                        if odabraniToranj == snajper:
                            if UI.vratiNovce() >= cijena4:
                                grid[gore][lijevo] = T
                                tornjevi.append(
                                    toranj(4, brzinaP4, gore, lijevo, grid,
                                           POVRSINA, VisinaProzora,
                                           SirinaProzora, domet4, dmg4,
                                           ASpeed4, snajperslika, pucanjZvuk))
                                UI.azurirajNovce(-cijena4)
                                cijena4 = cijena4 + 20
                        if odabraniToranj == mitraljez:
                            if UI.vratiNovce() >= cijena5:
                                grid[gore][lijevo] = T
                                tornjevi.append(
                                    toranj(5, brzinaP5, gore, lijevo, grid,
                                           POVRSINA, VisinaProzora,
                                           SirinaProzora, domet5, dmg5,
                                           ASpeed5, mitraljezslika,
                                           pucanjZvuk))
                                UI.azurirajNovce(-cijena5)
                                cijena5 = cijena5 + 20
            if not kliknuto:
                UI.crtajObrub(mousex, mousey)
            #Damage
            for i in range(len(tornjevi)):
                tornjevi[i - 1].Crtaj()
                dmgLista.append(tornjevi[i - 1].Ciljanje(
                    NeprijateljiRect, metakIkona))
            if dmgLista != []:
                for j in dmgLista:
                    for i in j:
                        if i[0] > -1 and listaNeprijatelj:
                            listaNeprijatelj[i[0]].damage(i[1])
                            if listaNeprijatelj[i[0]].vratiHP() < 1:
                                smrtZvuk.play(0)
                                UI.azurirajNovce(5)
                                listaNeprijatelj.remove(listaNeprijatelj[i[0]])
                                lvlSeed.smanjiBrojNep()
            indekas = GlZgrada.damage(NeprijateljiRect)
            if indekas > -1:
                listaNeprijatelj.remove(listaNeprijatelj[indekas])
                indekas = -1
            trenutnoNeprijatelja, ukupnoNeprijatelja = lvlSeed.ukupnoNeprijatelja(
            )
            UI.ispisStanja(GlZgrada.vratiHP(), trenutnoNeprijatelja,
                           ukupnoNeprijatelja)
            #uvijeti kraja igre
            if GlZgrada.vratiHP()[0] <= 0 or (len(listaNeprijatelj) < 1
                                              and pocetak == 0):
                pygame.mixer.music.fadeout(1000)
                pygame.mixer.music.load('glazba/menu.ogg')
                pygame.mixer.music.play()
                pocetak = 1
                if GlZgrada.vratiHP()[0] <= 0:
                    print("Izgubljeno")
                    mod = modIzgubljeno
                else:
                    print("Pobjeda")
                    mod = modPobjeda
                odabraniLvl = None
                listaNeprijatelj = []
                grid = []
                UI.postaviNovce(0)
                lvlSeed.reset()
                startVrijeme = 1
                startKliknut = 0
        if audio:
            pygame.mixer.unpause()
            pygame.mixer.music.set_volume(0.3)
        else:
            pygame.mixer.pause()
            pygame.mixer.music.set_volume(0)
        POVRSINA.blit(kursor, pygame.mouse.get_pos())
        pygame.display.update()
        POVRSINA.blit(pozadina, ((0, 0), (840, 480)))
        FPSCLOCK.tick(FPS)
    pygame.quit()
Esempio n. 17
0
# coding=utf-8

from mapa import Mapa
from lineal import *

mapa = Mapa()
print('')
print('')
print('Estamos volando en la tranquilidad del espacio.....')
print('')
print('')
print('             __')
print('             \ \_____')
print('          ---[==_____>')
print('             /_/')
print('')
print('')
Esempio n. 18
0
def editar_mapa():
    global mapa_X, mapa_Y
    mapa_X = 15
    mapa_Y = 15

    # Inicializar ecrã
    tamanho = (400, 300)
    ecra = pygame.display.set_mode(tamanho)

    # Fonte
    fonteTexto = pygame.font.SysFont("Comic Sans MS", 30)
    fonteSinais = pygame.font.SysFont("Comic Sans MS", 25)
    fonteTituloMenu = pygame.font.Font("fonte.ttf", 43)

    # Texto que contem o tamanho do mapa e botão para alterar o tamanho do mapa

    def botao(texto, centro, raio, funcionalidade, executar, ecra):
        def rato_porCima(centro, raio):
            posicao_rato = pygame.mouse.get_pos()
            distancia = sqrt((posicao_rato[X] - centro[X])**2 +
                             (posicao_rato[Y] - centro[Y])**2)

            return distancia <= raio

        # Renderizar o botão
        cor = (50, 50, 50) if rato_porCima(centro, raio) else (60, 60, 60)
        pygame.draw.circle(ecra, cor, centro, raio)

        # Sinal
        sinal = fonteSinais.render(texto, True, COR_TEXTO)
        text_width, text_height = fonteSinais.size(texto)
        posicao_info = (centro[X] - text_width // 2,
                        centro[Y] - text_height // 2)

        ecra.blit(sinal, posicao_info)

        # Executar funcionalidade do botão
        if executar and rato_porCima(centro, raio):
            funcionalidade()

    def selecinador_tamanho(texto, valor, posicao, raio, func_aumento,
                            func_diminuicao, executar, ecra):
        texto_display = fonteTexto.render(str(valor), True, (171, 173, 175))
        text_width, text_height = fonteTexto.size(str(valor))
        posicao_info = (posicao[X] - text_width // 2,
                        posicao[Y] - text_height // 2)

        # Informação sobre o tamanho do mapa
        ecra.blit(texto_display, posicao_info)

        DISTANCIA_AO_TEXTO = raio // 2
        # Botão de diminuir
        DISTANCIA_TEXTO_CENTRO = raio + DISTANCIA_AO_TEXTO
        botao("-", (posicao_info[X] - DISTANCIA_TEXTO_CENTRO, posicao[Y]),
              raio, func_diminuicao, executar, ecra)

        # Botão de aumento
        botao("+", (posicao_info[X] + text_width + DISTANCIA_TEXTO_CENTRO,
                    posicao[Y]), raio, func_aumento, executar, ecra)

        # Texto :
        titulo = fonteTituloMenu.render(texto, True, COR_TEXTO)
        text_width, text_height = fonteTituloMenu.size(str(texto))
        posicao_texto = (posicao[X] - text_width // 2,
                         posicao[Y] - text_height // 2 - raio * 2)

        ecra.blit(titulo, posicao_texto)

        # Linha :
        ESPACO_LINHA_TEXTO = 5
        OFFSET = 30
        linha = pygame.Rect(posicao_texto[X] - OFFSET // 2,
                            posicao[Y] - raio - GROSSURA - ESPACO_LINHA_TEXTO,
                            text_width + OFFSET, GROSSURA)
        pygame.draw.rect(ecra, COR_LINHA, linha)

    # Funções dos botões
    def aumenta_mapaX():
        global mapa_X
        mapa_X += 1

    def aumenta_mapaY():
        global mapa_Y
        mapa_Y += 1

    def diminui_mapaX():
        global mapa_X
        if mapa_X > 1:
            mapa_X -= 1

    def diminui_mapaY():
        global mapa_Y
        if mapa_Y > 1:
            mapa_Y -= 1

    # Display loop :
    a_correr = True
    update = True

    while a_correr:
        clicado = False

        # Receber eventos
        for evento in pygame.event.get():
            if evento.type == pygame.QUIT:
                quit()

            # Verificar se o botão do rato foi clicado
            elif evento.type == pygame.MOUSEBUTTONUP:
                clicado = True

            # Uma tecla foi primida
            elif evento.type == pygame.KEYDOWN:
                if evento.key == ENTER:
                    a_correr = False

        # Update dos conteúdos do ecrã
        #    Update do background
        ecra.fill(COR_BACKGROUND)

        # Display do texto
        selecinador_tamanho("Largura do mapa", mapa_X,
                            (tamanho[X] // 2, (3 * tamanho[Y]) // 9), 25,
                            aumenta_mapaX, diminui_mapaX, clicado, ecra)
        selecinador_tamanho("Altura do mapa", mapa_Y,
                            (tamanho[X] // 2, (7 * tamanho[Y]) // 9), 25,
                            aumenta_mapaY, diminui_mapaY, clicado, ecra)

        #    Dar update do ecrã
        pygame.display.update()
        update = False

    mapa = Mapa(mapa_X, mapa_Y, Snake([]), [], True)
    return mapa
Esempio n. 19
0
    matrix[i, 6] = 3

matrix[2, 6] = 2

pared1 = Pared(0, 0, 1, 0)
pared2 = Pared(1, 0, 1, 1)
pared3 = Pared(2, 0, 2, 1)
pared4 = Pared(3, 0, 3, 1)

paredes = [pared1, pared2, pared3, pared4]

personaje = Personaje(4, 2)

monstruo = Monstruo(1, 0)

mapa = Mapa(matrix, paredes, monstruo, personaje)
""" NIVEL 1 

matrix = np.zeros((7, 6))

for i in range(0,6):
    matrix[6,i] = 3
    
matrix[6,3] = 2

matrix[1,1] = 1

pared1 = Pared(0,5,1,5)
pared2 = Pared(1,4,1,5)
pared3 = Pared(5,5,5,4)
pared4 = Pared(0,3,1,3)
                    for monstruo in monstruos:
                        if (distancia(monstruo.posicion, self.posicion) <= 2):
                            monstruo.defender(self.atacar())

            elif event.type == MOUSEBUTTONDOWN:
                print((event.pos[0] // LADO_CELDA, event.pos[1] // LADO_CELDA))
                self.movimientos = mapa.buscar_camino(
                    self.posicion,
                    (event.pos[1] // LADO_CELDA, event.pos[0] // LADO_CELDA))
                print(self.movimientos)

        if (len(self.movimientos) > 0):
            self.posicion = self.movimientos.pop(0)


mapa = Mapa(ANCHO_MAPA, ALTO_MAPA, LADO_CELDA)
mapa.generar_aleatorio()
mapa.generar_automata()

jugador = Jugador((0, 0))
monstruos = [
    Monstruo((0, ANCHO_MAPA - 1)),
    Monstruo((ALTO_MAPA - 1, ANCHO_MAPA - 1)),
    Monstruo((ALTO_MAPA - 1, 0))
]

while True:

    jugador.actualizar(pygame.event.get())

    mapa.mostrar_mapa()
Esempio n. 21
0
from mapa import Mapa
from robot import Robot
from monedas import Monedas
import time
import utilidades

nombre_mapa =  "mapas/" + (input("Ingrese: ")) + ".txt"
lista_mapa = utilidades.cargar_mapa(nombre_mapa)
nombre_instrucciones =  "instrucciones/" + (input("Ingrese: ")) + ".txt"
lista_instrucciones = utilidades.cargar_instrucciones(nombre_instrucciones)
#print(lista_mapa)
#print(lista_instrucciones)

objeto_mapa = Mapa((len(lista_mapa[0])) , (len(lista_mapa))) 

for i in range(len(lista_mapa)):
	for j in range(len(lista_mapa[0])):
		if lista_mapa[i][j] == "*":		
			objeto_robot = Robot(j ,i)
			objeto_robot.agregar_mapa(objeto_mapa)
			objeto_mapa.agregar_robot(objeto_robot)		
		elif int(lista_mapa[i][j]) > 0:	
			for k in range(int(lista_mapa[i][j])):
				objeto_moneda = Monedas(j , i)
				objeto_mapa.agregar_moneda(objeto_moneda)
				#print(objeto_mapa.contar_monedas(j , i))

print("")
print("Monedas en el mapa: " , objeto_mapa.monedas_en_mapa())
print("Tus monedas: " , objeto_robot.monedas)
print(objeto_mapa.dibujar())
Esempio n. 22
0
from utilidades import cargar_mapa, cargar_instrucciones
from mapa import Mapa
from robot import Robot
import time

nombre_mapa = "mapas/" + (input("Ingrese el nombre del mapa: ")) + ".txt"
el_mapa = cargar_mapa(nombre_mapa)

nombre_instrucciones = "instrucciones/" + (
    input("Ingrese el nombre de las instrucciones: ")) + ".txt"
instrucciones = cargar_instrucciones(nombre_instrucciones)

objeto_mapa = Mapa(el_mapa)  #Crea el objeto Mapa
objeto_robot = Robot()  #Crea el objeto Robot
objeto_mapa.asignar_robot(objeto_robot)  #Asigna robot a mapa
objeto_robot.asignar_mapa(objeto_mapa)  #Asigna mapa a robot
objeto_robot.buscar_robot()  #Busca el robot
print()
print("Robot: ", objeto_robot.x, ",", objeto_robot.y,
      objeto_robot.direccion)  #Imprime posicion y direccion del robot
print(objeto_mapa.imprimir_mapa())
print()
for instruccion in instrucciones:
    print(instruccion)

    if instruccion == "MOVE":
        objeto_robot.MOVE()
        #print(objeto_mapa.imprimir_mapa())
        objeto_mapa.fichas_posicion_robot()
        if objeto_mapa.fichas_posicion_actual > 0:
            print("Fichas en el lugar: ", objeto_mapa.fichas_posicion_actual)
Esempio n. 23
0
import pygame
from interface import Tela
from interface import Cor
from mapa import Mapa
import busca
from busca import Problema
from agente import Goku
import pontos

map = Mapa("Mapa01.txt", Tela.LARGURA / 42, Tela.ALTURA / 42)
mapEsferas = [(1, 4), (39, 5), (19, 9), (3, 22), (37, 27), (36, 29), (22, 37)]
#mapEsferas = [(0,0), (0,41), (41,0), (41,41), (25,35), (25,19), (30,10)]
#mapEsferas = pontos.esferasAleatorias()
NUM_ESFERAS = len(mapEsferas)

#Pontos Focais
focos = pontos.pontosFocaisPadrao()

INICIO = (19, 19)
fim = pontos.maisProximo(INICIO, focos)
prob = Problema(INICIO, fim, map)
agente = Goku(prob)
esferas = agente.radar(mapEsferas)
esferasAvistadas = []
esferasColetadas = []
for e in esferas:
    mapEsferas.remove(e)
    esferasAvistadas.append(e)
if len(esferas) > 0:
    fim = pontos.maisProximo(agente.estadoAtual.id, esferas)
    esferas.remove(fim)
Esempio n. 24
0
def game_loop():
    """ Main do jogo """
    # Ler mapa guardado :
    with open("mapa.txt") as ficheiro:
        tamanho = eval(ficheiro.readline())
        paredes = eval(ficheiro.readline())

    # Inicialização do mapa
    pos_inicial = [tamanho[X] // 2, tamanho[Y] // 2]
    cobra = Snake([pos_inicial, [pos_inicial[X], pos_inicial[Y] - 1]])

    mapa = Mapa(tamanho[X], tamanho[Y], cobra, paredes, False)

    # Calculo das posições / tamanho do mapa em relação ao tamanho
    #   da janela e calculo do tamanho necessario para a janela
    tamanho_mapa = ((mapa.tamanho[X] * MAPA_TAMANHO) + ((mapa.tamanho[X] - 1) * MAPA_INTERVALO), \
                    (mapa.tamanho[Y] * MAPA_TAMANHO) + ((mapa.tamanho[Y] - 1) * MAPA_INTERVALO))

    pos_mapa = (MAPA_TAMANHO, 120)

    tamanho = (tamanho_mapa[X] + 2 * pos_mapa[X],
               tamanho_mapa[Y] + pos_mapa[X] + pos_mapa[Y])

    # Ecrã
    ecra = pygame.display.set_mode(tamanho)

    # Header
    titulo = "The Snake"
    the_snake = fonteTitulo.render(titulo, True, COR_TEXTO)

    text_width, text_height = fonteTitulo.size(
        titulo)  # Dimenções do retangulo que involve o texto

    # Centrar o texto em relação a posição do mapa
    pos_texto = (tamanho[X] // 2 - text_width // 2, 10)

    # Linha por baixo do titulo
    pos_retangulo = (pos_mapa[X], pos_texto[Y] + text_height + DISTANCIA_TEXTO)
    retangulo = pygame.Rect(pos_retangulo[X], pos_retangulo[Y],
                            tamanho_mapa[X], GROSSURA)

    # Score :
    score = "Score :"
    pos_score = (pos_retangulo[X], pos_retangulo[Y] + GROSSURA + 5)
    score_width, score_height = fonteScore.size(score)
    pos_pontos = (pos_score[X] + score_width + 10, pos_score[Y])

    # FPS
    clock = pygame.time.Clock()

    # Game loop :
    a_correr = True

    while a_correr:
        clock.tick(FPS)
        ecra.fill(COR_BACKGROUND)

        # Titulo
        ecra.blit(the_snake, pos_texto)
        pygame.draw.rect(ecra, COR_LINHA, retangulo)

        # Score
        score_texto = fonteScore.render(score, True, (140, 142, 143))
        pontos_texto = fonteScore.render(str(cobra.score), True, COR_TEXTO)
        ecra.blit(score_texto, pos_score)
        ecra.blit(pontos_texto, pos_pontos)

        tecla = None
        # Receber eventos
        for evento in pygame.event.get():
            if evento.type == pygame.QUIT:
                quit()
            # Uma tecla foi primida
            elif evento.type == pygame.KEYDOWN:
                # Funcionalidade para cada tecla
                tecla = chr(evento.key)

        # Update da cobra
        a_correr = cobra.update(mapa, tecla)

        # Dar display do mapa
        mapa.display(pos_mapa, ecra, cobra)

        # Dar update do ecrã
        pygame.display.update()
Esempio n. 25
0
def juego(surface, fps_clock):
    """ Hace funcionar el juego en si, empezando la carrera"""

    #-Creamos los jugadores e inicializamos los datos
    jugador1 = coche.Coche(
        perfil.coche_j1
    )  # Nombre, velocidad máxima, aceleración, turbo, manejo, frenada
    jugador2 = coche.Coche(
        perfil.coche_j2
    )  # Nombre, velocidad máxima, aceleración, turbo, manejo, frenada

    iniciar_datos_jugador(jugador1, perfil.coche_j1, (640, 35))
    iniciar_datos_jugador(jugador2, perfil.coche_j2, (640, 75))

    #-Creamos el mapa
    mapa = Mapa()
    mapa.crear(1)  # Creamos el mapa según el nivel seleccionado

    tiles_hierba = mapa.dibujar(surface)

    #-Cargamos la música
    sonido_motor_j1 = pygame.mixer.Sound(
        "Sonidos/Sonido Motor.wav")  # Cargamos el sonido de un motor
    sonido_motor_j1.play()
    sonido_motor_j1.set_volume(
        0
    )  # Ponemos el volumen a 0, pues está condicionado por la velocidad del coche (empieza a 0)

    sonido_motor_j2 = pygame.mixer.Sound(
        "Sonidos/Sonido Motor.wav")  # Cargamos el sonido de un motor
    sonido_motor_j2.play()
    sonido_motor_j2.set_volume(
        0
    )  # Ponemos el volumen a 0, pues está condicionado por la velocidad del coche (empieza a 0)

    #-Creamos algunas variables
    pausa = False  # Indica si el juego está en pausa o no

    #================================BUCLE============================
    while True:
        if pausa == True:  # Si el juego está en pausa
            sonido_motor_j1.stop()
            sonido_motor_j2.stop()

            pausa = False  # False para que una vez cerrada la función de menu_pausa el juego no siga en pausa
            jugador1.corriendo, jugador1.frenando, jugador1.girando, jugador1.turbeando = False, False, False, False
            jugador2.corriendo, jugador2.frenando, jugador2.girando, jugador2.turbeando = False, False, False, False

            salir = menu.menu_pausa(
                surface, fps_clock
            )  # Activamos el menú de pausa, que devuelve True si se le da a salir
            if salir == True:  # Si volvió al menú principal
                iniciar_datos_jugador(jugador1, perfil.coche_j1, (640, 35))
                iniciar_datos_jugador(jugador2, perfil.coche_j2, (640, 75))
            else:
                sonido_motor_j1.play()
                sonido_motor_j2.play()

        for event in pygame.event.get():
            tecla_pulsada = pygame.key.get_pressed()
            if event.type == QUIT:
                pygame.quit()
                sys.exit()

            elif event.type == KEYDOWN:
                #------------------Jugador 1
                if event.key == K_UP:
                    jugador1.corriendo = True
                elif event.key == K_DOWN:
                    jugador1.frenando = True
                    jugador1.turbeando = False
                elif event.key == K_KP0:
                    jugador1.turbeando = True

                elif event.key == K_RIGHT:
                    jugador1.girando = 'derecha'
                elif event.key == K_LEFT:
                    jugador1.girando = 'izquierda'

                #------------------Jugador 2
                elif event.key == K_w:
                    jugador2.corriendo = True
                elif event.key == K_s:
                    jugador2.frenando = True
                    jugador2.turbeando = False
                elif event.key == K_SPACE:
                    jugador2.turbeando = True

                elif event.key == K_d:
                    jugador2.girando = 'derecha'
                elif event.key == K_a:
                    jugador2.girando = 'izquierda'

                #--Menu de pausa
                elif event.key == K_p:
                    pausa = True

            elif event.type == KEYUP:
                #------------------Jugador 1
                if event.key == K_UP:
                    jugador1.corriendo = False
                    jugador1.turbeando = False
                    if tecla_pulsada[K_DOWN]:
                        jugador1.frenando = True
                elif event.key == K_DOWN:
                    jugador1.frenando = False
                    if tecla_pulsada[K_UP]:
                        jugador1.corriendo = True
                elif event.key == K_KP0:
                    jugador1.turbeando = False

                elif event.key == K_RIGHT:
                    jugador1.girando = False
                    if tecla_pulsada[K_LEFT]:
                        jugador1.girando = 'izquierda'
                elif event.key == K_LEFT:
                    jugador1.girando = False
                    if tecla_pulsada[K_RIGHT]:
                        jugador1.girando = 'derecha'

                #------------------Jugador 2
                elif event.key == K_w:
                    jugador2.corriendo = False
                    jugador2.turbeando = False
                    if tecla_pulsada[K_s]:
                        jugador2.frenando = True
                elif event.key == K_s:
                    jugador2.frenando = False
                    if tecla_pulsada[K_w]:
                        jugador2.corriendo = True
                elif event.key == K_SPACE:
                    jugador2.turbeando = False

                elif event.key == K_d:
                    jugador2.girando = False
                    if tecla_pulsada[K_a]:
                        jugador2.girando = 'izquierda'
                elif event.key == K_a:
                    jugador2.girando = False
                    if tecla_pulsada[K_d]:
                        jugador2.girando = 'derecha'

        #------------------Calculamos datos y variables y aplicamos sonidos (actualizamos la posición de cada jugador, la ajustamos si es necesario y cambiamos la imagen)
        #-Jugador 1
        jugador1.actualizar_movimiento(tiles_hierba)  # Actualizamos los datos
        if jugador1.velocidad > 0:  # Si la velocidad es mayor que 0
            sonido_motor_j1.set_volume(jugador1.velocidad / 100)
        else:  # Si la velocidad es menor que 0
            sonido_motor_j1.set_volume(jugador1.velocidad * -1 / 100)

        #-Jugador 2
        jugador2.actualizar_movimiento(tiles_hierba)  # Actualizamos los datos
        if jugador2.velocidad > 0:  # Si la velocidad es mayor que 0
            sonido_motor_j2.set_volume(jugador2.velocidad / 100)
        else:  # Si la velocidad es menor que 0
            sonido_motor_j2.set_volume(jugador2.velocidad * -1 / 100)

        #================================UPDATE============================
        #------------------Mapa
        mapa.dibujar(surface)  # Dibujamos el mapa en el surface

        #------------------Coches
        surface.blit(jugador1.image, (jugador1.rect.x, jugador1.rect.y))
        surface.blit(jugador2.image, (jugador2.rect.x, jugador2.rect.y))

        #------------------Marcadores
        # Para la versión 2.0

        #------------------Update, FPS
        pygame.display.update()
        fps_clock.tick(FPS)
Esempio n. 26
0
 def __init__(self):
     x = int(input("Defina o valor máximo do eixo X:"))
     y = int(input("Defina o maior valor do eixo Y:"))
     self.mapa = Mapa(x, y)
Esempio n. 27
0
from personagem import Personagem
from tipo_personagem import TipoPersonagem
from mapa import Mapa

QTD_INIMIGOS_INICIAIS = 3


print("=========================")
print("Bem vindo ao Dungeon Bash!")
print("=========================")

arena = Mapa()
arena.jogador.CriarJogador()
arena.jogador.ExibirDadosDoJogador()

usr_input = input("Pressione ENTER para começar")

level = 1

while usr_input != "0":
    qtdInimigos = QTD_INIMIGOS_INICIAIS + (QTD_INIMIGOS_INICIAIS % level)
    qtdInimigos = qtdInimigos + 2 if qtdInimigos == level else qtdInimigos
    arena.GerarInimigos(qtdInimigos, level)
    arena.ExibirDadosDosInimigos()
    arena.Batalhar()
    if not arena.jogador.ativo:
        break
    level += 1
    arena.jogador.AumentarLevel(level)
    usr_input = input("Continuar para o level %s?\nPerssione ENTER para confirmar, para sair digite 0: " %level)
Esempio n. 28
0
 def crear_mapa(self):
     try:
         return Mapa(self.filas.get(), self.columnas.get())
     except tk.TclError:
         return self.mapa
Esempio n. 29
0
            linha_skills = componenetes_dev[3::]
            list_devs.append(Replyer(i, company, bonus, linha_skills))
            i += 1

        list_pos = []
        i = 0
        for po in linhas_pos:
            po.replace("\n", '')
            company, bonus = po.split()
            list_pos.append(Replyer(i, company, bonus))
            i += 1
        return mapa_final, list_devs, list_pos


mapa_final, list_devs, list_pos = read_input(sys.argv[1])
mapa_ = Mapa(mapa_final)
mapa_.config_map()
mapa_.set_random(list_devs, list_pos)
max_score = -1

while (True):
    if random.random() < 0.42:
        x, y = mapa_.pegar_o_mais_fdp()
        mapa_.random_swap_fdp(x, y, list_devs, list_pos)
    else:
        mapa_.set_random(list_devs, list_pos)
    score = mapa_.get_score(list_devs, list_pos)
    if max_score < score:
        max_score = score

        output_devs = list()
Esempio n. 30
0
def generar_laberinto(filas, columnas):
    """Generar un laberinto.

    Argumentos:
        filas, columnas (int): Tamaño del mapa

    Devuelve:
        Mapa: un mapa nuevo con celdas bloqueadas formando un laberinto
              aleatorio
    """
    mapa = Mapa(filas, columnas)

    for i in range(0, filas):
        for j in range(0, columnas):
            coordenada = Coord(i, j)
            mapa.bloquear(coordenada)

    mapa.asignar_origen(Coord(1, 1))

    if columnas % 2 != 0 and filas % 2 != 0:
        mapa.asignar_destino(Coord(filas - 2, columnas - 2))
    else:
        if columnas % 2 != 0:
            mapa.asignar_destino(Coord(filas - 1, columnas - 2))
        if filas % 2 != 0:
            mapa.asignar_destino(Coord(filas - 2, columnas - 1))

    coord = mapa.origen()
    camino = Pila()
    camino.apilar(coord)

    visitadas = set()

    while not camino.esta_vacia():

        coord = camino.ver_tope()
        mapa.desbloquear(coord)
        visitadas.add(coord)

        celdas_vecinas = [
            mapa.trasladar_coord(coord, 2, 0),
            mapa.trasladar_coord(coord, -2, 0),
            mapa.trasladar_coord(coord, 0, 2),
            mapa.trasladar_coord(coord, 0, -2)
        ]
        vecinas = celdas_vecinas[:]
        for vecina in vecinas:
            if vecina == coord:
                celdas_vecinas.remove(vecina)
            elif not mapa.celda_bloqueada(vecina):
                celdas_vecinas.remove(vecina)

        if (len(celdas_vecinas) == 0) or (coord == mapa.destino()):
            camino.desapilar()
            continue

        vecina_aleatoria = randint(0, len(celdas_vecinas) - 1)

        coord_vecina = celdas_vecinas[vecina_aleatoria]

        if coord_vecina in visitadas:
            continue

        desbloquear_celda_medio(mapa, coord, coord_vecina)
        camino.apilar(coord_vecina)

    return mapa