示例#1
0
 def drawmovearrow(self, move, args = {}):                        
     if move is None:
         return
     strokecolor = args.get("strokecolor", "#FFFF00")
     linewidth = args.get("linewidth", 0.2) * self.squaresize
     headwidth = args.get("headwidth", 0.2) * self.squaresize
     headheight = args.get("headheight", 0.2) * self.squaresize        
     tomv = self.squarecoordsmiddlevect(self.flipawaresquare(move.tosq))
     frommv = self.squarecoordsmiddlevect(self.flipawaresquare(move.fromsq))
     if False:
         self.movecanvas.lineWidth(linewidth)
         self.movecanvas.strokeStyle(strokecolor)
         self.movecanvas.fillStyle(strokecolor)        
         self.movecanvas.drawline(frommv, tomv)
         dv = Vect(headwidth, headheight)            
         self.movecanvas.fillRect(tomv.m(dv), tomv.p(dv))
         if not ( move.prompiece.isempty() ):
             pf = 4
             dvp = Vect(linewidth * pf, linewidth * pf)
             move.prompiece.color = self.turn()
             ppdiv = Div().pa().cp().ac(getclassforpiece(move.prompiece, self.piecestyle)).w(linewidth * 2 * pf).h(linewidth * 2 * pf)
             ppdiv.pv(tomv.m(dvp))            
             self.piececanvashook.a(ppdiv)
     arrow = Arrow(frommv, tomv, {
         "linewidth": linewidth,
         "pointwidth": headheight * 4,
         "pointheight": headheight * 4,
         "color": strokecolor
     })
     self.arrowdiv.a(arrow)
示例#2
0
 def buildprominput(self):
     promkinds = prompiecekindsforvariantkey(self.variantkey)
     promsq = self.dragmove.tosq.copy()        
     dir = cpick(promsq.rank >= ( self.numranks / 2 ), -1, 1)
     ppks = prompiecekindsforvariantkey(self.variantkey)
     for ppk in ppks:            
         fapromsq = self.flipawaresquare(promsq)
         pp = Piece(ppk, self.turn())
         psqdiv = Div().pa().cp().zi(150).w(self.squaresize).h(self.squaresize).ac("boardpromotionsquare")
         psqdiv.pv(self.squarecoordsvect(fapromsq))
         ppdiv = Div().pa().cp().zi(200).w(self.piecesize).h(self.piecesize).ac(getclassforpiece(pp, self.piecestyle))
         ppdiv.pv(self.piececoordsvect(fapromsq)).ae("mousedown", self.prompiececlickedfactory(ppk))
         self.container.a([psqdiv, ppdiv])
         promsq = promsq.p(Square(0, dir))
示例#3
0
 def buildsquares(self):
     self.container.x()
     self.sqdivs = {}
     self.sqhdivs = {}
     for sq in self.squarelist():
         sqclass = cpick(self.islightsquare(sq), "boardsquarelight", "boardsquaredark")
         sqdiv = Div().ac(["boardsquare", sqclass]).w(self.squaresize).h(self.squaresize)
         sqhdiv = Div().pa().w(self.squaresize).h(self.squaresize)
         self.sqdivs[sq.hashkey()] = sqdiv
         self.sqhdivs[sq.hashkey()] = {
             "div": sqhdiv,
             "cumop": 0.0
         }
         fasq = self.flipawaresquare(sq)
         sqdiv.pv(self.squarecoordsvect(fasq))
         sqhdiv.pv(self.squarecoordsvect(fasq))
         sqdiv.ae("dragover", self.piecedragoverfactory(sq))
         sqdiv.ae("drop", self.piecedropfactory(sq))            
         sqhdiv.ae("dragover", self.piecedragoverfactory(sq))
         sqhdiv.ae("drop", self.piecedropfactory(sq))            
         self.container.a([sqdiv, sqhdiv])
         p = self.getpieceatsquare(sq)
         if p.ispiece():
             pdiv = Div().ac("boardpiece").w(self.piecesize).h(self.piecesize).pv(self.piececoordsvect(fasq))
             pdiv.ac(getclassforpiece(p, self.piecestyle)).sa("draggable", True)
             pdiv.ae("dragstart", self.piecedragstartfactory(sq, pdiv))
             pdiv.ae("drag", self.piecedragfactory())
             pdiv.ae("dragend", self.piecedragendfactory(sq, pdiv))
             pdiv.ae("dragover", self.piecedragoverfactory(sq))
             pdiv.ae("drop", self.piecedropfactory(sq))            
             pdiv.zi(10)
             if self.variantkey == "threeCheck":
                 if ( p.kind == "k" ):
                     mul = self.getthreelifesforcolor(p.color)
                     lifesdiv = Div().pa().t(- self.squaresize / 10).l(self.squaresize / 2 + self.squaresize / 10).w(self.squaresize / 2).h(self.squaresize / 2)
                     lifesdiv.ac("boardthreechecklifesdiv").fs(self.squaresize / 1.5).html("{}".format(mul))
                     lifesdiv.c(["#ff0", "#ff0"][p.color])
                     pdiv.a(lifesdiv)
             self.container.a(pdiv)