def on_play(self,i,j,board): if self.handicap_adder: self.handicap_adder.parent.remove_widget(self.handicap_adder) self.handicap_adder = False last = self.current_player next = 'white' if last == 'black' else 'black' stones = board.adjacent_stones(i,j, color=next) groups = [ board.get_group(*pt) for pt in stones ] liberties = [ board.group_liberties(grp) for grp in groups ] # Atari notice self.pads[last].atari = False if [ lib for lib in liberties if 1 == len(lib) ]: self.pads[next].atari = True # Dim dead groups for idx in [ a for a in xrange(len(liberties)) if 0 == len(liberties[a]) ]: self.dead_stones.extend(groups[idx]) for pt in groups[idx]: board[pt].dim() self.current_player = next self.pads[next].activate() self.pads[last].deactivate() Factory.register("GoGame", GoGame) Builder.load_file(ttgo_dir("gogame.kv"), rulesonly=True)
from kivy.properties import ObjectProperty, StringProperty, NumericProperty, BooleanProperty from kivy.uix.button import Button from kivy.uix.scatter import Scatter from ttgo import ttgo_dir from ttlib.click import DblTap class PlayerPad(Scatter): label = ObjectProperty(None) player = StringProperty("") captures = NumericProperty(0) atari = BooleanProperty(False) def activate(self): self.label.bold = True self.label.color = [1,1,.25,1] def deactivate(self): self.label.bold = False self.label.color = [1,1,1,1] Factory.register("PlayerPad", PlayerPad) Builder.load_file(ttgo_dir("playerpad.kv"), rulesonly=True) class NameBanner(DblTap,Button): def on_dbl_click(self): # pop out keyboard and allow changing name pass Factory.register("NameBanner", NameBanner)