def save(self, path) -> Status:
        header = create_svg_header(self._display_dimensions)
        content = header + self._commands + '</svg>\n'

        status = Status(ok=True)
        try:
            with open(path, 'w') as svg_file:
                svg_file.write(content)
        except Exception as e:
            err_str = 'Error writing to {}: {}.'.format(path, str(e))
            status = Status(ok=False, err_str=err_str)
        return status
Пример #2
0
    def __init__(self, host, timeout, full_scan, gauge, output_window):
        threading.Thread.__init__(self)

        #pull the wx frame for the info box event
        self.output_window = output_window

        #creat messanger object for sending text to panel
        self.message = PanelMessage(output_window)

        #get gauge instance from gui
        self.gauge = gauge

        #get host
        self.host = host

        #boolean to indicate if the scan will do all ports or the smaller set
        self.full_scan = full_scan

        #queue to pass ports to threads
        self.queue = Queue.Queue()

        #empty array that will hold the list of open ports
        self.port_list = []

        #counter to caluclate ports scasnned per second
        self.count = 0

        #passed to threads, how long to wait on port response
        self.timeout = timeout

        #how many threads to run concurently
        self.threadcount = 200

        #list to contain all the threeads generated
        self.threads = []

        #range of ports to scan, set 9999 as default, but changed later if needed
        self.portrange = 9999

        #list of common ports for the shart scan
        self.common_ports = [
            20, 21, 22, 23, 79, 80, 110, 113, 119, 143, 443, 1002, 1720, 5000,
            8080
        ]

        #start Status object, pass actule number of ports to be scanned
        #change some variables depending on the type of scan chosen
        if self.full_scan == True:
            self.status = Status(self.portrange - 1, self.output_window)
        else:
            self.portrange = len(self.common_ports)
            self.status = Status(self.portrange, self.output_window)
            self.threadcount = self.portrange
Пример #3
0
    def __init__(self):
        self.config = Config()
        #self.client = pylxd.Client(endpoint=self.config['DEFAULT']['LXD_URL'], cert=(self.config['DEFAULT']['LXD_CERT'], self.config['DEFAULT']['LXD_KEY']), verify=False)
        self.client = pylxd.Client()
        #client.authenticate('ferrari')

        self.status = Status()
    def __init__(self):
        self._time_manager = TimeManager()
        self._params = Params()
        self._status = Status(self._params)
        self.log_time = time.time()
        self._pwm_read = PwmRead(
            self._params.pin_mode_in,
            self._params.pin_servo_in,
            self._params.pin_thruster_in,
            self._params.pin_or,
        )
        self._pwm_out = PwmOut(self._params.pin_servo_out,
                               self._params.pin_thruster_out)
        self._pid = PositionalPID()
        self._logger = Logger()
        self._logger.open()
        # Whether experienced OR mode or not
        self._or_experienced = False

        # setup for ina226
        print("Configuring INA226..")
        try:
            self.i_sensor = ina226(INA226_ADDRESS, 1)
            self.i_sensor.configure(
                avg=ina226_averages_t["INA226_AVERAGES_4"], )
            self.i_sensor.calibrate(rShuntValue=0.002, iMaxExcepted=1)
            self.i_sensor.log()
            print("Mode is " + str(hex(self.i_sensor.getMode())))
        except:
            print("Error when configuring INA226")

        time.sleep(1)

        print("Configuration Done")
Пример #5
0
def Main():
    d1 = datetime.datetime.now()

    lonelyMan = RenRenSpider()
    lonelyMan.login()
    userID = lonelyMan.getUserID()

    checkPaths(userID)
    checkPaths(ownerID=config.ownerID)

    albumList = AlbumList(userID, lonelyMan, ownerID=config.ownerID)
    albumList.work()

    status = Status(userID, lonelyMan, config.ownerID)
    status.work()

    bloglist = BlogList(userID, lonelyMan, config.ownerID)
    bloglist.work()

    gossip = Gossip(userID, lonelyMan, config.ownerID)
    gossip.work()

    repo = RepoMysql(userID, lonelyMan)
    repo.work()

    d2 = datetime.datetime.now()
    print 'all have been done, time: ', d2 - d1
Пример #6
0
    def __init__(self):
        self.state = State(0)
        self.params = Params()
        self.status = Status(self.params)
        self.sleep_time = 1
        self.pwm_read = PwmRead(
            self.params.pin_mode_in,
            self.params.pin_servo_in,
            self.params.pin_thruster_in,
            self.params.pin_OR,
        )
        self.pwm_out = PwmOut(self.params.pin_servo_out, self.params.pin_thruster_out)
        self.pid = PositionalPID()
        self.logger = Logger()
        self.logger.open()
        # Whether experienced OR mode or not
        self.or_experienced = False

        # setup for ina226
        print("Configuring INA226..")
        self.iSensor = ina226(INA226_ADDRESS, 1)
        self.iSensor.configure(
            avg=ina226_averages_t["INA226_AVERAGES_4"],
        )
        self.iSensor.calibrate(rShuntValue=0.002, iMaxExcepted=1)

        time.sleep(1)

        print("Configuration Done")

        current = self.iSensor.readShuntCurrent()

        print("Current Value is " + str(current) + "A")

        print("Mode is " + str(hex(self.iSensor.getMode())))
Пример #7
0
 def update_contacts(self):
     self._contacts = [
         DummyContact(
             self, 'Echo', 'echo',
             'http://beanies.vn/wp-content/uploads/2014/05/belgian_waffle-1513470.jpg',
             Status(0, 'I will repeat your every message <3'))
     ]
     return True
Пример #8
0
 def __init__(self):
     self.state = State(0)
     self.params = Params()
     self.status = Status(self.params)
     self.sleep_time = 1
     self.pwm_read = PwmRead(self.params.pin_mode_in, self.params.pin_servo_in, self.params.pin_thruster_in)
     self.pwm_out = PwmOut(self.params.pin_servo_out, self.params.pin_thruster_out)
     self.pid = PositionalPID()
     self.logger = Logger()
     self.logger.open()
Пример #9
0
 def open(self, pab, devname):
     logger.info("open %s", devname)
     if mode(pab) == INPUT:
         if dataType(pab) == DISPLAY:
             if recordLength(pab) == 0 or recordLength(pab) == 80:
                 self.tipi_io.send([SUCCESS])
                 self.tipi_io.send([80])
                 self.tipiStatus = Status()
                 self.recordNo = 0
                 return
     self.tipi_io.send([EOPATTR])
Пример #10
0
 def __init__(self, columns, rows, max_iterations, alphabet, threshold_proportion, mutator_name):
     self.columns = columns
     self.rows = rows
     self.max_iterations = max_iterations
     self.alphabet = alphabet
     self.status = Status(max_iterations, rows, columns, len(alphabet))
     self.dataset = Dataset(rows= rows, cols = columns, alphabet=alphabet)
     self.data = self.dataset.get_data()
     if mutator_name == 'RandomFlip':
         self.mutator = RandomFlip(self.dataset, 0.3)
     elif mutator_name == 'Exponential':
         self.mutator = ExpMutator(self.dataset, 0.3)
Пример #11
0
    def __init__(self):
        self.config = Config()
        self.metaQ = Queue('pluto',
                           connection=Redis('windows', 6379, db=1),
                           default_timeout=1 * 3600)
        self.status = Status()

        client = pymongo.MongoClient(
            f"mongodb+srv://explorer:{self.config.MongoPass}@cluster0-eyzcm.mongodb.net/test?retryWrites=true&w=majority"
        )
        self.db = client.plutoQ
        self.cm = ContainerManager()
Пример #12
0
def getPosts(user,clean=True,maxPosts=100):
    try:
        userName = user.facebookId
        args = {}

        graph = GraphAPI(at)
        profile = graph.get_object(userName)
        posts = graph.get_connections(profile['id'], 'posts', **args)
        statuses = []
        lastUntil = ''
    
        for s in posts['paging']['next'].split('&'):
            if 'limit=' in s:
                args['limit'] = s.split('=')[1]
            if 'until=' in s:
                args['until'] = s.split('=')[1]
        while True:
            isBreak = False
            for data in posts['data']:
                if 'message' not in data:
                    continue
                smessage = str(data['message'].encode("utf-8")).replace('\\n', ' ').replace('\\r', '')[2:-1]
                if clean:
                    smessage = re.sub(r'https?:\/\/[^\s]*','',smessage, flags=re.MULTILINE)
                    smessage = re.sub(r'\\x..','',smessage, flags=re.MULTILINE)
                    smessage = re.sub(r'&amp;','and',smessage, flags=re.IGNORECASE)
                    smessage = re.sub(r'[\s\t]+',' ',smessage, flags=re.IGNORECASE)
                    smessage.replace('#','')

                if validPost(smessage):
                    st = Status()
                    st.statusText = smessage
                    st.id = data['id']
                    statuses.append(st)

            if len(statuses) > maxPosts:
                break
            posts = graph.get_connections(profile['id'], 'posts',**args)
            nargs = {}
            for s in posts['paging']['next'].split('&'):
                if 'limit=' in s:
                    nargs['limit'] = s.split('=')[1]
                if 'until=' in s:
                    nargs['until'] = s.split('=')[1]
            if nargs['until'] == args['until']:
                break
            else:
                args['limit'] = nargs['limit']
                args['until'] = nargs['until']
        return statuses
    except ConnectionError:
        return []
Пример #13
0
    def Put(self, write_options, key, value):
        assert isinstance(write_options, WriteOptions)
        assert isinstance(key, six.binary_type)
        assert isinstance(value, six.binary_type)

        status = Status()
        rocksdb_put(
                self.dbptr_internal,
                write_options.to_rocksdb_internal(),
                key, len(key),
                value, len(value),
                ctypes.byref(status.to_rocksdb_internal()))
        return status
Пример #14
0
    def Open(db_options, dbname):
        assert isinstance(db_options, DBOptions)
        assert isinstance(dbname, six.binary_type)

        status = Status()
        dbptr = rocksdb_open(
                db_options.to_rocksdb_internal(), 
                dbname,
                ctypes.byref(status.to_rocksdb_internal()))
        if dbptr:
            return DB(dbptr), status
        else:
            return None, status
Пример #15
0
    def __init__(self, security=None, status=Status(), ctaTemplate=None, controlRisk=None,
                 enableTrade=False, enableBuy=True, enableShort=True, frequency=None,
                 pricePosi_top = 0, pricePosi_bottom = 4,
                 jqDataAccount='13268108673', jqDataPassword='******'):
        futureMsg = fm.getFutureMsg(security)
        self.enableTrade = enableTrade
        self.enableBuy = enableBuy
        self.enableShort = enableShort
        self.ctaTemplate = ctaTemplate
        self.controlRisk = controlRisk
        self.status = status
        self.jqDataAccount = jqDataAccount
        self.jqDataPassword = jqDataPassword
        self.frequency = frequency

        self.dataRow = 100
        self.pricePosi_top = pricePosi_top
        self.pricePosi_bottom = pricePosi_bottom
        self.lastExeTime = None
        self.security = security
        self.pricePositions = []
        self.maxPosition = dao.readMaxPosition(security)
        self.duo_position = dao.readDuoPosition(security) # 多单持仓手数
        self.kong_position = dao.readKongPosition(security) # 空单持仓手数

        self.writeCtaLog('########################允许交易:' + str(self.enableTrade))
        self.writeCtaLog('########################开多:' + str(self.enableBuy))
        self.writeCtaLog('########################开空:' + str(self.enableShort))
        self.writeCtaLog('########################合约代码:' + str(self.security))
        self.writeCtaLog('########################多单持仓:' + str(self.duo_position))
        self.writeCtaLog('########################空单持仓:' + str(self.kong_position))
        self.writeCtaLog('########################最大持仓:' + str(self.maxPosition))
        self.writeCtaLog('########################策略级别:' + str(self.frequency))
        self.writeCtaLog('########################jqdata账号:' + str(self.jqDataAccount))

        self.dayStartTime = futureMsg['dayStartTime']
        self.dayEndTime = futureMsg['dayEndTime']
        self.noonStartTime = futureMsg['noonStartTime']
        self.noonEndTime = futureMsg['noonEndTime']
        self.afternoonStartTime = futureMsg['afternoonStartTime']
        self.afternoonEndTime = futureMsg['afternoonEndTime']
        try :
            self.nightStartTime = futureMsg['nightStartTime']
            self.nightEndTime = futureMsg['nightEndTime']
        except:
            self.nightStartTime = None
            self.nightEndTime = None

        self.isInit = True
        self.rate = 1
        self.openPrice = None
Пример #16
0
def dijkstra(graph, time_diff):
    ''' 
    Calculates the shortest path from a starting node to any other node in a given graph 
    using the Dijkstra algorithm and taking into account time tables.
    :param int graph.n_vertices: The number of nodes in the graph
    :param dict graph.edges: A dictionary with the form {(edge_start, edge_end): edge_weight}
    :param dict graph.neighbors: A dictionary with the form {node: [adjacent_nodes]}
    :param int graph.origin: The starting node in the graph
    '''
    if (graph.neighbors.get(graph.origin) is None):
        return [graph.origin], {graph.origin: 0}
    status = Status(graph)
    computeOriginNode(graph, status, time_diff)
    while status.priority_queue:
        computeNextNode(graph, status, time_diff) 
    return status.parents, status.weights
def run(size):
    status = Status(size, [[0 for x in range(size)] for y in range(size)])
    queen = Queen(size)
    i = 1
    check_set = 0
    while True:
        check_set = queen.set_queen(status)
        if check_set == size:
            """print the combination, set queen postion value is y-dir value
            queen number decremented and go back to previous status as normal"""
            status.return_comb()
            status.stat_arr[queen.pos_y][queen.pos_x] = queen.pos_y
            queen.number -= 1
            status.back_status(queen)
        elif check_set > 0:
            queen.move_queen(status)
        else:
            status.back_status(queen)
Пример #18
0
def work(userID, lonelyMan, i):

    checkPaths(ownerID=config.ownerID[i])

    albumList = AlbumList(userID, lonelyMan, ownerID=config.ownerID[i])
    albumList.work()

    status = Status(userID, lonelyMan, config.ownerID[i])
    status.work()

    bloglist = BlogList(userID, lonelyMan, config.ownerID[i])
    bloglist.work()

    gossip = Gossip(userID, lonelyMan, config.ownerID[i])
    gossip.work()

    repo = RepoMysql(userID, lonelyMan)
    repo.work()
Пример #19
0
def computegtmod(filename, weighted):
    fnetwork = 0
    #with open(filename+'_ml_network.pickle') as handle:
    #	fnetwork = pickle.load(handle)
    ml_network, layer, node_l, node_c, top, bot, couple, edge_l, edge_c, mu, commu = read_raw_network(
        filename, weighted)

    status = Status()
    status.layer = layer
    status.node_l = node_l
    status.node_c = node_c
    status.top = top
    status.bot = bot
    status.edge_l = edge_l
    status.edge_c = edge_c
    status.couple = couple
    status.mu = mu
    mod = __modularity(commu, status, ml_network)
    return mod, commu
Пример #20
0
    def Get(self, read_options, key):
        assert isinstance(read_options, ReadOptions)
        assert isinstance(key, six.binary_type)

        status = Status()
        vallen = ctypes.c_size_t()
        valptr = rocksdb_get(
                self.dbptr_internal,
                read_options.to_rocksdb_internal(),
                key, len(key),
                ctypes.byref(vallen),
                ctypes.byref(status.to_rocksdb_internal()))

        if not status.OK or not valptr:
            return None, status
        else:
            vt = ctypes.c_char * (vallen.value)
            res = ctypes.cast(valptr, ctypes.POINTER(vt))
            return res.contents.value, status
Пример #21
0
def getTweets(user,clean=True,includeRetweets=False,maxTweets=1000000,includeOtherMentions=True):
    twitter_access_token_key,twitter_access_token_secret,twitter_consumer_key,twitter_consumer_secret = Config.getTwitterKeys()
    api = TwitterAPI(twitter_access_token_key,twitter_access_token_secret, twitter_consumer_key, twitter_consumer_secret)

    tweets = []
    li = api.fetch_by_user_names(user.twitterId,clean = clean)
    
    while li is not None and len(li) > 0:
        if "errors" in li and li["errors"][0]["code"] == 88:
            return []
        for tweet in li:
            tweetText = str(tweet['text'].encode("utf-8")).replace('\\n', ' ').replace('\\r', '').strip()[2:-1]
            if not includeRetweets and tweetText.startswith('RT'):
                continue
            if not includeOtherMentions and "@" in tweet['text']:
                continue
            if clean:
                tweetText = re.sub(r'https?:\/\/[^\s]*','',tweetText, flags=re.MULTILINE)
                tweetText = re.sub(r'\\x..','',tweetText, flags=re.MULTILINE)
                tweetText = re.sub(r'&amp;','and',tweetText, flags=re.IGNORECASE)
                tweetText = re.sub(r'[\s\t]+',' ',tweetText, flags=re.IGNORECASE)
                tweetText.replace('#','')
                tweetText = re.sub('^\s*rt\s',' ',tweetText,flags=re.IGNORECASE)
                if not validTweet(tweetText):
                    continue
                
            st = Status()
            st.id = tweet['id']
            st.likes = tweet['favorite_count']
            st.shares = tweet['retweet_count']
            st.CreatedOn = tweet['created_at']
            st.statusType = 1
            st.statusText = tweetText
            st.language = tweet["lang"]

            tweets.append(st)
        minId = min(tweets,key=lambda p:p.id).id
        li = api.fetch_by_user_names(user.twitterId,id= minId - 1,clean = clean)
        if len(tweets) > maxTweets or li is None or len(li) < 10:
            break
    return tweets
Пример #22
0
 def opprett_statuser(self):     #Oppretter status-objekter
     try:
         status_info_string = self.hent_JSON("https://gbfs.urbansharing.com/oslobysykkel.no/station_status.json")
         updated_at = status_info_string['last_updated']
         statuser = status_info_string['data']['stations']
     except:
         self.funnet_feil("Kunne ikke opprette statuser. ")
         return
     if not statuser:
         funnet_feil("Ingen stasjoner funnet. ")
         return
     alle_statuser = []
     for status in statuser:
         try:
             ny_status = Status(updated_at, status['station_id'], status['is_installed'],
                                 + status['is_renting'], status['num_bikes_available'],
                                 + status['num_docks_available'], status['last_reported'], status['is_returning'])
             alle_statuser.append(ny_status)
         except:
             self.funnet_feil("Feil ved opprettelse av status. ")
     return alle_statuser
Пример #23
0
class _Game:
    __WIDTH = 64
    __HEIGHT = 24
    __NPLAYER = 6
    __normalWaitTime = 0
    __eventWaitTime = 0
    __eventTurn = False
    __nTurn = 0
    DEBUGMODE = False
    teamA = TeamA()
    teamB = TeamB()
    __score_a = 0
    __score_b = 0
    players = []
    playerOfTeamA = []
    playerOfTeamB = []
    ball = None
    ballOwner = None
    __screen = [[]]
    __statusA = Status()
    __statusB = Status()
    __orderA = Order()
    __orderB = Order()
    delay_time = 0

    # public _Game() {
    # 	this(1000, 500);
    # }

    def __init__(self, normalWaitTime=None, eventWaitTime=None):
        self.__normalWaitTime = normalWaitTime
        self.__eventWaitTime = eventWaitTime

    def run(self):
        self.initialize(0)
        #self.updateScr()
        self.__printScr()
        self.delay(self.delay_time)
        while True:
            self.__nTurn += 1
            self.clearScr()
            self.onetick()
            self.applyOrder(self.__orderA, self.__orderB)
            self.__printScr()
            goalCheck = self.__goalCheck()
            if goalCheck == 1:
                self.__eventTurn = True
                self.initialize(2)
            elif goalCheck == 2:
                self.__eventTurn = True
                self.initialize(1)
            if self.endCheck() == 1:
                print("endgame")
                if self.__score_a > self.__score_b: return 1
                elif self.__score_b > self.__score_a: return 2
                else: return 0
            if self.__eventTurn:
                self.delay(self.delay_time * 5)
                self.__eventTurn = False
            else:
                self.delay(self.delay_time)

    def initialize(self, starter):
        self.__screen = [[None for _ in range(self.__HEIGHT)]
                         for _ in range(self.__WIDTH)]
        self.playerOfTeamA = [None] * 6
        self.playerOfTeamA[0] = Player(0, ((self.__WIDTH - 1) / 2) - 25,
                                       self.__HEIGHT / 2 - 4, 30, 30, 40)
        self.playerOfTeamA[1] = Player(1, ((self.__WIDTH - 1) / 2) - 24,
                                       self.__HEIGHT / 2 - 2, 25, 40, 50)
        self.playerOfTeamA[2] = Player(2, ((self.__WIDTH - 1) / 2) - 23,
                                       self.__HEIGHT / 2, 20, 50, 35)
        self.playerOfTeamA[3] = Player(3, ((self.__WIDTH - 1) / 2) - 24,
                                       self.__HEIGHT / 2 + 2, 25, 40, 50)
        self.playerOfTeamA[4] = Player(4, ((self.__WIDTH - 1) / 2) - 25,
                                       self.__HEIGHT / 2 + 4, 30, 30, 40)
        self.playerOfTeamA[5] = Player(5, ((self.__WIDTH - 1) / 2) - 28,
                                       self.__HEIGHT / 2, 50, 50, 55)
        self.playerOfTeamB = [None] * 6
        self.playerOfTeamB[0] = Player(6, ((self.__WIDTH - 1) / 2) + 26,
                                       self.__HEIGHT / 2 - 4, 30, 30, 40)
        self.playerOfTeamB[1] = Player(7, ((self.__WIDTH - 1) / 2) + 25,
                                       self.__HEIGHT / 2 - 2, 25, 40, 50)
        self.playerOfTeamB[2] = Player(8, ((self.__WIDTH - 1) / 2) + 24,
                                       self.__HEIGHT / 2, 20, 50, 35)
        self.playerOfTeamB[3] = Player(9, ((self.__WIDTH - 1) / 2) + 25,
                                       self.__HEIGHT / 2 + 2, 25, 40, 50)
        self.playerOfTeamB[4] = Player(10, ((self.__WIDTH - 1) / 2) + 26,
                                       self.__HEIGHT / 2 + 4, 30, 30, 40)
        self.playerOfTeamB[5] = Player(11, ((self.__WIDTH - 1) / 2) + 29,
                                       self.__HEIGHT / 2, 50, 50, 55)

        self.players = [None] * 12
        for i in range(12):
            if i < 6: self.players[i] = self.playerOfTeamA[i]
            else: self.players[i] = self.playerOfTeamB[i - 6]
        if starter == 0:
            self.__score_a = 0
            self.__score_b = 0
            self.__nTurn = 0
            if self.__throwCointWithProbability(50):
                self.ball = Ball(self.playerOfTeamA[2].x,
                                 self.playerOfTeamA[2].y)
                self.ballOwner = self.playerOfTeamA[2]
                self.playerOfTeamA[2].getBall(self.ball)
            else:
                self.ball = Ball(self.playerOfTeamB[2].x,
                                 self.playerOfTeamB[2].y)
                self.ballOwner = self.playerOfTeamB[2]
                self.playerOfTeamB[2].getBall(self.ball)
        elif starter == 1:
            self.ball = Ball(self.playerOfTeamA[2].x, self.playerOfTeamA[2].y)
            self.ballOwner = self.playerOfTeamA[2]
            self.playerOfTeamA[2].getBall(self.ball)
        elif starter == 2:
            self.ball = Ball(self.playerOfTeamB[2].x, self.playerOfTeamB[2].y)
            self.ballOwner = self.playerOfTeamB[2]
            self.playerOfTeamB[2].getBall(self.ball)

        for p in self.players:
            self.__screen[int(p.x)][int(p.y)] = p

    def onetick(self):
        ballOwner = -1 if self.ballOwner == None else self.ballOwner.getId()
        self.__statusA.setStatus(self.generateUnitInfo(False), ballOwner,
                                 self.__nTurn)
        self.teamA.execute(self.__statusA, self.__orderA)
        ballOwnerForB = 0
        if ballOwner == -1: ballOwnerForB = -1
        elif ballOwner < 6: ballOwnerForB = ballOwner + 6
        else: ballOwnerForB = ballOwner - 6
        self.__statusB.setStatus(self.generateUnitInfo(False), ballOwnerForB,
                                 self.__nTurn)
        self.teamB.execute(self.__statusB, self.__orderB)
        # // debug
        # // for (int i = 0; i < 6; i++) {
        # // System.out.println((char) ('a' + i) + ":(" + orderA.dx[i] + "," +
        # // orderA.dy[i] + ")\t" + (char) ('1' + i)
        # // + ":(" + orderB.dx[i] + "," + orderB.dy[i] + ")");
        # // }
    def generateUnitInfo(self, mirror):
        result = [None] * 13
        #teamB
        if mirror:
            result[0] = Unit(self.ball, True)
            for i in range(1, 13):
                if i <= 6: result[i] = Unit(self.playerOfTeamB[i - 1], True)
                else: result[i] = Unit(self.playerOfTeamA[i - 7], True)
        #teamA
        else:
            result[0] = Unit(self.ball)
            for i in range(1, 13):
                if i <= 6: result[i] = Unit(self.playerOfTeamA[i - 1])
                else: result[i] = Unit(self.playerOfTeamB[i - 7])
        return result

    #main process
    def applyOrder(self, oa, obr):
        ob = Order(obr, True)
        #move하기 전에 좌표를 none처리 필요해보임 edit**************
        for p in self.playerOfTeamA:
            p.move(oa.dx[p.getNumber()], oa.dy[p.getNumber()])
            self.__screen[int(p.x)][int(p.y)] = p
            # if oa.dx[p.getNumber()]!=0 or oa.dy[p.getNumber()]!=0:
            # 	self.__screen[int(p.x)][int(p.y)]=None
            # 	p.move(oa.dx[p.getNumber()],oa.dy[p.getNumber()])
            # 	self.__screen[int(p.x)][int(p.y)] = p
        for p in self.playerOfTeamB:
            p.move(ob.dx[p.getNumber()], ob.dy[p.getNumber()])
            self.__screen[int(p.x)][int(p.y)] = p
            # if ob.dx[p.getNumber()]!=0 or ob.dy[p.getNumber()]!=0:
            # 	self.__screen[int(p.x)][int(p.y)]=None
            # 	p.move(ob.dx[p.getNumber()], ob.dy[p.getNumber()])
            # 	self.__screen[int(p.x)][int(p.y)] = p
        self.__contendCheck()
        self.__passCheck()
        self.__ballCheck()

    def __contendCheck(self):
        for i in range(self.__NPLAYER * 2):
            contendingPlayers = []
            for j in range(i + 1, self.__NPLAYER * 2):
                if self.players[i].isSamePositionWith(self.players[j]):
                    contendingPlayers.append(self.players[j])
            if len(contendingPlayers) >= 1:
                contendingPlayers.append(self.players[i])
                self.contend(contendingPlayers)

    def contend(self, players):
        rlength = 0
        winner = -1
        for p in players:
            rlength += p.getStrength()
        if rlength == 0: winner = self.getRandom(0, len(players) - 1)
        else:
            r = self.getRandom(0, rlength - 1)
            rm = rM = 0
            for i in range(len(players)):
                rM += players[i].getStrength()
                if r >= rm and r < rM:
                    winner = i
                    break
                rm = rM

        wx = int(players[winner].x)
        wy = int(players[winner].y)
        for i in range(len(players)):
            if i == winner:
                players[i].winContending()
                self.__screen[wx][wy] = players[i]
            #공 날라감
            #공이 날라가는 좌표는 None이 아니여도 된다 수정 필요해보임*******************, ball.fly2함수 필요해보임 **
            else:
                if players[i].isBallOwner():
                    ix = wx + self.getRandom(-3, 3)
                    iy = wy + self.getRandom(-3, 3)
                    while (ix < 0 or ix >= self.__WIDTH or iy < 0
                           or iy >= self.__HEIGHT) or (
                               self.__screen[int(ix)][int(iy)] != None):
                        ix = wx + self.getRandom(-3, 3)
                        iy = wy + self.getRandom(-3, 3)
                    # self.ball.fly2(ix, iy)
                    self.ballOwner = None

                ix = int(wx + self.getRandom(-3, 3))
                iy = int(wy + self.getRandom(-3, 3))
                count = 0
                while (ix < 0 or ix >= self.__WIDTH or iy < 0
                       or iy >= self.__HEIGHT) or (
                           self.__screen[int(ix)][int(iy)] != None):
                    count += 1
                    ix = int(wx + self.getRandom(-3, 3))
                    iy = int(wy + self.getRandom(-3, 3))
                self.__screen[int(ix)][int(iy)] = players[i]
                if self.DEBUGMODE:
                    print(f' player {i} is intend to go to {ix}, {iy}')
                #apply stamina, set position, ballowner false
                players[i].loseContending(ix, iy)

    def __passCheck(self):
        if self.ballOwner != None:
            passtarget = None
            if (
                    self.ballOwner.getId() >= 0 and self.ballOwner.getId() < 6
            ) and self.__orderA.passto >= 0 and self.ballOwner != self.playerOfTeamA[
                    self.__orderA.passto]:
                passtarget = self.playerOfTeamA[self.__orderA.passto]
            elif (
                    self.ballOwner.getId() >= 6 and self.ballOwner.getId() < 12
            ) and self.__orderB.passto >= 0 and self.ballOwner != self.playerOfTeamB[
                    self.__orderB.passto]:
                passtarget = self.playerOfTeamB[self.__orderB.passto]
            else:
                return

            if self.DEBUGMODE:
                print(
                    f' pass from {self.ballOwner.getId()} to {passtarget.getId()} '
                )
            #같은 x선 좌표에 있을경우
            m = n = 0
            if self.ballOwner.getX() == passtarget.getX():
                yV = int((passtarget.getY() - self.ballOwner.getY()) /
                         abs(passtarget.getY() - self.ballOwner.getY()))
                i = int(self.ballOwner.getY())
                while i != passtarget.getY() - yV:
                    i += yV
                    if (self.__screen[self.ballOwner.getX()][i] != None):
                        #intercepted by screen[ballOwner.x][i]
                        print("intercepted!!!")
                        self.ballOwner.throwBall()
                        interceptPlayer = self.__screen[
                            self.ballOwner.getX()][i]
                        interceptPlayer.getBall(self.ball)
                        self.ballOwner = interceptPlayer
                        return
                # ballowner의 y좌표가 passtarget의 y좌표가 작을 경우만 고려되어있음 수정필요 (**********************)
                # for i in range(self.ballOwner.getY()+ yV, passtarget.getY()-yV,yV):
                # 	if self.__screen[self.ballOwner.getX()][i]!=None:
                # 		print('intercepted')
                # 		self.ballOwner.throwBall()
                # 		interceptPlayer= self.__screen[self.ballOwner.getX()][i]
                # 		interceptPlayer.getBall(self.ball)
                # 		self.ballOwner=interceptPlayer
                # 		return
                # ?? Ballowner가 passtarget보다 큰 경우가 있어 수정이 필요
            #대각선 혹은 y좌표가 같을경우
            else:
                m = (self.ballOwner.getY() - passtarget.getY()) / (
                    self.ballOwner.getX() - passtarget.getX())
                n = self.ballOwner.getY() - m * self.ballOwner.getX()
                xV = int((passtarget.getX() - self.ballOwner.getX()) /
                         abs(passtarget.getX() - self.ballOwner.getX()))
                i = self.ballOwner.getX() + xV
                while i != passtarget.getX():
                    i += xV
                    fi = int(m * i + n + 0.4)
                    if self.__screen[int(i)][int(fi)] != None:
                        print("intercepted!!!")
                        self.ballOwner.throwBall()
                        interceptPlayer = self.__screen[int(i)][int(fi)]
                        interceptPlayer.getBall(self.ball)
                        self.ballOwner = interceptPlayer
                        return
            #인터셉트 안당했을 경우 거리에 따라 다른 확률 적용
            d = self.ballOwner.getDistance(passtarget)
            if d > 5:
                r = self.getRandom(0, self.ballOwner.getPass() + d * 5 - 1)
                if r < self.ballOwner.getPass():
                    self.ballOwner.throwBall()
                    passtarget.getBall(self.ball)
                    self.ballOwner = passtarget
                else:
                    self.ballOwner.throwBall()
                    ix = passtarget.getX() + self.getRandom(-2, 2)
                    iy = passtarget.getY() + self.getRandom(-2, 2)
                    while (ix == passtarget.getX() and iy == passtarget.getY()
                           ) or (ix < 0 or ix >= self.__WIDTH or iy < 0
                                 or iy >= self.__HEIGHT):
                        ix = passtarget.getX() + self.getRandom(-2, 2)
                        iy = passtarget.getY() + self.getRandom(-2, 2)
                    self.ball.fly2(ix, iy)
                    self.ballOwner = None
            else:
                self.ballOwner.throwBall()
                passtarget.getBall(self.ball)
                self.ballOwner = passtarget

    def __ballCheck(self):
        if self.ballOwner != None: self.ball.dribbled(self.ballOwner)
        else:
            if self.__screen[self.ball.getX()][self.ball.getY()] != None:
                self.ballOwner = self.__screen[self.ball.getX()][
                    self.ball.getY()]
                self.ballOwner.getBall(self.ball)

    def getRandom(self, m, n):
        d = int(abs(m - n) + 1)
        return int(random() * d) + m

    def __throwCointWithProbability(self, probability):
        if probability < 0 or probability > 100:
            print('probability error')
            return False
        r = int(random() * 100)
        if r < probability: return True
        else: return False

    def __printScr(self):
        # if self.ballOwner==None: self.__screen[int(self.ball.x)][int(self.ball.y)]=self.ball
        print(f' Score {self.__score_a}: {self.__score_b} ')
        print(f' Turn: {self.__nTurn}')
        print(
            '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'
        )
        for i in range(self.__HEIGHT):
            print_list = list()
            if i < self.__HEIGHT / 2 - 5 or i >= self.__HEIGHT / 2 + 5:
                print('%', end='')
            else:
                print(" ", end='')
            for j in range(self.__WIDTH):
                if self.__screen[j][i] == None: print_list.append(" ")
                else:
                    if self.__screen[j][i].getId(
                    ) >= 0 and self.__screen[j][i].getId() < 6:
                        print_list.append(
                            chr(ord('a') + self.__screen[j][i].getNumber()))
                    elif self.__screen[j][i].getId(
                    ) >= 6 and self.__screen[j][i].getId() < 12:
                        print_list.append(
                            str(1 + self.__screen[j][i].getNumber()))
            print("".join(print_list), end='')
            if i < self.__HEIGHT / 2 - 5 or i >= self.__HEIGHT / 2 + 5:
                print('%')
            else:
                print(" ")
        print(
            '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'
        )
        os.system('cls')

    def clearScr(self):
        # line=5
        # if self.DEBUGMODE==False: line+=10
        # for i in range(line):
        # 	print(" ")
        # print("\033[H\033[2J")
        os.system('cls')
        sys.stdout.flush()
        self.__screen = [[None for _ in range(self.__HEIGHT)]
                         for _ in range(self.__WIDTH)]

    def __goalCheck(self):
        if self.ballOwner != None:
            if self.ballOwner.getId() >= 0 and self.ballOwner.getId() < 6:
                if self.ballOwner.getX() == self.__WIDTH - 1 and (
                        self.ballOwner.getY() >= self.__HEIGHT / 2 - 5
                        and self.ballOwner.getY() < self.__HEIGHT / 2 + 5):
                    self.__score_a += 1
                    return 1
            elif self.ballOwner.getId() >= 6 and self.ballOwner.getId() < 12:
                if self.ballOwner.getX() == 0 and (
                        self.ballOwner.getY() >= self.__HEIGHT / 2 - 5
                        and self.ballOwner.getY() < self.__HEIGHT / 2 + 5):
                    self.__score_b += 1
                    return 2
        return -1

    def endCheck(self):
        if self.__nTurn >= 1000: return 1
        else: return 0

    def delay(self, n):
        try:
            time.sleep(n)
        except:
            traceback.print_exc()
Пример #24
0
class Game:
    __WIDTH = 64
    __HEIGHT = 24
    __NPLAYER = 6
    __normalWaitTime = 0
    __eventWaitTime = 0
    __eventTurn = False
    __nTurn = 0
    DEBUGMODE = False
    teamA = TeamA()
    teamB = TeamB()
    __score_a = 0
    __score_b = 0
    players = []
    playerOfTeamA = []
    playerOfTeamB = []
    ball = None
    ballOwner = None
    __screen = [[]]
    __statusA = Status()
    __statusB = Status()
    __orderA = Order()
    __orderB = Order()
    delay_time = 0

    # public _Game() {
    # 	this(1000, 500);
    # }
    def __init__(self, normalWaitTime, eventWaitTime):
        self.__normalWaitTime = normalWaitTime
        self.__eventWaitTime = eventWaitTime
        self.__eventTurn = False
        self.__nTurn = 0
        self.teamA = TeamA()
        self.teamB = TeamB()
        self.__score_a = 0
        self.__score_b = 0

    def run(self):
        self.__initialize(0)
        self.__printScr()
        self.__delay(self.delay_time)
        while True:
            self.__nTurn += 1
            self.clearScr()
            self.onetick()
            self.__applyOrder(self.__orderA, self.__orderB)
            self.__printScr()
            goalCheck = self.goalCheck()
            if goalCheck == 1:
                self.__eventTurn = True
                self.__initialize(2)
            elif goalCheck == 2:
                self.__eventTurn = True
                self.__initialize(1)

            if self.__endCheck() == 1:
                print("end game")
                if self.__score_a > self.__score_b: return 1
                elif self.__score_b > self.__score_a: return 2
                else: return 0
            if self.__eventTurn:
                self.__delay(self.delay_time * 5)
                self.__eventTurn = False
            else:
                self.__delay(self.delay_time)

    def __initialize(self, starter):
        self.__screen = [[None for _ in range(self.__HEIGHT)]
                         for _ in range(self.__WIDTH)]
        self.playerOfTeamA = [0] * 6
        self.playerOfTeamA[0] = Player(0, ((self.__WIDTH - 1) / 2) - 25,
                                       self.__HEIGHT / 2 - 4, 30, 30, 40)
        self.playerOfTeamA[1] = Player(1, ((self.__WIDTH - 1) / 2) - 24,
                                       self.__HEIGHT / 2 - 2, 25, 40, 50)
        self.playerOfTeamA[2] = Player(2, ((self.__WIDTH - 1) / 2) - 23,
                                       self.__HEIGHT / 2, 20, 50, 35)
        self.playerOfTeamA[3] = Player(3, ((self.__WIDTH - 1) / 2) - 24,
                                       self.__HEIGHT / 2 + 2, 25, 40, 50)
        self.playerOfTeamA[4] = Player(4, ((self.__WIDTH - 1) / 2) - 25,
                                       self.__HEIGHT / 2 + 4, 30, 30, 40)
        self.playerOfTeamA[5] = Player(5, ((self.__WIDTH - 1) / 2) - 28,
                                       self.__HEIGHT / 2, 50, 50, 55)
        self.playerOfTeamB = [0] * 6
        self.playerOfTeamB[0] = Player(6, ((self.__WIDTH - 1) / 2) + 26,
                                       self.__HEIGHT / 2 - 4, 30, 30, 40)
        self.playerOfTeamB[1] = Player(7, ((self.__WIDTH - 1) / 2) + 25,
                                       self.__HEIGHT / 2 - 2, 25, 40, 50)
        self.playerOfTeamB[2] = Player(8, ((self.__WIDTH - 1) / 2) + 24,
                                       self.__HEIGHT / 2, 20, 50, 35)
        self.playerOfTeamB[3] = Player(9, ((self.__WIDTH - 1) / 2) + 25,
                                       self.__HEIGHT / 2 + 2, 25, 40, 50)
        self.playerOfTeamB[4] = Player(10, ((self.__WIDTH - 1) / 2) + 26,
                                       self.__HEIGHT / 2 + 4, 30, 30, 40)
        self.playerOfTeamB[5] = Player(11, ((self.__WIDTH - 1) / 2) + 29,
                                       self.__HEIGHT / 2, 50, 50, 55)
        self.players = [0] * 12

        for i in range(len(self.players)):
            if i < 6: self.players[i] = self.playerOfTeamA[i]
            else: self.players[i] = self.playerOfTeamB[i - 6]

        if starter == 0:
            self.__score_a = 0
            self.__score_b = 0
            self.__nTurn = 0
            if self.__throwCoinWithProbability(50):
                self.ball = Ball(self.playerOfTeamA[2].x,
                                 self.playerOfTeamA[2].y)
                self.ballOwner = self.playerOfTeamA[2]
                self.playerOfTeamA[2].getBall(self.ball)
            else:
                self.ball = Ball(self.playerOfTeamB[2].x,
                                 self.playerOfTeamB[2].y)
                self.ballOwner = self.playerOfTeamB[2]
                self.playerOfTeamB[2].getBall(self.ball)
        elif starter == 1:
            self.ball = Ball(self.playerOfTeamA[2].x, self.playerOfTeamA[2].y)
            self.ballOwner = self.playerOfTeamA[2]
            self.playerOfTeamA[2].getBall(self.ball)
        elif starter == 2:
            self.ball = Ball(self.playerOfTeamB[2].x, self.playerOfTeamB[2].y)
            self.ballOwner = self.playerOfTeamB[2]
            self.playerOfTeamB[2].getBall(self.ball)

        for p in self.players:
            self.__screen[int(p.x)][int(p.y)] = p

    def onetick(self):
        ballOwner = -1 if self.ballOwner == None else self.ballOwner.getId()
        self.__statusA.setStatus(self.__generateUnitInfo(False), ballOwner,
                                 self.__nTurn)
        self.teamA.execute(self.__statusA, self.__orderA)
        ballOwnerForB = 0
        if ballOwner == -1: ballOwnerForB = -1
        elif ballOwner < 6: ballOwnerForB = ballOwner + 6
        else: ballOwnerForB = ballOwner - 6
        self.__statusB.setStatus(self.__generateUnitInfo(False), ballOwnerForB,
                                 self.__nTurn)
        self.teamB.execute(self.__statusB, self.__orderB)

    def __generateUnitInfo(self, mirror):
        result = [0] * 13
        if mirror:
            result[0] = Unit(self.ball, True)
            for i in range(1, 13):
                if i <= 6: result[i] = Unit(self.playerOfTeamB[i - 1], True)
                else: result[i] = Unit(self.playerOfTeamA[i - 7], True)
        else:
            result[0] = Unit(self.ball)
            for i in range(1, 13):
                if i <= 6: result[i] = Unit(self.playerOfTeamA[i - 1])
                else: result[i] = Unit(self.playerOfTeamB[i - 7])
        return result

    def __applyOrder(self, oa, obr):
        ob = Order(obr, True)
        for p in self.playerOfTeamA:
            p.move(oa.dx[p.getNumber()], oa.dy[p.getNumber()])
            self.__screen[int(p.x)][int(p.y)] = p
        for p in self.playerOfTeamB:
            p.move(ob.dx[p.getNumber()], ob.dy[p.getNumber()])
            self.__screen[int(p.x)][int(p.y)] = p
        self.__contendCheck()
        self.__passCheck()
        self.__ballCheck()

    def __contendCheck(self):
        for i in range(self.__NPLAYER * 2):
            contendingPlayers = []
            for j in range(i + 1, self.__NPLAYER * 2):
                if self.players[i].isSamePositionWith(self.players[j]):
                    contendingPlayers.append(self.players[j])
            if len(contendingPlayers) >= 1:
                contendingPlayers.append(self.players[i])
                self.__contend(contendingPlayers)

    def __contend(self, players):
        rlength = 0
        winner = -1
        for p in players:
            rlength += p.getStrength()
        if rlength == 0:
            winner = self.getRandom(0, len(players) - 1)
        else:
            r = self.getRandom(0, rlength - 1)
            rm = rM = 0
            for i in range(len(players)):
                rM += players[i].getStrength()
                if r >= rm and r < rM:
                    winner = i
                    break
                rm = rM
        wx = int(players[winner].x)
        wy = int(players[winner].y)
        for i in range(len(players)):
            if i == winner:
                players[i].winContending()
                self.__screen[wx][wy] = self.players[i]
            else:
                if players[i].isBallOwner():
                    ix = wx + self.getRandom(-3, 3)
                    iy = wy + self.getRandom(-3, 3)
                    #screen!=none이여야 하나? ^^^^^^^^^^^^^^^^^^^^
                    while (ix < 0 or ix >= self.__WIDTH or iy < 0
                           or iy >= self.__HEIGHT
                           ) or self.__screen[int(ix)][int(iy)] != None:
                        print("a")
                        ix = wx + self.getRandom(-3, 3)
                        iy = wy + self.getRandom(-3, 3)
                    self.ball.fly2(ix, iy)
                    self.ballOwner = None

                ix = int(wx + self.getRandom(-3, 3))
                iy = int(wy + self.getRandom(-3, 3))
                count = 0
                while (ix < 0 or ix >= self.__WIDTH or iy < 0
                       or iy >= self.__HEIGHT) or (
                           self.__screen[int(ix)][int(iy)] != None):
                    count += 1
                    ix = int(wx + self.getRandom(-3, 3))
                    iy = int(wy + self.getRandom(-3, 3))
                self.__screen[int(ix)][int(iy)] = players[i]

    def __passCheck(self):
        if self.ballOwner != None:
            passtarget = None
            if (
                    self.ballOwner.getId() >= 0 and self.ballOwner.getId() < 6
            ) and self.__orderA.passto >= 0 and self.ballOwner != self.playerOfTeamA[
                    self.__orderA.passto]:
                passtarget = self.playerOfTeamA[self.__orderA.passto]
            elif (
                    self.ballOwner.getId() >= 6 and self.ballOwner.getId() < 12
            ) and self.__orderB.passto >= 0 and self.ballOwner != self.playerOfTeamB[
                    self.__orderB.passto]:
                passtarget = self.playerOfTeamB[self.__orderB.passto]
            else:
                return
            m = n = 0
            if self.ballOwner.getX() == passtarget.getX():
                yV = int((passtarget.getY() - self.ballOwner.getY()) /
                         abs(passtarget.getY() - self.ballOwner.getY()))
                for i in range(self.ballOwner.getY(),
                               passtarget.getY() - yV, yV):
                    if self.__screen[int(
                            self.ballOwner.getX())][int(i)] != None:
                        print("intercepted")
                        self.ballOwner.throwBall()
                        interceptPlayer = self.__screen[int(
                            self.ballOwner.getX())][int(i)]
                        interceptPlayer.getBall(self.ball)
                        self.ballOwner = interceptPlayer
                        return
            else:
                m = (self.ballOwner.getY() - passtarget.getY()) / (
                    self.ballOwner.getX() - passtarget.getX())
                n = self.ballOwner.getY() - m * self.ballOwner.getX()
                xV = int((passtarget.getX() - self.ballOwner.getX()) /
                         abs(passtarget.getX() - self.ballOwner.getX()))
                i = int(self.ballOwner.getX() + xV)
                while i != passtarget.getX():
                    i += xV
                    fi = int(m * i + n + 0.4)
                    if self.__screen[int(i)][int(fi)] != None:
                        print("intercepted")
                        self.ballOwner.throwBall()
                        interceptPlayer = self.__screen[int(i)][int(fi)]
                        interceptPlayer.getBall(self.ball)
                        self.ballOwner = interceptPlayer
                        return
            d = int(self.ballOwner.getDistance(passtarget))
            if d > 5:
                r = self.getRandom(0, self.ballOwner.getPass() + d * 5 - 1)
                if r < self.ballOwner.getPass():
                    self.ballOwner.throwBall()
                    passtarget.getBall(self.ball)
                    self.ballOwner = passtarget
                #공이 날라갔을 경우
                else:
                    self.ballOwner.throwBall()
                    ix = passtarget.getX() + self.getRandom(-2, 2)
                    iy = passtarget.getY() + self.getRandom(-2, 2)
                    while (ix < 0 or ix > self.__WIDTH or iy < 0 or
                           iy >= self.__HEIGHT) or (ix == passtarget.getX() and
                                                    iy == passtarget.getY()):
                        ix = passtarget.getX() + self.getRandom(-2, 2)
                        iy = passtarget.getY() + self.getRandom(-2, 2)
                    self.ball.fly2(ix, iy)
                    self.ballOwner = None
            #pass 성공된 경우
            else:
                self.ballOwner.throwBall()
                passtarget.getBall(self.ball)
                self.ballOwner = passtarget

    def __ballCheck(self):
        if self.ballOwner != None:
            self.ball.dribbled(self.ballOwner)
        else:
            if self.__screen[self.ball.getX()][self.ball.getY()] != None:
                self.ballOwner = self.__screen[self.ball.getX()][
                    self.ball.getY()]
                self.ballOwner.getBall(self.ball)

    def getRandom(self, m, n):
        return int(random.randint(m, n))

    def __throwCoinWithProbability(self, probability):
        if probability < 0 or probability > 100:
            print("probability error")
            return False
        r = int(random.random() * 100)
        if r < probability: return True
        else: return False

    def __printScr(self):
        # if self.ballOwner==None: self.__screen[self.ball.x][self.ball.y]=self.ball
        print(f'Score: {self.__score_a} : {self.__score_b} ')
        print(f' Turn: {self.__nTurn}')

        print(
            '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'
        )
        for i in range(self.__HEIGHT):
            print_list = list()
            if i < self.__HEIGHT / 2 - 5 or i >= self.__HEIGHT / 2 + 5:
                print('%', end='')
            else:
                print(" ", end='')
            for j in range(self.__WIDTH):
                if self.__screen[j][i] == None: print_list.append(" ")
                else:
                    if self.__screen[j][i].getId(
                    ) >= 0 and self.__screen[j][i].getId() < 6:
                        print_list.append(
                            chr(ord('a') + self.__screen[j][i].getNumber()))
                    elif self.__screen[j][i].getId(
                    ) >= 6 and self.__screen[j][i].getId() < 12:
                        print_list.append(
                            str(1 + self.__screen[j][i].getNumber()))
            print("".join(print_list), end='')
            if i < self.__HEIGHT / 2 - 5 or i >= self.__HEIGHT / 2 + 5:
                print('%')
            else:
                print(" ")
        print(
            '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'
        )
        os.system('cls')

    def clearScr(self):
        # System.out.println("\033[H\033[2J");
        # System.out.flush();
        self.__screen = [[None for _ in range(self.__HEIGHT)]
                         for _ in range(self.__WIDTH)]
        sys.stdout.flush()

    def goalCheck(self):
        if self.ballOwner != None:
            if self.ballOwner.getId() >= 0 and self.ballOwner.getId() < 6:
                if self.ballOwner.getX(
                ) == self.__WIDTH - 1 and self.ballOwner.getY(
                ) >= self.__HEIGHT / 2 - 5 and self.ballOwner.getY(
                ) < self.__HEIGHT / 2 + 5:
                    self.__score_a += 1
                    return 1
            elif self.ballOwner.getId() >= 6 and self.ballOwner.getId() < 12:
                if self.ballOwner.getX() == 0 and (
                        self.ballOwner.getY() >= self.__HEIGHT / 2 - 5
                        and self.ballOwner.getY() < self.__HEIGHT / 2 + 5):
                    self.__score_b += 1
                    return 2
        return -1

    def __endCheck(self):
        if self.__nTurn < 1000: return 0
        elif self.__nTurn == 1000: return 1

    def __delay(self, n):
        try:
            time.sleep(n)
        except:
            traceback.print_exc()
Пример #25
0
 def run_script(self, script_id):
     """ Runs script on this Server. """
     href = self.href + "/run_script"
     params = {'right_script': script_id}
     response, content = self.rsapi.request(href, params, method="POST")
     return Status(response.get('location'), self.rsapi)
Пример #26
0
 def __init__(self, client):
     self.client = client
     self._contacts = []
     self.send_status(Status())
     self.update_contacts()
Пример #27
0
    def __init__(self,
                 data,
                 chunk_size,
                 hosts,
                 niceness,
                 slave_script,
                 show_output=0,
                 result=None,
                 redistribute=1,
                 verbose=1):
        """
        @param data: dict of items to be proessed {id:object}.
        @type  data: dict
        @param chunk_size: number of items that are processed by a job
        @type  chunk_size: int
        @param hosts: list of host-names
        @type  hosts: [str]
        @param niceness: nice dictionary [host-name: niceness]
        @type  niceness: dict
        @param slave_script: absolute path to slave-script
        @type  slave_script: str
        @param result: items which have already been processed
                       (ie. they are contained in result) are not
                       processed again.
        @type  result: dict
        @param redistribute: at the end, send same job out several times
                             (default: 1)
        @type  redistribute: 1|0
        @param verbose: verbosity level (default: 1)
        @type  verbose: 1|0
        """
        PVMMasterSlave.__init__(self, verbose=verbose)

        ## change names of multiple hosts
        d = {}

        for host in hosts:
            if host in d:
                d[host] += 1
            else:
                d[host] = 1

        unique_list = []

        for host, number in d.items():
            if number > 1:

                for i in range(number):
                    nickname = host + '_%d' % i

                    d = {'host': host, 'nickname': nickname}

                    unique_list.append(d)
            else:
                d = {'host': host, 'nickname': host}

                unique_list.append(d)

        exe = ExeConfigCache.get('xterm')
        exe.validate()
        self.xterm_bin = exe.bin

        self.hosts = unique_list
        self.niceness = niceness
        self.data = data
        self.slave_script = slave_script
        self.chunk_size = chunk_size

        self.current_pos = 0
        self.show_output = show_output

        self.verbose = verbose

        if result is None:
            result = {}

        self.result = result

        ## set-up status for results
        items = []

        for key in data.keys():
            if not key in self.result:
                items.append(key)

        self.status = Status(items, redistribute=redistribute)

        self.__finished = 0

        if verbose: print 'Processing %d items ...' % len(items)
Пример #28
0
    )
    zombie_slums.reset()
    ## Default Theme Reset
    default = Default('Default Theme', 'Default', 'Default', 'Default')
    default.set_theme()

## Prints the user_map_name
if args.user_map_name:
    print(args.user_map_name + "added to our directory")

if args.list:
    list = List()
    list.print_list()

if args.status:
    status = Status()
    status.display_status()

if args.arg_mod == 'ugx_mod_1_0_4':
    ugx = Ugx104('UGX Mod 1.0.4', 'http://www.ugx-mods.com',
                 'http://ugx-mods.com/forum/index.php?topic=537.0')
    ugx.install()

elif args.arg_mod == 'waw_modtools':
    wawmodtools = WawModtools('WaW Modtools',
                              'http://www.callofduty.gamefront.com/',
                              'http://callofduty.filefront.com/file/;95890')
    wawmodtools.install()

elif args.arg_mod == 'black_ops_perks':
    blackopsperks = BlackopsPerks(
Пример #29
0
def getSeries(filename, weighted):
    '''network_name = "networks_low_couple/" + filename.split('/')[-1]

	# commented code block 	
		fp=open(network_name,'r')
		line=fp.readline()
		line=line.rstrip()
		n_layer=int(line)
		layer={}
		node_l={}
		l_ID=1
		edge_l={}
		edge_c={}
		# f_el = open(filename+'_edges_list_commod'+str(g), 'w')
		for i in range(0,n_layer):
			line=fp.readline()
			line=line.rstrip()
			line=line.split()
			layer[l_ID]=set()
			##print line
			for n in line:
				layer[l_ID].add(int(n))
			line=fp.readline()
			line=int(line.rstrip())
			n_edge=line
			##print n_edge
			edge_l[l_ID]=n_edge
			for j in range(0,n_edge):
				line=fp.readline()
				line=line.rstrip()
				line=line.split()
				n1=int(line[0])
				n2=int(line[1]) 
				if n1 not in node_l:
					node_l[n1]=set()
				node_l[n1].add(n2)	  
				if n2 not in node_l:
					node_l[n2]=set()
				node_l[n2].add(n1)
				# f_el.write(str(n1-1)+' '+str(n2-1)+'\n')

			l_ID+=1
			
		line=fp.readline()
		line=line.rstrip()
		n_couple=int(line)
		##print n_couple
		node_c={}	   
		top={}
		bot={}
		c_ID=1
		couple={}

		for i in range(0,n_couple):
			line=fp.readline()
			##print line
			line=line.rstrip()
			line=line.split()
			top[c_ID]=int(line[0])
			bot[c_ID]=int(line[1])
			
			couple[c_ID]=layer[top[c_ID]].union(layer[bot[c_ID]])
			
			line=fp.readline()
			line=int(line.rstrip())
			n_edge=line
			##print n_edge
			edge_c[c_ID]=n_edge
			count_edge = 0
			for j in range(0,n_edge):
				line=fp.readline()
				line=line.rstrip()
				line=line.split()
				n1=int(line[0])
				n2=int(line[1])
				if n1 not in node_c:
					node_c[n1]=set()
				node_c[n1].add(n2)
				if n2 not in node_c:
					node_c[n2]=set()
				node_c[n2].add(n1)  
				count_edge += 1
				# f_el.write(str(n1-1)+' '+str(n2-1)+'\n')
			edge_c[c_ID] = count_edge
			c_ID=c_ID+1

		line=fp.readline()
		line=line.rstrip()
		##print line
		n_comm=int(line)
		commu={}
		com_ID=1
		for i in range(0,n_comm):
			line=fp.readline()
			line=line.rstrip()
			line=line.split()
			commu[com_ID]=set()
			for n in line:
				commu[com_ID].add(int(n))
			com_ID+=1	   
		mu=0'''

    #with open(filename+'_ml_network.pickle') as handle:
    #	fnetwork = pickle.load(handle)
    ml_network, layer, node_l, node_c, top, bot, couple, edge_l, edge_c, mu, commu = read_raw_network(
        filename, weighted)

    #ml_network =build_network(layer, node_l, node_c, top, bot, couple, edge_l, edge_c)
    #with open(filename+'_ml_network.pickle', 'w') as handle:
    #	 pickle.dump([ml_network, layer, node_l, node_c, top, bot, couple, edge_l, edge_c, mu, commu], handle)
    dendogram, mod = louvain(ml_network, layer, node_l, node_c, top, bot,
                             couple, edge_l, edge_c, mu)

    status = Status()
    status.layer = layer
    status.node_l = node_l
    status.node_c = node_c
    status.top = top
    status.bot = bot
    status.edge_l = edge_l
    status.edge_c = edge_c
    status.couple = couple
    status.mu = mu
    mod_old = mod
    commu = _get_com_wise_nodes(
        partition_at_level(dendogram,
                           len(dendogram) - 1))
    #commu =_get_commu_dict(partition_at_level(dendogram, len(dendogram)-1))
    mod = __modularity(commu, status, ml_network)
    #print "--------- BEF RET ---------"
    #print mod_old, mod
    #print "----------------"

    return mod, dendogram
Пример #30
0
def louvain(graph, layer, node_l, node_c, top, bot, couple, edge_l, edge_c,
            mu):
    current_graph = graph.copy()
    status = Status()

    status.layer = layer
    status.node_l = node_l
    status.node_c = node_c
    status.top = top
    status.bot = bot
    status.edge_l = edge_l
    status.edge_c = edge_c
    status.couple = couple
    status.mu = mu

    status.init(current_graph)

    old_status = status.copy()

    status_list = list()
    level_count = 0

    mod = __modularity(_get_commu_dict(status.node2com), status, graph)
    #print "Modularity before First Iteration ",mod

    __one_level(graph, old_status, current_graph, status, status_list,
                level_count)
    partition = __renumber(status.node2com)
    status_list.append(partition)
    current_graph, part, status = induced_graph_multilayer(
        partition, current_graph, status)

    mod1 = __modularity(_get_com_wise_nodes(part), status, current_graph)

    p = _get_com_wise_nodes(
        partition_at_level(status_list,
                           len(status_list) - 1))
    new_mod = __modularity(p, old_status, graph)
    #print "-> merge mod after level 0 : ", mod1
    #print "-> Modularity after level 0: ",new_mod, "\n"

    ##print("Louvain, partition: ",partition)
    #print("Louvain partition: ",part)
    A = nx.adjacency_matrix(current_graph)
    ##print(A.todense())

    status.init(current_graph)

    while True:
        level_count += 1
        ##print level_count
        modif = __one_level(graph, old_status, current_graph, status,
                            status_list, level_count, 1)

        partition = __renumber(status.node2com)
        status_list.append(partition)

        new_mod = __modularity(
            _get_commu_dict(partition_at_level(status_list, level_count)),
            old_status, graph)
        #print "-> Modularity after level ",level_count,": ",new_mod, "\n"

        #new_mod = __modularity(_get_commu_dict(partition), status, current_graph)
        #new_mod = __modularity(_get_com_wise_nodes(partition), status, current_graph)

        if modif == False:
            #if new_mod - mod < __MIN :

            break
        mod = new_mod
        #current_graph = induced_graph(partition, current_graph)
        current_graph, part, status = induced_graph_multilayer(
            partition, current_graph, status)
        #status.init(current_graph)
        status.init(current_graph, part)

        ##print("Louvain, partition: ",partition)
        #		#print("Louvain, part after: ",part)
        #		A = nx.adjacency_matrix(current_graph)
        ##print(A.todense())

    return status_list, mod