def czyNaSzerokosciMiedzyPolamiNieMaBierek(self, pole_a, pole_b):
        from tools.narzedzia_figur import NarzedziaSzukaniaBierek

        pole_a = naprawPole(pole_a)
        pole_b = naprawPole(pole_b)

        if pole_a[1] != pole_b[1]:
            return False

        idx_a = lista_szerokosci.index(pole_a[0])
        idx_b = lista_szerokosci.index(pole_b[0])

        if idx_a < idx_b:
            minor_idx = idx_a + 1
            max_idx = idx_b
        else:
            minor_idx = idx_b + 1
            max_idx = idx_a

        nsb = NarzedziaSzukaniaBierek()
        for i in range(minor_idx, max_idx):
            pole = lista_szerokosci[i] + pole_a[1]
            bierka = nsb.dajBierkePoPolu(pole)
            if bierka:
                return False
        return True
예제 #2
0
def dajOdlegloscMiedzyPolami(pole_a, pole_b):
    pole_a = naprawPole(pole_a)
    pole_b = naprawPole(pole_b)

    idx_szrksc_a = lista_szerokosci.index(pole_a[0])
    idx_szrksc_b = lista_szerokosci.index(pole_b[0])
    idx_wsksc_a = lista_wysokosci.index(pole_a[1])
    idx_wsksc_b = lista_wysokosci.index(pole_b[1])

    return -(fabs(idx_szrksc_a-idx_szrksc_b) + fabs(idx_wsksc_a-idx_wsksc_b))
예제 #3
0
파일: krol.py 프로젝트: Bidker/auto_chess
    def sprawdzPolaPrzedKrolem(self):
        roznica_wysokosci = 1 if self.kolor == warunki_czarne else -1
        koniec_planszy = 0 if self.kolor == warunki_czarne else 7
        idx_wysokosci_krola = lista_wysokosci.index(self.krol.pozycja[1])

        if idx_wysokosci_krola != koniec_planszy:
            wysokosc = lista_wysokosci[idx_wysokosci_krola + roznica_wysokosci]
            idx_szerokosci = lista_szerokosci.index(self.krol.pozycja[0])
            lst_pol = [self.krol.pozycja[0] + wysokosc]
            if idx_szerokosci != 0:
                lst_pol.append(wysokosc + lista_szerokosci[idx_szerokosci - 1])
            if idx_szerokosci != 7:
                lst_pol.append(wysokosc + lista_szerokosci[idx_szerokosci + 1])

            piony_z_pol = self.nsb.dajBierkiZPolPoSlowie(
                self.kolor + '_pion', lst_pol)
            if len(piony_z_pol) != 3:
                return len(piony_z_pol) * 15
        return 0
예제 #4
0
    def sprawdzIzolowanePiony(self):
        znak = '2' if self.kolor == warunki_biale else '7'
        wartosc = 0

        for pion in self.lista_pionow:
            if znak not in pion.pozycja:
                lst_poz = []
                idx = lista_szerokosci.index(pion.pozycja[0])
                if idx < 7:
                    pozycja = lista_szerokosci[idx + 1] + pion.pozycja[1]
                    lst_poz.append(pozycja)
                if idx > 0:
                    pozycja = lista_szerokosci[idx - 1] + pion.pozycja[1]
                    lst_poz.append(pozycja)
                for poz in lst_poz:
                    bierka = self.nsb.dajBierkePoPolu(poz)
                    if not bierka or 'pion' not in bierka.nazwa:
                        wartosc -= 20

        return wartosc
예제 #5
0
def wyznaczWspolrzednePoPozycji(pole):
    pole = naprawPole(pole)
    return {
        'x': dajWspolrzedna(lista_szerokosci.index(pole[0])),
        'y': dajWspolrzedna(lista_wysokosci.index(pole[1])),
    }
예제 #6
0
def dajOdlegloscPolaDoCentrum(pole):
    pole = naprawPole(pole)
    idx_szerokosci = lista_szerokosci.index(pole[0])
    idx_wysokosci = lista_wysokosci.index(pole[1])
    return -(fabs(3.5-idx_szerokosci) + fabs(3.5-idx_wysokosci))