def mueve_o_fija(self, move=None): """ Realiza una acción en el tablero para avanzar el juego. Parameters ---------- move : Movimiento Si es que pasan un movimiento, se realiza el movimiento. """ moves = [ Movimiento.CAE, Movimiento.DER, Movimiento.IZQ, Movimiento.GIR ] moves_posibles = [] for i in moves: if self._tablero.movimiento_valido(i): moves_posibles.append(i) fijar = self._tablero.puede_fijar() if fijar and move == Movimiento.FIJ: if self._tablero.fijar(): self._historial.append(Movimiento.FIJ) return True return False if len(moves_posibles) == 0 and fijar: if self._tablero.fijar(): self._historial.append(Movimiento.FIJ) return True return False elif len(moves_posibles) == 0: self._game_over = True return False elif fijar: if move == None: move = moves_posibles[get_randrange(len(moves_posibles))] # El 0.3 funciona bastante bien if get_random() < 0.3: if self._tablero.fijar(): self._historial.append(Movimiento.FIJ) return True return False else: if self._tablero.juega_movimiento(move): self._historial.append(move) return True return False else: if move == None: move = moves_posibles[get_randrange(len(moves_posibles))] if self._tablero.juega_movimiento(move): self._historial.append(move) return True return False
def siguiente_random(self, tipo=None, move=None): """ Juega un movimiento para avanzar en el tiempo de juego. Parameters ---------- tipo : Tipo Es el tipo de pieza siguiente a jugar si se necesita. move : Movimiento Es el movimiento a jugar. """ if self._tablero.requiere_pieza(): if tipo == None: piezas = [Tipo.I, Tipo.LG, Tipo.LS, \ Tipo.T, Tipo.RS, Tipo.RG, Tipo.Sq] tipo = piezas[get_randrange(len(piezas))] self._piezas_jugadas = self._piezas_jugadas + 1 return self._tablero.set_pieza(tipo) moves = [ Movimiento.CAE, Movimiento.DER, Movimiento.IZQ, Movimiento.GIR ] moves_posibles = [] for i in moves: if self._tablero.movimiento_valido(i): moves_posibles.append(i) fijar = self._tablero.puede_fijar() if len(moves_posibles) == 0 and fijar: self._tablero.fijar() self._historial.append(Movimiento.FIJ) return True elif len(moves_posibles) == 0: self._game_over = True return False elif fijar: if move == None: move = moves_posibles[get_randrange(len(moves_posibles))] if get_random() < 0.3: self._tablero.fijar() self._historial.append(Movimiento.FIJ) return True else: self._historial.append(move) self._tablero.juega_movimiento(move) return True else: if move == None: move = moves_posibles[get_randrange(len(moves_posibles))] self._historial.append(move) self._tablero.juega_movimiento(move) return True
def __random_move(self): moves = [Movimiento.CAE, Movimiento.DER, Movimiento.IZQ, Movimiento.GIR] moves_posibles = [] for i in moves: if self._tetris.movimiento_valido(i): moves_posibles.append(i) if len(moves_posibles) > 0: return moves_posibles[get_randrange(len(moves_posibles))] return None
def set_pieza(self, tipo=None): """ Asigna una pieza nueva. Parameters ---------- tipo : Tipo Es el tipo de la pieza a jugar. """ if self._tablero.requiere_pieza() and not self._game_over: if tipo == None: piezas = [Tipo.I, Tipo.LG, Tipo.LS, \ Tipo.T, Tipo.RS, Tipo.RG, Tipo.Sq] tipo = piezas[get_randrange(len(piezas))] self._piezas_jugadas = self._piezas_jugadas + 1 self._game_over = not self._tablero.set_pieza(tipo) return self._game_over return False
def __random_tipo(self): piezas = [Tipo.I, Tipo.LG, Tipo.LS, Tipo.T, Tipo.RS, Tipo.RG, Tipo.Sq] return piezas[get_randrange(len(piezas))]