def update(self, ctx): x = ctx.getServerMsg().getX() y = ctx.getServerMsg().getY() ws = ctx.getServerMsg().getWhiteScore() bs = ctx.getServerMsg().getBlackScore() sendersays = ctx.getServerMsg().getSendersays() if x == -1 and y == -1: # First move of this client or illegal move of this client if ctx.getBoard().getOldSquare() == None: # First move ctx.getBoard().getPlayer().setPieceColor("* { background-color: rgb(255,255,255) }") # white ctx.getBoard().getOpponent().setPieceColor("* { background-color: rgb(0,0,0) }") # black ctx.setState(WF_USER()) ctx.getSignalEmitter().emitStatusBarText(sendersays) else: # Illegal move ctx.setState(WF_USER()) if ctx.getBoard().getOldSquare().getPiece() != None: # If there was a piece on the square ctx.getBoard().getSquare(ctx.getBoard().getOldSquare().getX(), ctx.getBoard().getOldSquare().getY()).setPiece(ctx.getBoard().getOldSquare().getPiece()) ctx.getSignalEmitter().emitMove(ctx.getBoard().getOldSquare().getX(), ctx.getBoard().getOldSquare().getY(), ctx.getBoard().getOldSquare().getPiece().getColor()) else: ctx.getBoard().getSquare(ctx.getBoard().getOldSquare().getX(), ctx.getBoard().getOldSquare().getY()).setPiece(ctx.getBoard().getOldSquare().getPiece()) ctx.getSignalEmitter().emitMove(ctx.getBoard().getOldSquare().getX(), ctx.getBoard().getOldSquare().getY(), "* { background-color: rgb(232,192,134) }") ctx.getSignalEmitter().emitStatusBarText(sendersays) else: # Legal move of opponent if ctx.getBoard().getOldSquare() == None: # The client sets the colors of players' pieces ctx.getBoard().getPlayer().setPieceColor("* { background-color: rgb(0,0,0) }") # black ctx.getBoard().getOpponent().setPieceColor("* { background-color: rgb(255,255,255) }") # white piece = Piece(ctx.getBoard().getOpponent().getPieceColor()) ctx.getBoard().addPiece(piece, x, y) ctx.setState(WF_USER()) ctx.getSignalEmitter().emitMove(x, y, piece.getColor()) ctx.getSignalEmitter().emitStatusBarText(sendersays) ctx.getSignalEmitter().emitWhiteScore(ws) ctx.getSignalEmitter().emitBlackScore(bs) ctx.getSignalEmitter().emitLastMove("(" + str(x) + ", " + str(y) + ")")
def move(self, ctx, x, y): piece = Piece(ctx.getBoard().getPlayer().getPieceColor()) ctx.getBoard().addPiece(piece, x, y) movepdu = MovePDU() movepdu.setX(x) movepdu.setY(y) ctx.fgpclient.send(movepdu) ctx.getSignalEmitter().emitMove(x, y, piece.getColor()) ctx.getSignalEmitter().emitStatusBarText("Waiting for move confirmation.") ctx.setState(WF_MOVE_CONFIRM()) ctx.fgpclient.listen()
def gameover(self, ctx): x = ctx.getServerMsg().getX() y = ctx.getServerMsg().getY() ws = ctx.getServerMsg().getWhiteScore() bs = ctx.getServerMsg().getBlackScore() sendersays = ctx.getServerMsg().getSendersays() if ctx.getBoard().isBoardFull() == False: piece = Piece(ctx.getBoard().getOpponent().getPieceColor()) ctx.getBoard().addPiece(piece, x, y) ctx.getSignalEmitter().emitMove(x, y, piece.getColor()) ctx.setState(IDLE()) ctx.getSignalEmitter().emitStatusBarText(sendersays) ctx.getSignalEmitter().emitWhiteScore(ws) ctx.getSignalEmitter().emitBlackScore(bs) ctx.getSignalEmitter().emitLastMove("(" + str(x) + ", " + str(y) + ")")