Пример #1
0
 def update(self, log):
     answer = []
     for i in range(log.shape[0]):
         if(log['type'][i] == 'initialize'):
             content = log['text'][i].split(" ")
             print(str(content[1])+':'+str(content[2]))
             if(content[2] == 'WEREWOLF'):
                 answer.append('人狼')
             else:
                 answer.append('人間')
             if(len(answer) == self.player_num):
                 print(answer)
                 
         elif(log['type'][i] == 'talk'):
             content = log['text'][i].split(" ")
             # vote宣言
             if(content[0] == 'VOTE'):
                 speak = log['agent'][i]-1
                 to = name2num(content[1])-1
                 self.relation[speak][to] += -1
             # estimate
             elif(content[0] == 'ESTIMATE'):
                 speak = log['agent'][i]-1
                 to = name2num(content[1])-1
                 if(content[2] == 'WEREWOLF'):
                     self.relation[speak][to] += -1
                 else:
                     self.relation[speak][to] += 1
             # request
             elif(content[0][:7] == 'REQUE'):
                 speak = log['agent'][i]-1
                 to = name2num(content[1].strip(')'))-1
                 if(content[0][8:] == 'VOTE'):
                     self.relation[speak][to] += -1
                 elif(content[0][8:] == 'DIVINATION'):
                     self.relation[speak][to] += -1
             # divined
             elif(content[0] == 'DIVINED'):
                 speak = log['agent'][i]-1
                 to = name2num(content[1])-1
                 if(content[2] == 'WEREWOLF'):
                     self.relation[speak][to] += -2
                 else:
                     self.relation[speak][to] += 2
                     
         elif(log['type'][i] == 'vote'):
             speak = log['idx'][i]-1
             to = log['agent'][i]-1
             self.relation[speak][to] += -3
             
         # デバッグようにiday毎に表示
         ahead_day = self.day
         self.day = log['day'][i]
         if(ahead_day != self.day):
             print(self.relation)
             
     return(self.relation)
Пример #2
0
    def update(self, base_info, diff_data, request):
        self.base_info = base_info
        #print("base_info:/n")
        #print(base_info)
        print("diff_data:")
        print(diff_data)
        
        ### NN用のデータを集める ###
        # 最初に記録する情報
        if(self.onlyone):
            for i in range(len(self.base_info['statusMap'])):
                # 生きてるか死んでいるか(死:1,生:0)
                if(self.base_info['statusMap'][str(i+1)] == 'DEAD'):
                    self.info[i][0] = 1
                # 日にちを入れる
                self.info[i][10] = self.base_info['day']
            self.onlyone = False
        
        # diff_dataの中をなめていく
        for i in range(diff_data.shape[0]):
            # 始めにtypeがtalkだった場合(今回はほとんどこれ)
            content = diff_data['text'][i].split(" ")
            if(diff_data['type'][i] == 'talk'):
                # 内容がCOの場合
                if(content[0] == 'COMINGOUT' and diff_data['agent'][i] == sf.name2num(content[1])):
                    # 一応誰が何をCOしたのか記録
                    # [**(番号),roll]
                    self.called_comingout.append([diff_data['agent'][i], content[2]])
                    # 霊媒師かつ発話エージェントと発話対象が同じであれば
                    if(content[2] == 'MEDIUM'):
                        self.medium_co_num += 1
                        self.medium_co_order += 1
                        self.info[diff_data['agent'][i]-1][2] = self.medium_co_order
                    # 霊媒師かつ発話エージェントと発話対象が同じであれば
                    if(content[2] == 'SEER'):
                        self.seer_co_num += 1
                        self.seer_co_order += 1
                        self.info[diff_data['agent'][i]-1][1] = self.seer_co_order
                # 内容がDIVINED
                if(content[0] == 'DIVINED'):
                    # [**(使用者番号),**(対象者番号),roll]
                    self.called_divined.append([diff_data['agent'][i], sf.name2num(content[1]), content[2]])
                    # 人狼判定
                    if(content[2] == 'WEREWOLF'):
                        # 受けた人狼判定数更新
                        self.info[sf.name2num(content[1])-1][4] += 1
                        # 出した人狼判定数更新
                        self.info[diff_data['agent'][i]-1][8] += 1
                    if(content[2] == 'HUMAN'):
                        # 受けた人間判定数更新
                        self.info[sf.name2num(content[1])-1][3] += 1
                        # 出した人狼判定数更新
                        self.info[diff_data['agent'][i]-1][7] += 1
                #内容がVOTE
                if(content[0] == 'VOTE'):
                    # 投票先
                    self.infoTalkvote[diff_data['agent'][i]-1][0] = sf.name2num(content[1])
                    # 日にち
                    self.infoTalkvote[diff_data['agent'][i]-1][1] = self.base_info['day']
            # typeがvoteだった場合
            if(diff_data['type'][i] == 'vote'):
                # 同じ日のtalkで話した投票先とvote先が異なるときに1を代入
                if(self.infoTalkvote[diff_data['idx'][i]-1][0] != diff_data['agent'][i] \
                   and self.infoTalkvote[diff_data['idx'][i]-1][1] == diff_data['day'][i]):
                    self.info[diff_data['idx'][i]-1][9] = 1

            # typeがidentifyだった場合
            if(diff_data['type'][i] == 'identify'):
                # 結果を公開したかしてないか
                self.not_reported = True
                # 霊媒結果の保存  形式:[[**(番号), roll], [**(番号), roll]...]
                self.result_roll.append([diff_data['agent'][i], content[2]])
                
            # typeがdivineだった場合
            if(diff_data['type'][i] == 'divine'):
                # 結果を公開したかしてないか
                self.not_reported = True
                # 霊媒結果の保存  形式:[[**(番号), roll], [**(番号), roll]...]
                self.result_roll.append([diff_data['agent'][i], content[2]])
            
            # typeがdeadだった場合(白確の保存)
            if(diff_data['type'][i] == 'dead'):
                self.dead.append(diff_data['agent'][i])

        # 会話が1ターン終わったらco占い師数とco霊媒師数を代入する
        for i in range(len(self.base_info['statusMap'])):
            # co占い師数
            self.info[i][1] = self.seer_co_num
            # co霊媒師数
            self.info[i][2] = self.medium_co_num