Beispiel #1
0
    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)
Beispiel #2
0
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)