damier.py

Created by schraf

Created on April 08, 2023

1.58 KB

```from math import *
from kandinsky import *
from turtle import *

p=5

for c in range(0, 320, 8):
for l in range(0, 222, 8):
for i in (0,36):
set_pixel(c + (i % 8), l + (i // 8), (0, 0, 0))

hideturtle()
pensize(5)
penup()
goto(-150,13)
pendown()
goto(0,-62)
goto(150,13)

def remplir(coul, *u):
(ax,ay),(bx,by),(cx,cy),(dx,dy)=u[0]
for col in range(min(ax,bx,cx,dx), max(ax,bx,cx,dx)+1):
for lig in range(min(ay,by,cy,dy), max(ay,by,cy,dy)+1):
if 0 <= col <= 320 and 0 <= lig <= 222:
xa,xb,xc,xd = ax-col,bx-col,cx-col,dx-col
ya,yb,yc,yd = ay-lig,by-lig,cy-lig,dy-lig
d1,d2,d3,d4 = xa*yb-ya*xb,xb*yc-yb*xc,xc*yd-yc*xd,xd*ya-yd*xa
u,v,w,t = d1>=0,d2>=0,d3>=0,d4>=0
if u == v == w == t:
set_pixel(col,222 - lig,coul)

def light(z,g): return ((max(0,min(255,g-4*z)),)*3)

def cube(x, y, z, p, c = -1,h=1):
x2,y2,z2 = x,y,z-p/h
if c != -1:
face(x,y,z,((p,0,0),(0,0,-p/h),(-p,0,0)),light(z,80))
face(x,y,z,((0,-p,0),(0,0,-p/h),(0,p,0)),light(z,120))
else: c = 220 * ((x//p + y//p)%2)
face(x2,y2,z2,((p,0,0),(0,-p,0),(-p,0,0)),light(z,c))

def face(x,y,z,dd,coul):
coord = (pos2D(x,y,z),)
for d in dd:
x,y,z = x+d[0],y+d[1],z+d[2]
coord += (pos2D(x, y, z),)
remplir(coul, coord)

def pos2D(x,y,z):
x2=(x+20)/40
y2=(y+20)/40
z2=(z+20)/50
xe = int(120*(x2+y2)-110)
ye = int(155+60*(x2-y2-2*z2))
return xe,ye

for x in range(10):
for y in range(10,0,-1):
cube(p*y,p*x,0, p,h=2)
if (y<5 or y>6) and ((x+y)% 2 == 0):cube(p*y,p*x,-4,p/1.7, 20+170 * (y < 5),h=0.85)

draw_string("SHALL WE PLAY A GAME ?", 50,190,(255,)*3,(0,)*3)```