アットウィキロゴ

vvv21

import numpy as np
 
class sho:
 
    def game(self):
 
        self.one()
 
        self.two()
 
        z=range(len(self.pos_sum))
        num=np.random.choice(z)
 
 
        for i in range(6): 
            self.pos[i]=self.pos_sum[num][i]
            self.hand[i]=self.hand_sum[num][i]
 
        self.win()
 
    def win(self):
 
       mm=self.mode
       if mm=="先手":
          self.mode="後手"
       if mm=="後手":
          self.mode="先手"
 
       if self.hand[0]=="後手":
          self.mode="後手勝利" 
       if self.hand[3]=="先手":
          self.mode="先手勝利"
 
    def two(self):
 
        koma_sel=self.select_b()
 
        for k1 in koma_sel:
            sig=self.makeput()
            for si in sig:
                pos_q=[]
                for i in range(6):
                    pos_q.append(self.pos[i])
                pos_q[k1]=si
                self.pos_sum.append(pos_q)
                self.hand_sum.append(self.hand)
 
 
    def one(self):
 
        sig=self.policy()
 
        pos_pol=[]
        hand_pol=[]
 
        for q in sig:
            ch=self.check(q)
            if ch<50:
               pos_pol.append(q) 
               hand_pol.append(self.hand)
 
        self.pos_sum=[]
        self.hand_sum=[]
 
 
 
 
        for i in range(len(pos_pol)):
            self.hand_chx=[]
            self.pos_chx=[]
            for j in range(6):
                self.pos_chx.append(0)
                self.hand_chx.append("")
            for j in range(6):
                self.pos_chx[j]=pos_pol[i][j]
                self.hand_chx[j]=hand_pol[i][j]
            self.change()
            self.pos_sum.append(self.pos_chx)
            self.hand_sum.append(self.hand_chx)
 
 
    def makeput(self):
 
        sig=[]
        c=[]   
        for i in range(10):
            c.append(0)
 
        for i in range(6):
            sx=self.pos[i]
            c[sx]=c[sx]+1
 
        c[0]=100
        for j in range(10):
           if c[j]==0:
              sig.append(j)
 
        return sig
 
    def change(self):
 
        c=[]   
        for i in range(10):
            c.append(0)
 
        for i in range(6):
            sx=self.pos_chx[i]
            c[sx]=c[sx]+1
 
        ch=0
        for i in range(6):
            h=0
            p3=self.pos_chx[i]
            if c[p3]>1:
               h=100
            if self.hand_chx[i]==self.mode:
               h=0
            if h>50:
               self.pos_chx[i]=0
               self.hand_chx[i]=self.mode
 
    def check(self,pon):
 
        c=[]   
        for i in range(10):
            c.append(0)
 
        for i in range(6):
            if self.hand[i]==self.mode:
               sx=pon[i]
               c[sx]=c[sx]+1
 
        ch=0
        for i in range(1,10):
            if c[i]>1:
               ch=100
 
        return ch    
 
    def policy(self):
 
        koma_sel=self.select_a()
 
 
        sig=[]
        for u in koma_sel:
            dir=self.makedir(self.hand[u],self.koma[u])
            for d in dir:
                pos_ch=[]
                for pc in self.pos:
                    pos_ch.append(pc)
                px=self.pos[u]
                x1=self.ban[px][0]+d[0]
                y1=self.ban[px][1]+d[1]
                b1=[x1,y1]
                p1=self.point(b1)
                pos_ch[u]=p1
                if p1>0:
                   sig.append(pos_ch)
 
        return sig
 
    def point(self,d):
 
        m=-1  
        for i in range(10):
           if self.ban[i]==d:
              m=i
        return m  
 
    def makedir(self,h1,k1):
 
        dir=[]
        if k1=="王": 
           dir.append([1,1])
           dir.append([1,-1])
           dir.append([-1,1])
           dir.append([-1,-1])
           dir.append([1,0])
           dir.append([0,1])
           dir.append([-1,0])
           dir.append([0,-1])
 
        h=0
        if k1=="歩":
           h=h+1
        if h1=="先手":
           h=h+1
        if h==2:
           dir.append([0,1])     
 
        h=0
        if k1=="歩":
           h=h+1
        if h1=="後手":
           h=h+1
        if h==2:
           dir.append([0,-1])
 
        h=0
        if k1=="金":
           h=h+1
        if h1=="先手":
           h=h+1
        if h==2:
           dir.append([0,1])     
           dir.append([0,-1]) 
           dir.append([1,0]) 
           dir.append([-1,0]) 
           dir.append([1,1]) 
           dir.append([-1,1]) 
 
        h=0
        if k1=="金":
           h=h+1
        if h1=="後手":
           h=h+1
        if h==2:
           dir.append([0,1])     
           dir.append([0,-1]) 
           dir.append([1,0]) 
           dir.append([-1,0]) 
           dir.append([1,-1]) 
           dir.append([-1,-1]) 
 
        h=0
        if k1=="銀":
           h=h+1
        if h1=="先手":
           h=h+1
        if h==2:
           dir.append([0,1])     
           dir.append([1,1]) 
           dir.append([-1,1]) 
           dir.append([-1,-1]) 
           dir.append([1,-1])  
 
        h=0
        if k1=="銀":
           h=h+1
        if h1=="後手":
           h=h+1
        if h==2:
           dir.append([0,-1])     
           dir.append([1,-1]) 
           dir.append([-1,-1]) 
           dir.append([-1,1]) 
           dir.append([1,1]) 
 
        h=0
        if k1=="桂":
           h=h+1
        if h1=="先手":
           h=h+1
        if h==2:
           dir.append([1,2])     
           dir.append([-1,2]) 
 
        h=0
        if k1=="桂":
           h=h+1
        if h1=="後手":
           h=h+1
        if h==2:
           dir.append([1,-2])     
           dir.append([-1,-2])
 
        h=0
        if k1=="香":
           h=h+1
        if h1=="先手":
           h=h+1
        if h==2:
           dir.append([0,1])     
           dir.append([0,2]) 
 
        h=0
        if k1=="香":
           h=h+1
        if h1=="後手":
           h=h+1
        if h==2:
           dir.append([0,-1])     
           dir.append([0,-2])
 
        if k1=="飛": 
           dir.append([1,0])
           dir.append([0,1])
           dir.append([-1,0])
           dir.append([0,-1])      
           dir.append([2,0])
           dir.append([0,2])
           dir.append([-2,0])
           dir.append([0,-2])
 
        if k1=="角": 
           dir.append([1,1])
           dir.append([1,-1])
           dir.append([-1,1])
           dir.append([-1,-1])      
           dir.append([2,2])
           dir.append([2,-2])
           dir.append([-2,2])
           dir.append([-2,-2]) 
 
        h=0
        if k1=="と":
           h=h+1
        if h1=="先手":
           h=h+1
        if h==2:
           dir.append([0,1])     
           dir.append([0,-1]) 
           dir.append([1,0]) 
           dir.append([-1,0]) 
           dir.append([1,1]) 
           dir.append([-1,1]) 
 
        h=0
        if k1=="と":
           h=h+1
        if h1=="後手":
           h=h+1
        if h==2:
           dir.append([0,1])     
           dir.append([0,-1]) 
           dir.append([1,0]) 
           dir.append([-1,0]) 
           dir.append([1,-1]) 
           dir.append([-1,-1])
 
        h=0
        if k1=="成香":
           h=h+1
        if h1=="先手":
           h=h+1
        if h==2:
           dir.append([0,1])     
           dir.append([0,-1]) 
           dir.append([1,0]) 
           dir.append([-1,0]) 
           dir.append([1,1]) 
           dir.append([-1,1])
 
        h=0
        if k1=="成香":
           h=h+1
        if h1=="後手":
           h=h+1
        if h==2:
           dir.append([0,1])     
           dir.append([0,-1]) 
           dir.append([1,0]) 
           dir.append([-1,0]) 
           dir.append([1,-1]) 
           dir.append([-1,-1])
        h=0
        if k1=="成桂":
           h=h+1
        if h1=="先手":
           h=h+1
        if h==2:
           dir.append([0,1])     
           dir.append([0,-1]) 
           dir.append([1,0]) 
           dir.append([-1,0]) 
           dir.append([1,1]) 
           dir.append([-1,1])
        h=0
        if k1=="成桂":
           h=h+1
        if h1=="後手":
           h=h+1
        if h==2:
           dir.append([0,1])     
           dir.append([0,-1]) 
           dir.append([1,0]) 
           dir.append([-1,0]) 
           dir.append([1,-1]) 
           dir.append([-1,-1])
        h=0
        if k1=="成銀":
           h=h+1
        if h1=="先手":
           h=h+1
        if h==2:
           dir.append([0,1])     
           dir.append([0,-1]) 
           dir.append([1,0]) 
           dir.append([-1,0]) 
           dir.append([1,1]) 
           dir.append([-1,1])
        h=0
        if k1=="成銀":
           h=h+1
        if h1=="後手":
           h=h+1
        if h==2:
           dir.append([0,1])     
           dir.append([0,-1]) 
           dir.append([1,0]) 
           dir.append([-1,0]) 
           dir.append([1,-1]) 
           dir.append([-1,-1])
 
        if k1=="竜王": 
           dir.append([1,1])
           dir.append([1,-1])
           dir.append([-1,1])
           dir.append([-1,-1])
           dir.append([1,0])
           dir.append([0,1])
           dir.append([-1,0])
           dir.append([0,-1])
           dir.append([2,0])
           dir.append([0,2])
           dir.append([-2,0])
           dir.append([0,-2])
 
        if k1=="竜馬": 
           dir.append([1,1])
           dir.append([1,-1])
           dir.append([-1,1])
           dir.append([-1,-1])
           dir.append([1,0])
           dir.append([0,1])
           dir.append([-1,0])
           dir.append([0,-1])
           dir.append([2,2])
           dir.append([-2,-2])
           dir.append([-2,2])
           dir.append([2,-2])
 
        return dir
 
    def select_a(self):
 
        koma_sel=[]
 
        for u in range(6):
           h=0
           if self.hand[u]==self.mode:
              h=h+1
           if self.pos[u]>0:
              h=h+1
           if h==2:       
              koma_sel.append(u)
 
        return koma_sel
 
    def select_b(self):
 
        koma_b=[]
 
        for u in range(6):
           h=0
           if self.hand[u]==self.mode:
              h=h+1
           if self.pos[u]==0:
              h=h+1
           if h==2:       
              koma_b.append(u)
 
        return koma_b
最終更新:2018年02月15日 18:58