示例#1
0
    def __init__(self, size):
        """Crea dos matrices de tamaño pasado por parámetro, una para estadísticas y otra para guardar el estado de las piedras. Creamos un set de piedras para ir guardando las piedras que estemos comprobando.  También inicializa un kifu para guardar la partida y un el objetos igs que se encargará de conectarse con el servidor que subirá la partida. 

        :Param size: tamaño del tablero
        :Type size: int """
        self.size = size
        # El valor 0 es para ir sumando(hay piedra) o restando(no hay)
        # El valor 8 es el nº de veces a buscar antes de hacer la estadística
        self.goban = [[None] * size for i in range(size)]
        self.statistical = [[[0, 8]] * size for i in range(size)]
        self.stones = set()
        self.kifu = Kifu()
        user = raw_input("Insert your user: "******"Insert your password: ")
        self.igs = Igs(user, password)
示例#2
0
文件: goban.py 项目: Virako/Rocamgo
    def __init__(self, size):
        """Crea dos matrices de tamaño pasado por parámetro, una para estadísticas y otra para guardar el estado de las piedras. Creamos un set de piedras para ir guardando las piedras que estemos comprobando.  También inicializa un kifu para guardar la partida y un el objetos igs que se encargará de conectarse con el servidor que subirá la partida. 

        :Param size: tamaño del tablero
        :Type size: int """
        self.size = size
        # El valor 0 es para ir sumando(hay piedra) o restando(no hay)
        # El valor 8 es el nº de veces a buscar antes de hacer la estadística
        self.goban = [[None] * size for i in range(size)]
        self.statistical = [[[0, 8]] * size for i in range(size)]
        self.stones = set()
        self.kifu = Kifu()
        user = raw_input("Insert your user: "******"Insert your password: ")
        self.igs = Igs(user, password)
示例#3
0
class Goban:
    """Clase tablero, contiene la matriz de estadíticas y funciones para rellenar el tablero. """
    def __init__(self, size):
        """Crea dos matrices de tamaño pasado por parámetro, una para estadísticas y otra para guardar el estado de las piedras. Creamos un set de piedras para ir guardando las piedras que estemos comprobando.  También inicializa un kifu para guardar la partida y un el objetos igs que se encargará de conectarse con el servidor que subirá la partida. 

        :Param size: tamaño del tablero
        :Type size: int """
        self.size = size
        # El valor 0 es para ir sumando(hay piedra) o restando(no hay)
        # El valor 8 es el nº de veces a buscar antes de hacer la estadística
        self.goban = [[None] * size for i in range(size)]
        self.statistical = [[[0, 8]] * size for i in range(size)]
        self.stones = set()
        self.kifu = Kifu()
        user = raw_input("Insert your user: "******"Insert your password: "******"""Recorremos la lista de piedras pasadas por parámetros para buscar hacer comprobaciones estadísticas en esas piedras, luego recorremos la lista de piedras guardada y la actualizamos. Actualiza kifu, igs y el tablero donde guardamos el estado de las piedras cuando detecta estadísticamente que una piedra se ha puesto.

        :Param stones: lista de piedras
        :Type stones: list """

        for st in stones:
            self.statistical[st.x][st.y][0] += 1
            self.statistical[st.x][st.y][1] -= 1
            values = self.statistical[st.x][st.y]
            if values[1] <= 0 and values[0] > 0:
                if self.goban[st.x][st.y] != True:
                    print "Add", st.x + 1, st.y + 1
                    # add kifu e igs
                    self.kifu.add_stone((st.x, st.y), st.color)
                    self.igs.add_stone((st.x, st.y))
                    self.statistical[st.x][st.y] = [0, 8]
                    self.goban[st.x][st.y] = True

        for st in self.stones.difference(stones):
            self.statistical[st.x][st.y][0] -= 1
            self.statistical[st.x][st.y][1] -= 1
            values = self.statistical[st.x][st.y]
            if values[1] <= 0 and values[0] > 0:
                if self.goban[st.x][st.y] != True:
                    print "Add", st.x + 1, st.y + 1
                    # add kifu e igs
                    self.kifu.add_stone((st.x, st.y), st.color)
                    self.igs.add_stone((st.x, st.y))
                    self.statistical[st.x][st.y] = [0, 8]
                    self.goban[st.x][st.y] = True
            elif values[1] <= 0 and values[0] > 0:
                self.statistical[st.x][st.y] = [0, 8]
                if self.goban[st.x][st.y] == True:
                    print "Piedra %d, %d quitada?." % (st.x, st.y)
                    # TODO comprobar piedras capturadas
                # falsa piedra
        self.stones.update(stones)

    def print_st(self):
        string = ""
        for x in range(self.size):
            for y in range(self.size):
                string += '%s' % str(self.statistical[y][x])
            string += "   " + str(x + 1) + "\n"
        return string

    def __str__(self):
        string = ""
        for x in range(self.size):
            for y in range(self.size):
                if self.goban[y][x] == BLACK:
                    string += " x "
                elif self.goban[y][x] == WHITE:
                    string += " o "
                elif not self.goban[y][x]:
                    string += " · "
            string += "   " + str(x + 1) + "\n"
        return string
示例#4
0
文件: goban.py 项目: Virako/Rocamgo
class Goban:
    """Clase tablero, contiene la matriz de estadíticas y funciones para rellenar el tablero. """

    def __init__(self, size):
        """Crea dos matrices de tamaño pasado por parámetro, una para estadísticas y otra para guardar el estado de las piedras. Creamos un set de piedras para ir guardando las piedras que estemos comprobando.  También inicializa un kifu para guardar la partida y un el objetos igs que se encargará de conectarse con el servidor que subirá la partida. 

        :Param size: tamaño del tablero
        :Type size: int """
        self.size = size
        # El valor 0 es para ir sumando(hay piedra) o restando(no hay)
        # El valor 8 es el nº de veces a buscar antes de hacer la estadística
        self.goban = [[None] * size for i in range(size)]
        self.statistical = [[[0, 8]] * size for i in range(size)]
        self.stones = set()
        self.kifu = Kifu()
        user = raw_input("Insert your user: "******"Insert your password: "******"""Recorremos la lista de piedras pasadas por parámetros para buscar hacer comprobaciones estadísticas en esas piedras, luego recorremos la lista de piedras guardada y la actualizamos. Actualiza kifu, igs y el tablero donde guardamos el estado de las piedras cuando detecta estadísticamente que una piedra se ha puesto.

        :Param stones: lista de piedras
        :Type stones: list """
        
        for st in stones:
            self.statistical[st.x][st.y][0] += 1
            self.statistical[st.x][st.y][1] -= 1
            values = self.statistical[st.x][st.y]
            if values[1] <= 0 and values[0] > 0: 
                if self.goban[st.x][st.y] != True:
                    print "Add", st.x+1, st.y+1 
                    # add kifu e igs
                    self.kifu.add_stone((st.x, st.y), st.color)
                    self.igs.add_stone((st.x, st.y))
                    self.statistical[st.x][st.y] = [0, 8]
                    self.goban[st.x][st.y] = True
            
        for st in self.stones.difference(stones):
            self.statistical[st.x][st.y][0] -= 1
            self.statistical[st.x][st.y][1] -= 1
            values = self.statistical[st.x][st.y]
            if values[1] <= 0 and values[0] > 0: 
                if self.goban[st.x][st.y] != True:
                    print "Add", st.x+1, st.y+1
                    # add kifu e igs
                    self.kifu.add_stone((st.x, st.y), st.color)
                    self.igs.add_stone((st.x, st.y))
                    self.statistical[st.x][st.y] = [0, 8]
                    self.goban[st.x][st.y] = True
            elif values[1] <= 0 and values[0] > 0:
                self.statistical[st.x][st.y] = [0, 8]
                if self.goban[st.x][st.y] == True:
                    print "Piedra %d, %d quitada?." %(st.x, st.y)
                    # TODO comprobar piedras capturadas
                # falsa piedra
        self.stones.update(stones)



    def print_st(self):
        string = ""
        for x in range(self.size):
            for y in range(self.size):
                string += '%s' %str(self.statistical[y][x])
            string += "   " + str(x+1) + "\n"
        return string
    

    def __str__(self):
        string = ""
        for x in range(self.size):
            for y in range(self.size):
                if self.goban[y][x] == BLACK:
                    string += " x "
                elif self.goban[y][x] == WHITE:
                    string += " o "
                elif not self.goban[y][x]:
                    string += " · "
            string += "   " + str(x+1) + "\n"
        return string