Пример #1
0
class BoardControl(object):

    def __init__(self, sizex, sizey):

        self.sizex = sizex
        self.sizey = sizey
        self.view = BoardView(sizex,sizey,600,480)
        self.model = BoardModel(sizex,sizey)

        self.keyPressed = False
        #self.action()

    def action(self):

        self.waitInput = True
        self.bx = self.by = None

        while self.waitInput:
            for event in pygame.event.get():
                self.handleEvent(event)

    def handleEvent(self, event):

        if event.type == QUIT:
            self.triggerEnd()

        if event.type == MOUSEBUTTONDOWN:
            self.handleMouseButtonEvents(event)

        if event.type == KEYUP:
            self.keyPressed = False

        if event.type == KEYDOWN and not self.keyPressed:
            self.keyPressed = True
            self.handleKeyEvents(event)

    def handleKeyEvents(self, event):

        if event.key == pygame.K_ESCAPE or event.key == pygame.K_q:
            self.triggerEnd()

    def triggerEnd(self):
        exit()

    def handleMouseButtonEvents(self, event):

        (x,y) = event.pos
        (bx,by) = self.view.point2Box(x,y)

        #print "(x: %d, y: %d) -> (bx: %d, by: %d)" %(x,y,bx,by)

        if bx in range(self.sizex) and by in range(self.sizey):

            if event.button == 1:
                self.waitInput = False;
                self.bx = bx
                self.by = by

    def renderModel(self):

        for x in range(self.sizex):
            for y in range(self.sizey):
                cell = self.model.getPoint(x,y)
                if cell == 'W':
                    self.view.setBoxWhite(x,y)
                elif cell == 'B':
                    self.view.setBoxBlack(x,y)
                elif cell == 'w':
                    self.view.setCanMoveWhite(x,y)
                elif cell == 'b':
                    self.view.setCanMoveBlack(x,y)
                else:
                    self.view.unsetBox(x,y)

        self.view.update()

    def importModel(self,model):
        for y in range(self.sizey):
            for x in range(self.sizex):
                value = model[y*self.sizey+x] 
                if value == 'W' or value == 'B':
                    self.model.setPoint(x,y,value)
                else:
                    self.model.unsetPoint(x,y)
                    self.model.setPoint(x,y,value)

    def setCanMove(self, bx, by, turn):
        self.model.setPoint(bx-1,by-1, turn.lower())

    def cursorHand(self):
        self.view.cursorHand()

    def cursorWait(self):
        self.view.cursorWait()