chess3.py

Created by schraf

Created on January 28, 2021

1.3 KB

Déplacements possibles pour une pièce blanche sur un échiquier vide. Par exemple :
>> jeu(T,"e4")

>> jeu(D,"g8")

>> jeu(C,"a6")


from kandinsky import *

# Deplacements
nn,ss,ee,oo,ne,no,se,so = [0,1],[0,-1],[1,0],[-1,0],[1,1],[1,-1],[-1,1],[-1,-1]

P = [[0,120,252,252,120,120,252,510,510,0],[nn],1]
T = [[0,438,438,510,252,252,252,510,510,0],[nn,ss,ee,oo],8]
C = [[0,56,124,124,240,248,252,510,510,0],[[1,2],[-1,2],[1,-2],[-1,-2],[2,1],[2,-1],[-2,1],[-2,-1]],1]
F = [[48,56,156,220,478,510,252,510,510,0],[ne,no,se,so],8]
R = [[48,120,48,252,510,252,252,510,510,0],[nn,ss,ee,oo,ne,no,se,so],1]
D = [[72,120,306,438,180,252,252,510,510,0],[nn,ss,ee,oo,ne,no,se,so],8]



def dessin(x,y,p,coul):
  for c in range(10):
    for l in range(10):
      if p[l]>>c & 1:
        car(x+2*c,y+2*l,2,coul)

def car(x,y,t,c):
  for i in range(t*t): 
    set_pixel(x+i%t,y+i//t,c)
    # effet quadrillage
    # set_pixel(x+i%t,y+i//t,c*(i>t and i%t!=0))
    
def jeu(piece, pos):
  g,h=30,30
  for c in range(8):
    for l in range(8):
      coul = (110,110,220) if (c+l)%2==0 else (0,0,0)
      car(g+20*c,h+20*l,20,coul)
    draw_string(str(c+1),g-20,h+1+7*20-20*c)
    draw_string(chr(97+c),g+5+20*c,h-20)
  x,y = ord(pos[0])-97, int(pos[1])-1
  dessin(g+20*x,h+140-20*y,piece[0],(248,255,248))
  for d in piece[1]:
    for j in range(1,piece[2]+1):
      if 0<=x+j*d[0]<8 and 0<=y+j*d[1]<8:
        car(g+20*(x+j*d[0]),h+140-20*(y+j*d[1]),20,(50,240,40))