Guest User

Untitled

a guest
May 26th, 2019
78
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