コード例 #1
0
ファイル: PantallaHorses.py プロジェクト: vipmath/lucaschess
 def mueveHumano(self, desde, hasta, coronacion=""):
     p0 = LCEngine.a1Pos(desde)
     p1 = LCEngine.a1Pos(hasta)
     if p1 in LCEngine.dicN[p0]:
         self.moves += 1
         self.movesParcial += 1
         self.ponNumMoves()
         if p1 not in self.camino:
             return False
         self.cpActivo.casillas[desde] = None
         self.cpActivo.casillas[hasta] = "N" if self.siBlancas else "n"
         self.tablero.ponPosicion(self.cpActivo)
         self.tablero.activaColor(self.siBlancas)
         self.posTemporal = p1
         if p1 == self.camino[self.posActual + 1]:
             self.avanza()
             return True
         return True
     return False
コード例 #2
0
ファイル: ControlPosicion.py プロジェクト: tosca07/lucaschess
    def aura(self):
        lista = []

        def add(lipos):
            for pos in lipos:
                lista.append(LCEngine.posA1(pos))

        def liBR(npos, fi, ci):
            fil, col = LCEngine.posFC(npos)
            liM = []
            ft = fil + fi
            ct = col + ci
            while True:
                if ft < 0 or ft > 7 or ct < 0 or ct > 7:
                    break
                t = LCEngine.FCpos(ft, ct)
                liM.append(t)

                pz = self.casillas[LCEngine.posA1(t)]
                if pz:
                    break
                ft += fi
                ct += ci
            add(liM)

        pzs = "KQRBNP" if self.siBlancas else "kqrbnp"

        for i in range(8):
            for j in range(8):
                a1 = chr(i + 97) + chr(j + 49)
                pz = self.casillas[a1]
                if pz and pz in pzs:
                    pz = pz.upper()
                    npos = LCEngine.a1Pos(a1)
                    if pz == "K":
                        add(LCEngine.liK(npos))
                    elif pz == "Q":
                        for f_i, c_i in ((1, 1), (1, -1), (-1, 1), (-1, -1),
                                         (1, 0), (-1, 0), (0, 1), (0, -1)):
                            liBR(npos, f_i, c_i)
                    elif pz == "R":
                        for f_i, c_i in ((1, 0), (-1, 0), (0, 1), (0, -1)):
                            liBR(npos, f_i, c_i)
                    elif pz == "B":
                        for f_i, c_i in ((1, 1), (1, -1), (-1, 1), (-1, -1)):
                            liBR(npos, f_i, c_i)
                    elif pz == "N":
                        add(LCEngine.liN(npos))
                    elif pz == "P":
                        lim, lix = LCEngine.liP(npos, self.siBlancas)
                        add(lix)
        return lista