Exemple #1
0
class Buscaminas(QtGui.QWidget):

    def __init__(self, n, minas):  # con "n" se genera una matriz de nxn
        super(Buscaminas, self).__init__()
        self.n = n
        self.minas = minas
        self.partida = Partida(n, minas)
        ":::COMPLETAR:::"

        self.initUI()

    def initUI(self):
        ":::COMPLETAR:::"

    def buttonClickedLeft(self):
        ":::COMPLETAR:::"

    def apretar_boton(self, posicion):  # Posición como una tupla (x, y)
        "Esta funcion devuelve la cantidad de minas alrededor de un espacio"
        "No tiene ninguna relación con lo que sucederá en la UI"
        boton = self.partida.botones[posicion]
        return self.partida.clickear(boton)

    def notificar(self, mensaje):
        ":::COMPLETAR:::"
        "Debe notificar a traves de un label cuando muera o sobreviva"
Exemple #2
0
class Buscaminas(QtGui.QWidget):
    def __init__(self, n, minas):  # con "n" se genera una matriz de nxn
        super(Buscaminas, self).__init__()
        self.n = n
        self.minas = minas
        self.partida = Partida(n, minas)
        ":::COMPLETAR:::"

        self.initUI()

    def initUI(self):
        ":::COMPLETAR:::"

    def buttonClickedLeft(self):
        ":::COMPLETAR:::"

    def apretar_boton(self, posicion):  # Posición como una tupla (x, y)
        "Esta funcion devuelve la cantidad de minas alrededor de un espacio"
        "No tiene ninguna relación con lo que sucederá en la UI"
        boton = self.partida.botones[posicion]
        return self.partida.clickear(boton)

    def notificar(self, mensaje):
        ":::COMPLETAR:::"
        "Debe notificar a traves de un label cuando muera o sobreviva"
Exemple #3
0
class Buscaminas(QtGui.QWidget):

    def __init__(self, n, minas):  # con "n" se genera una matriz de nxn
        super(Buscaminas, self).__init__()
        self.n = n
        self.minas = minas
        self.partida = Partida(n, minas)
        ":::COMPLETAR:::"
        self.dicc = dict()
        self.apretados = 0
        self.initUI()
        self.seguir = True

    def initUI(self):
        grid = QtGui.QGridLayout()
        self.setLayout(grid)

        for i in range(self.n):
            for j in range(self.n):
                button = QtGui.QPushButton(' ')
                self.dicc[button] = (i, j)
                button.setFixedSize(50, 50)
                grid.addWidget(button, i, j)
                button.clicked.connect(self.buttonClickedLeft)

        self.label = QtGui.QLabel("Comenzo el juego")
        grid.addWidget(self.label, self.n+1, 0, 1, self.n+1)
        self.setWindowTitle('Buscaminas')
        self.show()

    def buttonClickedLeft(self):
        sender = self.sender()
        if self.seguir:
            if sender.text() == ' ':
                tupla = self.dicc[sender]
                numero = self.apretar_boton(tupla)
                sender.setText(numero)
                if numero == "X":
                    self.notificar("Moriste")
                    self.seguir = False
                else:
                    self.apretados += 1
                    if self.n**2 - self.apretados == self.minas:
                        self.notificar("Ganaste")
                        self.seguir = False
                    else:
                        self.notificar("Sigues vivo aun")

    def apretar_boton(self, posicion):  # Posición como una tupla (x, y)
        "Esta funcion devuelve la cantidad de minas alrededor de un espacio"
        "No tiene ninguna relación con lo que sucederá en la UI"
        boton = self.partida.botones[posicion]
        return self.partida.clickear(boton)

    def notificar(self, mensaje):
        ":::COMPLETAR:::"
        "Debe notificar a traves de un label cuando muera o sobreviva"
        self.label.setText(mensaje)
Exemple #4
0
class Buscaminas(QtGui.QWidget):
    def __init__(self, n, minas):  # con "n" se genera una matriz de nxn
        super(Buscaminas, self).__init__()
        self.n = n
        self.minas = minas
        self.partida = Partida(n, minas)
        # posiciones = [(i, j) for i in range(self.n) for j in range(self.n)]
        self.botones = dict()
        ":::COMPLETAR:::"

        self.initUI()

    def initUI(self):
        self.setWindowTitle('Buscaminas')
        self.setGeometry(200, 100, 400, 500)

        grilla = QtGui.QGridLayout()
        self.setLayout(grilla)

        for posicion in [(i, j) for i in range(self.n) for j in range(self.n)]:
            boton = QtGui.QPushButton()
            boton.setFixedSize(50, 50)
            boton.clicked.connect(self.buttonClickedLeft)
            self.botones.update({boton: posicion})
            grilla.addWidget(boton, *posicion)

        self.label = QtGui.QLabel('', self)
        self.label.move(0, 0)
        self.label.setFixedSize(200, 60)

    def buttonClickedLeft(self):
        sender = self.sender()
        posicion = self.botones[sender]
        texto = self.apretar_boton(posicion)
        if sender.text() == '':

            if texto == 'X':
                sender.setText(texto)
                self.notificar('El espia ha muerto  ')
                print('hola')
            else:
                sender.setText(texto)

    def apretar_boton(self, posicion):  # Posición como una tupla (x, y)
        "Esta funcion devuelve la cantidad de minas alrededor de un espacio"
        "No tiene ninguna relación con lo que sucederá en la UI"
        boton = self.partida.botones[posicion]
        return self.partida.clickear(boton)

    def notificar(self, mensaje):
        self.label.setText(mensaje)
        "Debe notificar a traves de un label cuando muera o sobreviva"
class Buscaminas(QtGui.QWidget):
    def __init__(self, n, minas):  # con "n" se genera una matriz de nxn
        super(Buscaminas, self).__init__()
        self.n = n
        self.minas = minas
        self.partida = Partida(n, minas)
        ":::COMPLETAR:::"
        self.ya_gano = False
        self.initUI()

    def initUI(self):
        grilla = QtGui.QGridLayout()
        self.setLayout(grilla)
        for i in range(self.n):
            for j in range(self.n):
                boton = QtGui.QPushButton('')
                boton.pos = (i, j)
                # boton.setText(self.apretar_boton(boton.pos))
                boton.setFixedSize(50, 50)
                grilla.addWidget(boton, i, j)
                boton.clicked.connect(self.buttonClickedLeft)
        self.label = QtGui.QLabel('', self)
        grilla.addWidget(self.label, self.n, 0, self.n, self.n)
        self.setWindowTitle('Vu Chef')
        self.show()

    def buttonClickedLeft(self):
        boton = self.sender()
        if self.perdedor():
            self.notificar('Ya perdiste, no puedes seguir jugando')
        else:
            valor = self.apretar_boton(boton.pos)
            if self.ganador() and not self.ya_gano:
                self.notificar('Ganaste! Felicitaciones')
                boton.setText(valor)
                self.ya_gano = True
            elif not self.ya_gano:
                if boton.text() == '':
                    boton.setText(valor)
                if valor == 'X':
                    self.notificar('Moriste! Pisaste una mina')
                else:
                    self.notificar('Sigues! Pisaste un lugar seguro')
            else:
                self.notificar('Ya ganaste! Puedes retirarte')

    def apretar_boton(self, posicion):  # Posición como una tupla (x, y)
        "Esta funcion devuelve la cantidad de minas alrededor de un espacio"
        "No tiene ninguna relación con lo que sucederá en la UI"
        boton = self.partida.botones[posicion]
        return self.partida.clickear(boton)

    def notificar(self, mensaje):
        ":::COMPLETAR:::"
        "Debe notificar a traves de un label cuando muera o sobreviva"
        self.label.setText(mensaje)

    def ganador(self):
        botones = (j for i, j in self.partida.botones.items())
        seguros = list(filter(lambda x: not x.mina and x.clickeado, botones))
        return len(seguros) == self.n**2 - self.minas

    def perdedor(self):
        botones = (j for i, j in self.partida.botones.items())
        minas = list(filter(lambda x: x.mina and x.clickeado, botones))
        return len(minas) != 0