SHARE
TWEET

Untitled

a guest May 26th, 2019 75 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. from turtle import *
  2. from math import *
  3.  
  4. test = False #zostawiam jako pokazanie procesu pracy, w przypadku True włączą się próby sprawdzające poprawność mniejszych części rysunku
  5. def tester(fun,*args):
  6.     if test:
  7.         fun(*args)
  8.  
  9. def hop (x,y):
  10.     up()
  11.     fd(y)
  12.     rt(90)
  13.     fd(x)
  14.     lt(90)
  15.     down()
  16.  
  17. def pole(wymiar_pola,kolor):
  18.     fillcolor(kolor)
  19.  
  20.     begin_fill ()
  21.     for i in range (4):
  22.         fd(wymiar_pola)
  23.         rt(90)
  24.     end_fill()
  25.  
  26. def zagranie(p):
  27.     if p == "p0":
  28.         return "rnbqkbnrpppppppp................................PPPPPPPPRNBQKBNR"  # układ startowy
  29.     if p == "p1":
  30.         return"r.b.kb.rpppp.pp...n..q.p....p......P......P.....PP..PPPPRNBQKBNR"  # obrona Caro-Kann, atak dwu skoczków
  31.     if p == "p2":
  32.         return"rnbqk..rpppp.ppp.....n......p....b..P.....N.....PPPP.PPPR.BQKBNR"  # partia hiszpańska
  33.     if p =="p3":
  34.         return"rnbqkbnrpp..pppp..........pp.......P............PPP.PPPPRNBQKBNR"  # gambit hetmański
  35.     if p =="p4":
  36.         return"r....r.k.b..q..pp.n...p..p..bpNQ.P..p...PB..P....B...PPP..RR..K."  # nieśmiertelna partia Rubinsteina z 1907, Akiba Rubinstein (czarne), najsłynniejszy polski szachista wszechczasów
  37.     if p == "p5":
  38.         return"rnbqkppppp.....PPPPPRNBQK"  # plansza 5 * 5
  39.     if p=="p6":
  40.         return"rqkrpppp....PPPPRQKR"  # plansza 5 * 4
  41.  
  42. def szach (wymiar_pola,wys,szer, uklad, kolorf1,kolorf2,kolorp1,kolorp2):
  43.     indeks_pola=0
  44.     for j in range (wys):
  45.         for i in range(szer):
  46.             if (i+j)%2==0:
  47.                 kolor=kolorp1
  48.             else:
  49.                 kolor=kolorp2
  50.             pole(wymiar_pola,kolor)
  51.             if zagranie(uklad)[indeks_pola]=="p": #ukladem wywołuję listę, a indeksem pola sprawdzam kolejne elementy listy
  52.                 pionek(wymiar_pola,kolorf1)
  53.             elif zagranie(uklad)[indeks_pola]=="P":
  54.                 pionek(wymiar_pola, kolorf2)
  55.             elif zagranie(uklad)[indeks_pola]=="b":
  56.                 goniec(wymiar_pola, kolorf1)
  57.             elif zagranie(uklad)[indeks_pola]=="B":
  58.                 goniec(wymiar_pola, kolorf2)
  59.             elif zagranie(uklad)[indeks_pola]=="r":
  60.                 wieza(wymiar_pola, kolorf1)
  61.             elif zagranie(uklad)[indeks_pola] == "R":
  62.                 wieza(wymiar_pola, kolorf2)
  63.             elif zagranie(uklad)[indeks_pola] == "q":
  64.                 hetman(wymiar_pola, kolorf1)
  65.             elif zagranie(uklad)[indeks_pola] == "Q":
  66.                 hetman(wymiar_pola, kolorf2)
  67.             elif zagranie(uklad)[indeks_pola] == "k":
  68.                 krol(wymiar_pola, kolorf1)
  69.             elif zagranie(uklad)[indeks_pola] == "K":
  70.                 krol(wymiar_pola, kolorf2)
  71.             elif zagranie(uklad)[indeks_pola] == "n":
  72.                 konik(wymiar_pola, kolorf1)
  73.             elif zagranie(uklad)[indeks_pola] == "N":
  74.                 konik(wymiar_pola, kolorf2)
  75.             hop(wymiar_pola,0)
  76.             indeks_pola+=1
  77.         hop(-wymiar_pola*szer, wymiar_pola)
  78.     hop(0,-wymiar_pola*wys)
  79. tester(szach,40,8,8,"p0","red","green","blue","yellow")
  80.  
  81. def pionek(wymiar_pola,kolor_figury):
  82.     hop(wymiar_pola/6,wymiar_pola/6)
  83.     fillcolor (kolor_figury)
  84.     begin_fill ()
  85.  
  86.     rt(90)
  87.  
  88.     fd(wymiar_pola*4/6)
  89.     lt(135)
  90.     fd(wymiar_pola*sqrt(2)/6)
  91.     rt(45)
  92.     fd(wymiar_pola/6)
  93.     lt(45)
  94.     fd(wymiar_pola*sqrt(2)/6)
  95.     lt(90)   #połowa
  96.     fd(wymiar_pola*sqrt(2)/6)
  97.     lt(45)
  98.     fd(wymiar_pola/6)
  99.     lt(-45)
  100.     fd(wymiar_pola*sqrt(2)/6)
  101.     rt(135)
  102.     end_fill()
  103.  
  104.     hop(-wymiar_pola / 6, -wymiar_pola / 6)
  105. tester(pionek,40,"green")
  106.  
  107. def wieza (wymiar_pola,kolor_figury):
  108.     hop(wymiar_pola*2 / 7, wymiar_pola / 6)
  109.     fillcolor(kolor_figury)
  110.     begin_fill()
  111.  
  112.     rt(90)
  113.  
  114.     fd(wymiar_pola * 3/7)
  115.     lt(90)
  116.     fd(wymiar_pola * 2/6)
  117.     rt(90)
  118.     fd(wymiar_pola/7)
  119.     lt(90)
  120.     fd(wymiar_pola * 2/6)
  121.     lt(90)
  122.     fd(wymiar_pola/7)
  123.     lt(90)
  124.     fd(wymiar_pola/6)
  125.     rt(90)
  126.     fd(wymiar_pola/7)
  127.     rt(90)
  128.     fd(wymiar_pola/6)
  129.     lt(90)
  130.     fd(wymiar_pola/7)
  131.     lt(90)
  132.     fd(wymiar_pola/6)
  133.     rt(90)
  134.     fd(wymiar_pola/7)
  135.     rt(90)
  136.     fd(wymiar_pola/6)
  137.     lt(90)
  138.     fd(wymiar_pola/7)
  139.     lt(90)
  140.     fd(wymiar_pola*2/6)
  141.     lt(90)
  142.     fd(wymiar_pola/7)
  143.     rt(90)
  144.     fd(wymiar_pola*2/6)
  145.     rt(180)
  146.     end_fill()
  147.  
  148.     hop(-wymiar_pola * 2 / 7, -wymiar_pola / 6)
  149. tester(wieza,30,"green")
  150.  
  151. def goniec(wymiar_pola, kolor_figury):
  152.     hop(wymiar_pola/6,wymiar_pola/7)
  153.     fillcolor(kolor_figury)
  154.     begin_fill()
  155.  
  156.     rt(90)
  157.  
  158.     fd(wymiar_pola * 4/7)
  159.     lt(135)
  160.     fd(wymiar_pola * sqrt(2)/7)
  161.     rt(45)
  162.     fd(wymiar_pola*3/7)
  163.     lt(45)
  164.     fd(wymiar_pola * sqrt(2)/7)
  165.     lt(90)
  166.     fd(wymiar_pola * sqrt(2)/7)
  167.     lt(45)
  168.     fd(wymiar_pola*3/7)
  169.     rt(45)
  170.     fd(wymiar_pola*sqrt(2)/7)
  171.     rt(135)
  172.     end_fill()
  173.  
  174.     hop(-wymiar_pola/6,-wymiar_pola/7)
  175. tester(goniec,40,"cyan")
  176.  
  177. def hetman (wymiar_pola,kolor_figury):
  178.     hop(wymiar_pola*2/8*7/8, wymiar_pola/6*7/8)
  179.     fillcolor(kolor_figury)
  180.     begin_fill()
  181.  
  182.     rt(90)
  183.  
  184.     fd(wymiar_pola*6/8*7/8)
  185.     lt(90)
  186.     fd(wymiar_pola*3/6*7/8)
  187.     hop(0,wymiar_pola /2/6*7/8)
  188.     dot(wymiar_pola*3/4/6*7/8,kolor_figury)
  189.     hop(0,-wymiar_pola /2/6*7/8)
  190.     rt(-135)
  191.     fd(wymiar_pola * sqrt(2)/6*7/8)
  192.     rt(90)
  193.     fd(wymiar_pola * sqrt(2)/6*7/8)
  194.     rt(45)
  195.     hop(0,wymiar_pola/2/6*7/8)
  196.     dot(wymiar_pola*3/4/6*7/8,kolor_figury)
  197.     hop(0,-wymiar_pola/2/6*7/8)
  198.     lt(135)
  199.     fd(wymiar_pola * sqrt(2)/6*7/8)
  200.     rt(90)
  201.     fd(wymiar_pola * sqrt(2)/6*7/8)
  202.     rt(45)
  203.     hop(0,wymiar_pola /2/6*7/8)
  204.     dot(wymiar_pola*3/4/6*7/8,kolor_figury)
  205.     hop(0,-wymiar_pola / 2/6*7/8)
  206.     lt(135)
  207.     fd(wymiar_pola * sqrt(2)/6*7/8)
  208.     lt(-90)
  209.     fd(wymiar_pola * sqrt(2)/6*7/8)
  210.     lt(-45)
  211.     hop(0,wymiar_pola / 2/6*7/8)
  212.     dot(wymiar_pola*3/4/6*7/8,kolor_figury)
  213.     hop(0,-wymiar_pola / 2/6*7/8)
  214.     lt(-180)
  215.     fd(wymiar_pola*3/6*7/8)
  216.     lt(180)
  217.     end_fill()
  218.  
  219.     hop(0,-wymiar_pola/6*7/8)
  220. tester(hetman,150,"red")
  221.  
  222. def krol (wymiar_pola,kolor_figury):
  223.     hop(wymiar_pola*2/6, wymiar_pola/6)
  224.     fillcolor(kolor_figury)
  225.     begin_fill()
  226.  
  227.     rt(90)
  228.  
  229.     fd(wymiar_pola * 2/6)
  230.     lt(90)
  231.     fd(wymiar_pola * 2/6)
  232.     dot(wymiar_pola*2/6,kolor_figury)
  233.     lt(90)
  234.     fd(wymiar_pola*2/6)
  235.     dot(wymiar_pola*2/6,kolor_figury)
  236.     bk(wymiar_pola*2/6)
  237.     lt(90)
  238.     fd(wymiar_pola/6)
  239.     bk(wymiar_pola/6)
  240.     rt(90)
  241.     fd(wymiar_pola/6)
  242.     rt(90)
  243.     hop(0,wymiar_pola/6)
  244.     dot(wymiar_pola/6,kolor_figury)
  245.     hop(0,wymiar_pola * 1 / 2/6)
  246.     rt(90)
  247.     fd(wymiar_pola * 1 / 8/6)
  248.     lt(90)
  249.     fd(wymiar_pola/6)
  250.     lt(90)
  251.     fd(wymiar_pola * 2 / 8/6)
  252.     lt(90)
  253.     fd(wymiar_pola/6)
  254.     lt(90)
  255.     fd(wymiar_pola * 1 / 8/6)
  256.     rt(90)
  257.     hop(0,wymiar_pola*3/2/6)
  258.     rt(90)
  259.     fd(wymiar_pola/6)
  260.     rt(270)
  261.     fd(wymiar_pola*2/6)
  262.     rt(180)
  263.     end_fill()
  264.  
  265.     hop(-wymiar_pola * 2 / 6, -wymiar_pola / 6)
  266. tester(krol,150,"cyan")
  267.  
  268. def konik (wymiar_pola,kolor_figury):
  269.     hop(wymiar_pola/4, wymiar_pola/5)
  270.     fillcolor(kolor_figury)
  271.     begin_fill()
  272.  
  273.     rt(90)
  274.  
  275.     fd(wymiar_pola * 2/5)
  276.     lt(90)
  277.     fd(wymiar_pola * 1 / 2/5)
  278.     for i in range(4):
  279.         lt(90)
  280.         pencolor("black")
  281.         fd(wymiar_pola*1/2/5)
  282.         bk(wymiar_pola*1/2/5)
  283.         rt(90)
  284.         fd(wymiar_pola*1/2/5)
  285.     fd(wymiar_pola*1/2/5)
  286.     lt(90)
  287.     fd(wymiar_pola*2/5)
  288.     lt(90)
  289.     fd(wymiar_pola*1/2/5)
  290.     lt(90)
  291.     pencolor("black")
  292.     fd(wymiar_pola*1/2/5)
  293.     up()
  294.     fd(wymiar_pola*3/4/5)
  295.     down()
  296.     dot(wymiar_pola*1/4/5)
  297.     up()
  298.     bk(wymiar_pola*5/4/5)
  299.     down()
  300.     rt(90)
  301.     fd(wymiar_pola*1/2/5)
  302.     lt(90)
  303.     fd(wymiar_pola/5)
  304.     lt(-117)
  305.     fd(wymiar_pola*sqrt(5)/5)
  306.     lt(117)
  307.     lt(90)
  308.     end_fill()
  309.  
  310.     hop(-wymiar_pola / 4, -wymiar_pola / 5)
  311. tester(konik,150,"cyan")
  312.  
  313. def rysunek():
  314.     mode("logo")
  315.     tracer (50)
  316.  
  317.     up();goto(-310,150);down()  # gotowy kod od profesora
  318.     lt(45)
  319.     szach(25, 8, 8, 'p0', "orange", "green", "gold", "yellow")
  320.     up();goto(-170,-290);down()
  321.     lt(90)
  322.     szach(25, 8, 8, 'p1', "cyan", "DarkRed", "gold", "yellow")
  323.     up();goto(300,-140);down()
  324.     lt(90)
  325.     szach(25, 8, 8, 'p2', "aqua", "chartreuse", "DarkKhaki", "yellow")
  326.     up();goto(170,290);down()
  327.     lt(90)
  328.     szach(25, 8, 8, 'p3', "purple", "cornflower blue", "silver", "yellow")
  329.     up();goto(-160,-160);down()
  330.     lt(45)
  331.     update()
  332.     szach(40, 8, 8, 'p4', "beige", "brown", "silver", "white")
  333.     up();goto(-50,250);down()
  334.     szach(20, 5, 5, 'p5', "light goldenrod yellow", "dark salmon", "DarkKhaki", "yellow")
  335.     up();goto(-50,-330);down()
  336.     szach(20, 5, 4, 'p6', "crimson", "green", "silver", "lemon chiffon")
  337.     up();goto(0,0);down()
  338.     lt(45)
  339.    
  340.     update()
  341. tester(rysunek)
  342.  
  343. rysunek()
  344. done()
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top