plansza.B_szach = False
plansza.C_szach = False
plansza.B_r_szach = 0
plansza.C_r_szach = 0
To jest mało obiektowe. Jak widzisz takie coś, to powinieneś od razu napisać klasę z odpowiednimi polami.
if not W and U is False:
Jednoznakowe zmienne zaciemniają kod. Ponadto konstrukcja tego warunku nie ułatwia jednoznacznego odczytania.
is
pewnie zadziała dla booleana, ale poprawniej w tej sytuacji byłoby użyć tego operatora ==
. ( http://net-informations.com/python/iq/is.htm ).
W ogóle najlepiej zapomnij o is
, to unikniesz wielu nieprzewidzianych sytuacji :]
plansza.screen.blit(pygame.image.load('ustawienia.png'), (0, 0))
Nigdy tak nie rób. Obrazek załaduj gdzieś wcześniej w aplikacji, przed pętlą, żeby siedział w pamięci. W blit
używaj referencji do uprzednio załadowanego obrazka.
if self.rodzaj == 'pion':
if self.poz[1] == '8' or self.poz[1] == '1':
self.rodzaj = 'hetman'
return ruchy_hetmana(self, slownik, T)
else:
return ruchy_piona(self, slownik, self.kolor, T)
elif self.rodzaj == 'kon':
return ruchy_konia(self, slownik, T)
elif self.rodzaj == 'wieza':
return ruchy_wiezy(self, slownik, T)
elif self.rodzaj == 'goniec':
return ruchy_gonca(self, slownik, T)
elif self.rodzaj == 'hetman':
return ruchy_hetmana(self, slownik, T)
else:
return ruchy_krola(self, slownik, T)
To jest bardzo nieobiektowe. Aż się prosi, żeby zrobić klasę dla każdej bierki, nadpisującą "wirtualną" metodę ruchy()
.
No i obiekty wsadzamy w odpowiednie pliki *.py.
Obiektowe szachy z dwoma plikami źródłowymi to przykry żart...