Advertisement
Gijskeh

Chess w/ AI

Jun 26th, 2019
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 28.31 KB | None | 0 0
  1. #Horizontaal: a, x, letters, [1]
  2. #verticaal: b, y, cijfers, [0]
  3. import time
  4. import replit
  5. import random
  6.  
  7. replit.clear()
  8.  
  9. #creeer een bord
  10. bord = [
  11. [" A B C D E F G H \n"],
  12. ['1','___','___','___','___','___','___','___','___', '\n'],
  13. ['2','___','___','___','___','___','___','___','___', '\n'],
  14. ['3','___','___','___','___','___','___','___','___', '\n'],
  15. ['4','___','___','___','___','___','___','___','___', '\n'],
  16. ['5','___','___','___','___','___','___','___','___', '\n'],
  17. ['6','___','___','___','___','___','___','___','___', '\n'],
  18. ['7','___','___','___','___','___','___','___','___', '\n'],
  19. ['8','___','___','___','___','___','___','___','___', '\n']
  20. ]
  21.  
  22. letters = ['','A','B','C','D','E','F','G','H']
  23.  
  24. #print het bord zonder komma's
  25. def PrintBord():
  26. for i in bord:
  27. print(' '.join(i))
  28.  
  29. #stukken in startpositie zetten
  30. def Startpositie():
  31. #Pionnen neerzetten
  32. for i in range (8):
  33. bord[2][i + 1] = z_symbolen[5]
  34. bord[7][i + 1] = w_symbolen[5]
  35.  
  36. #Torens neerzetten
  37. bord[1][1], bord[1][8] = z_symbolen[2], z_symbolen[2]
  38. bord[8][1], bord[8][8] = w_symbolen[2], w_symbolen[2]
  39.  
  40. #Koning neerzetten
  41. bord[1][5], bord[1][4] = z_symbolen[0], z_symbolen[0]
  42. bord[8][5], bord[8][4] = w_symbolen[0], w_symbolen[0]
  43.  
  44.  
  45. #het bijhouden van hoeveel koningen er in het spel zijn
  46. def tel_koningen():
  47. k = 0
  48. koningen = 0
  49. for i in bord:
  50. if(w_symbolen[0] in bord[k] or z_symbolen[0] in bord[k]):
  51. koningen += 1
  52. k += 1
  53. return koningen
  54.  
  55. #het selecteren van een stuk en het controleren op fouten hierin
  56. #ook moeten de functies van de stukken worden uitgevoerd
  57. def Beurt():
  58. global y
  59. global x
  60. global speler
  61. global stuk
  62. #beurt geven aan speler wit
  63. print(speler, 'is aan de beurt.')
  64.  
  65. #checken of het gekozen stuk wel op het bord staat
  66. valide = 0
  67. while(valide == 0):
  68. #opbreken van bv 2A naar ['2','A']
  69. keuze = input('Welk stuk wilt u verzetten? ')
  70. s = keuze[1].upper()
  71. keuze = keuze[0]+s
  72.  
  73. print(keuze)
  74. #definieer plek van stuk
  75. #coördinaten van een stuk zijn bv 2A. 2 Zorgt dan voor rij nr. 2 in bord
  76. #index A in letters geeft x coördinaat
  77. try:
  78. y = int(keuze[0])
  79. x = int(letters.index(keuze[1]))
  80. except ValueError:
  81. y,x = 0,0
  82. stuk = bord[y][x]
  83. #speler alleen stukken van zijn kleur laten pakken
  84. #definieer naam van gekozen stuk
  85. if(speler == 'Wit'):
  86. if(stuk in w_symbolen):
  87. valide = 1
  88. else:
  89. print('Hier staat geen stuk van jou!')
  90. else:
  91. if(stuk in z_symbolen):
  92. valide = 1
  93. else:
  94. print('Hier staat geen stuk van jou!')
  95.  
  96. #definieer de naam van het gekozen stuk
  97. try:
  98. naam = namen[w_symbolen.index(stuk)]
  99. except ValueError:
  100. naam = namen[z_symbolen.index(stuk)]
  101.  
  102. print('Dit is een',naam+'!',stuk)
  103.  
  104. if(naam == 'toren'):
  105. Toren()
  106.  
  107.  
  108. elif(naam == 'pion'):
  109. Pion()
  110.  
  111. elif(naam == 'koning'):
  112. Koning()
  113.  
  114. #functie om de toren te verzetten
  115. def Toren():
  116. if(speler == "Wit"):
  117. symbolen = w_symbolen
  118. elif(speler == "Zwart"):
  119. symbolen = z_symbolen
  120. global bestemming
  121. bestemming = list(input('Naar welk vakje wilt u? '))
  122. correct = False
  123. global x_co
  124. global y_co
  125. bestemming[1] = bestemming[1].upper()
  126.  
  127. x_co = int(letters.index(bestemming[1]))
  128. y_co = int(bestemming[0])
  129. keuze_x = x_co
  130. keuze_y = y_co
  131. variabelen = False
  132. while(correct == False):
  133. #Verticaal
  134. if(y != int(bestemming[0])):
  135. if(x == x_co):
  136. correct = True
  137. As = 'y'
  138. break
  139. #Horizontaal
  140. elif(x != x_co):
  141. if(y == int(bestemming[0])):
  142. correct = True
  143. As = 'x'
  144. break
  145. bestemming = list(input('Dit is geen geldige zet, beweeg alleen over 1 as. '))
  146. correct = False
  147. while(correct == False):
  148. #controleren of er iets tussen staat
  149. #Horizontaal
  150. if(As == 'x'):
  151. if(x_co < x):
  152. while(x_co < x):
  153. if(bord[int(bestemming[0])][int(letters.index(bestemming[1]))] not in symbolen):
  154. variabelen = True
  155. if(bord[y][x_co] == '___'):
  156. x_co += 1
  157. if(x_co == x):
  158. correct = True
  159. elif(variabelen == True and x_co == int(letters.index(bestemming[1]))):
  160. x_co += 1
  161. if(x_co == x):
  162. correct = True
  163. elif(variabelen != True):
  164. if(bord[y_co][x_co] in symbolen):
  165. zet = int(input("Dit is geen geldige zet, je probeert je eigen stuk te slaan. Kies een andere zet (1) of kies een ander stuk (2)."))
  166. if(zet == 1):
  167. bestemming = list(input('Naar welk vakje wilt u? '))
  168. elif(zet == 2):
  169. Beurt()
  170. else:
  171. zet = int(input("Dit is geen geldige zet, er staat een stuk in de weg. Kies een andere zet (1) of kies een ander stuk (2)."))
  172. if(zet == 1):
  173. bestemming = list(input('Naar welk vakje wilt u? '))
  174. elif(zet == 2):
  175. Beurt()
  176. else:
  177. if(bord[y_co][x_co] in symbolen):
  178. zet = int(input("Dit is geen geldige zet, je probeert je eigen stuk te slaan. Kies een andere zet (1) of kies een ander stuk (2)."))
  179. if(zet == 1):
  180. bestemming = list(input('Naar welk vakje wilt u? '))
  181. elif(zet == 2):
  182. Beurt()
  183. else:
  184. zet = int(input("Dit is geen geldige zet, er staat een stuk in de weg. Kies een andere zet (1) of kies een ander stuk (2)."))
  185. if(zet == 1):
  186. bestemming = list(input('Naar welk vakje wilt u? '))
  187. elif(zet == 2):
  188. Beurt()
  189.  
  190. if(x_co > x):
  191. while(x_co > x):
  192. if(bord[int(bestemming[0])][int(letters.index(bestemming[1]))] not in symbolen):
  193. variabelen = True
  194. if(bord[y][x_co] == '___'):
  195. x_co -= 1
  196. if(x_co == x):
  197. correct = True
  198. elif(variabelen == True and x_co == int(letters.index(bestemming[1]))):
  199. x_co -= 1
  200. if(x_co == x):
  201. correct = True
  202. elif(variabelen != True):
  203. if(bord[y_co][x_co] in symbolen):
  204. zet = int(input("Dit is geen geldige zet, je probeert je eigen stuk te slaan. Kies een andere zet (1) of kies een ander stuk (2)."))
  205. if(zet == 1):
  206. bestemming = list(input('Naar welk vakje wilt u? '))
  207. elif(zet == 2):
  208. Beurt()
  209. else:
  210. zet = int(input("Dit is geen geldige zet, er staat een stuk in de weg. Kies een andere zet (1) of kies een ander stuk (2)."))
  211. if(zet == 1):
  212. bestemming = list(input('Naar welk vakje wilt u? '))
  213. elif(zet == 2):
  214. Beurt()
  215. else:
  216. if(bord[y_co][x_co] in symbolen):
  217. zet = int(input("Dit is geen geldige zet, je probeert je eigen stuk te slaan. Kies een andere zet (1) of kies een ander stuk (2)."))
  218. if(zet == 1):
  219. bestemming = list(input('Naar welk vakje wilt u? '))
  220. elif(zet == 2):
  221. Beurt()
  222. else:
  223. zet = int(input("Dit is geen geldige zet, er staat een stuk in de weg. Kies een andere zet (1) of kies een ander stuk (2)."))
  224. if(zet == 1):
  225. bestemming = list(input('Naar welk vakje wilt u? '))
  226. elif(zet == 2):
  227. Beurt()
  228. elif(As == 'y'):
  229. if(y_co < y):
  230. if(bord[int(bestemming[0])][int(letters.index(bestemming[1]))] not in symbolen):
  231. variabelen = True
  232. while(y_co < y):
  233. if(bord[y_co][x] == '___'):
  234. y_co += 1
  235. if(y_co == y):
  236. correct = True
  237. elif(variabelen == True and y_co == int(bestemming[0])):
  238. y_co += 1
  239. if(y_co == y):
  240. correct = True
  241. elif(variabelen != True):
  242. if(bord[y_co][x_co] in symbolen):
  243. zet = int(input("Dit is geen geldige zet, je probeert je eigen stuk te slaan. Kies een andere zet (1) of kies een ander stuk (2)."))
  244. if(zet == 1):
  245. bestemming = list(input('Naar welk vakje wilt u? '))
  246. elif(zet == 2):
  247. Beurt()
  248. else:
  249. zet = int(input("Dit is geen geldige zet, er staat een stuk in de weg. Kies een andere zet (1) of kies een ander stuk (2)."))
  250. if(zet == 1):
  251. bestemming = list(input('Naar welk vakje wilt u? '))
  252. elif(zet == 2):
  253. Beurt()
  254. else:
  255. if(bord[y_co][x_co] in symbolen):
  256. zet = int(input("Dit is geen geldige zet, je probeert je eigen stuk te slaan. Kies een andere zet (1) of kies een ander stuk (2)."))
  257. if(zet == 1):
  258. bestemming = list(input('Naar welk vakje wilt u? '))
  259. elif(zet == 2):
  260. Beurt()
  261. else:
  262. zet = int(input("Dit is geen geldige zet, er staat een stuk in de weg. Kies een andere zet (1) of kies een ander stuk (2)."))
  263. if(zet == 1):
  264. bestemming = list(input('Naar welk vakje wilt u? '))
  265. elif(zet == 2):
  266. Beurt()
  267.  
  268. if(y_co > y):
  269. while(y_co > y):
  270. if(bord[int(bestemming[0])][int(letters.index(bestemming[1]))] not in symbolen):
  271. variabelen = True
  272. if(bord[y_co][x] == '___'):
  273. y_co -= 1
  274. if(y_co == y):
  275. correct = True
  276. elif(variabelen == True and y_co == int(bestemming[0])):
  277. y_co -= 1
  278. if(y_co == y):
  279. correct = True
  280. elif(variabelen != True):
  281. if(bord[y_co][x_co] in symbolen):
  282. zet = int(input("Dit is geen geldige zet, je probeert je eigen stuk te slaan. Kies een andere zet (1) of kies een ander stuk (2)."))
  283. if(zet == 1):
  284. bestemming = list(input('Naar welk vakje wilt u? '))
  285. elif(zet == 2):
  286. Beurt()
  287. elif(bord[int(bestemming[0])][int(letters.index(bestemming[1]))] in symbolen):
  288. zet = int(input("Dit is geen geldige zet, er staat een stuk in de weg. Kies een andere zet (1) of kies een ander stuk (2)."))
  289. if(zet == 1):
  290. correct = False
  291. bestemming = list(input('Naar welk vakje wilt u? '))
  292. elif(zet == 2):
  293. Beurt()
  294. else:
  295. if(bord[y_co][x_co] in symbolen):
  296. zet = int(input("Dit is geen geldige zet, je probeert je eigen stuk te slaan. Kies een andere zet (1) of kies een ander stuk (2)."))
  297. if(zet == 1):
  298. bestemming = list(input('Naar welk vakje wilt u? '))
  299. elif(zet == 2):
  300. Beurt()
  301. elif(bord[int(bestemming[0])][int(letters.index(bestemming[1]))] in symbolen):
  302. zet = int(input("Dit is geen geldige zet, er staat een stuk in de weg. Kies een andere zet (1) of kies een ander stuk (2)."))
  303. if(zet == 1):
  304. correct = False
  305. bestemming = list(input('Naar welk vakje wilt u? '))
  306. elif(zet == 2):
  307. Beurt()
  308.  
  309. #nieuwe positie printen
  310. bord[keuze_y][keuze_x] = stuk
  311. bord[y][x] = '___'
  312.  
  313. #functie om de pion te verzetten
  314. def Pion():
  315. #de pion mag twee stappen zetten als hij op de beginpositie staat
  316. #bepalen wat de beginpositie moet zijn
  317. if(speler == "Wit"):
  318. y_waarde = 7
  319. elif(speler == "Zwart"):
  320. y_waarde = 2
  321.  
  322.  
  323. zet = int(input("Wil je vooruit (1) of wil je slaan(2)"))
  324. if(zet == 1):
  325. #zet
  326. keuze_y = 1
  327. if(y == y_waarde):
  328. #aantal stappen vragen
  329. keuze_y = int(input('Wilt u 1 of 2 stappen naar voren? '))
  330. #controleer of veld bezet iets
  331. if(speler == 'Wit'):
  332. bestemming = bord[y - keuze_y][x]
  333. elif(speler == 'Zwart'):
  334. bestemming = bord[y + keuze_y][x]
  335. if( y == y_waarde):
  336. if(bestemming != '___'):
  337. Beurt()
  338. else:
  339. if(bestemming != '___'):
  340. fout = int(input("Dit is geen goede zet, kies een ander stuk of sla een stuk. Kies 1 voor: Een ander stuk kiezen, kies 2 voor: Een stuk slaan."))
  341. while(fout not in range(1, 3)):
  342. fout = int(input("Kies het getal 1 of 2"))
  343. if(fout == 1):
  344. Beurt()
  345. while(keuze_y not in range(1,3)):
  346. print(keuze_y)
  347. keuze_y = int(input('Dit mag niet! Kies een stap tussen 1 en 2: '))
  348. #controleren of hij op de beginpositie staat
  349. if(y != y_waarde):
  350. keuze_y = 1
  351. #nieuwe positie printen
  352. if(speler == 'Wit'):
  353. new_y = y - keuze_y
  354. else:
  355. new_y = y + keuze_y
  356. bord[new_y][x] = stuk
  357. bord[y][x] = '___'
  358. elif(zet == 2):
  359. #slaan
  360. slabestemming = list(input('Welk stuk wilt u slaan?'))
  361. x_slastuk = int(letters.index(slabestemming[1]))
  362. y_slastuk = int(slabestemming[0])
  363. slastuk = bord[y_slastuk][x_slastuk]
  364. if(speler == 'Wit'):
  365. symbool = z_symbolen
  366. newwy = y - 1
  367. else:
  368. symbool = w_symbolen
  369. newwy = y + 1
  370. if(bord[y_slastuk][x_slastuk] in symbool):
  371. if(slastuk == bord[newwy][x -1] or slastuk == bord[newwy][x +1]):
  372. print('Dit stuk kun je slaan!', slastuk)
  373. bord[y][x] = '___'
  374. bord[y_slastuk][x_slastuk] = stuk
  375. else:
  376. print('Dit is geen geldige slag!')
  377. Beurt()
  378. else:
  379. print('Dit is geen wit stuk!')
  380. print(y_slastuk,x_slastuk)
  381. Beurt()
  382.  
  383. #functie om de koning te verzetten
  384. def Koning():
  385. x_verschil = 0
  386. y_verschil = 0
  387. if(speler == "Wit"):
  388. symbolen = w_symbolen
  389. elif(speler == "Zwart"):
  390. symbolen = z_symbolen
  391. bestemming = input("Waar wil je heen?")
  392. x_verschil = x - int(letters.index(bestemming[1]))
  393. y_verschil = y - int(bestemming[0])
  394. while(x_verschil > 1 or x_verschil < -1):
  395. bestemming = input("Verplaats maar 1 vakje. ")
  396. while(y_verschil > 1 or y_verschil < -1):
  397. bestemming = input("Verplaats maar 1 vakje. ")
  398. while(x_verschil == y_verschil == 0):
  399. bestemming = input("Je mag niet blijven staan... ")
  400. while(bord[int(bestemming[0])][int(letters.index(bestemming[1]))] != '___'):
  401. if(bord[int(bestemming[0])][int(letters.index(bestemming[1]))] in symbolen):
  402. bestemming = input("Hier staat al een stuk, kies iets anders. ")
  403. bord[y][x] = '___'
  404. bord[int(bestemming[0])][int(letters.index(bestemming[1]))] = symbolen[0]
  405.  
  406.  
  407. #functies for het slaan met stukken
  408. global geslagen
  409. geslagen = 0
  410. def PionSlaan():
  411. global geslagen
  412. geslagen = 0
  413. while(geslagen == 0):
  414. if(bord[a + 1][b + 1] != '___' and bord[a + 1][b + 1] in w_symbolen):
  415. new_a = a + 1
  416. new_b = b + 1
  417. bord[a][b] = '___'
  418. bord[new_a][new_b] = '\033[31m ♟ \033[00m'
  419. geslagen = 1
  420. elif(bord[a + 1][b - 1] != '___' and bord[a + 1][b - 1] in w_symbolen):
  421. new_a = a + 1
  422. new_b = b - 1
  423. bord[a][b] = '___'
  424. bord[new_a][new_b] = '\033[31m ♟ \033[00m'
  425. geslagen = 1
  426. else:
  427. geslagen = 2
  428.  
  429. def TorenSlaan():
  430. time.sleep(0.1)
  431. global geslagen
  432. a_co = 1
  433. b_co = 1
  434. leeg = 0
  435. for i in range (7):
  436. if(bord[a_co][b] == '___' and [a_co, b] != [a, b]):
  437. leeg = leeg
  438. elif(bord[a_co][b] != '___' and [a_co, b] != [a, b]):
  439. leeg += 1
  440. elif(bord[a_co][b] in w_symbolen and geslagen != 1 and leeg == 0):
  441. bord[a_co][b] = '\033[31m ♜ \033[00m'
  442. bord[a][b] = '___'
  443. geslagen = 1
  444. a_co += 1
  445.  
  446. leeg = 0
  447. for i in range (7):
  448. if(bord[a][b_co] == '___' and [a, b_co] != [a, b]):
  449. leeg = leeg
  450. elif(bord[a][b_co] != '___' and [a, b_co] != [a, b]):
  451. leeg += 1
  452. elif(bord[a][b_co] in w_symbolen and geslagen != 1):
  453. time.sleep(5)
  454. bord[a][b_co] = '\033[31m ♜ \033[00m'
  455. bord[a][b] = '___'
  456. geslagen = 1
  457. b_co += 1
  458.  
  459.  
  460. def KoningSlaan():
  461. global geslagen
  462. if(a != 1 and a != 8):
  463. #center
  464. if(b != 1 and b != 8):
  465. if(bord[a - 1][b - 1] in w_symbolen and geslagen != 1):
  466. bord[a - 1][b - 1] = '\033[31m ♚ \033[00m'
  467. bord[a][b] = '___'
  468. geslagen = 1
  469. elif(bord[a - 1][b] in w_symbolen and geslagen != 1):
  470. bord[a - 1][b] = '\033[31m ♚ \033[00m'
  471. bord[a][b] = '___'
  472. geslagen = 1
  473. elif(bord[a][b - 1] in w_symbolen and geslagen != 1):
  474. bord[a][b -1] = '\033[31m ♚ \033[00m'
  475. bord[a][b] = '___'
  476. geslagen = 1
  477. elif(bord[a + 1][b - 1] in w_symbolen and geslagen != 1):
  478. bord[a + 1][b - 1] = '\033[31m ♚ \033[00m'
  479. bord[a][b] = '___'
  480. geslagen = 1
  481. elif(bord[a + 1][b] in w_symbolen and geslagen != 1):
  482. bord[a + 1][b] = '\033[31m ♚ \033[00m'
  483. bord[a][b] = '___'
  484. geslagen = 1
  485. elif(bord[a + 1][b + 1] in w_symbolen and geslagen != 1):
  486. bord[a + 1][b + 1] = '\033[31m ♚ \033[00m'
  487. bord[a][b] = '___'
  488. geslagen = 1
  489. #rechtsmidden
  490. elif(b == 8):
  491. if(bord[a - 1][b - 1] in w_symbolen and geslagen != 1):
  492. bord[a - 1][b - 1] = '\033[31m ♚ \033[00m'
  493. bord[a][b] = '___'
  494. geslagen = 1
  495. elif(bord[a - 1][b] in w_symbolen and geslagen != 1):
  496. bord[a - 1][b] = '\033[31m ♚ \033[00m'
  497. bord[a][b] = '___'
  498. geslagen = 1
  499. elif(bord[a - 1][b + 1] in w_symbolen and geslagen != 1):
  500. bord[a - 1][b + 1] = '\033[31m ♚ \033[00m'
  501. bord[a][b] = '___'
  502. geslagen = 1
  503. elif(bord[a][b - 1] in w_symbolen and geslagen != 1):
  504. bord[a][b - 1] = '\033[31m ♚ \033[00m'
  505. bord[a][b] = '___'
  506. geslagen = 1
  507. elif(bord[a][b + 1] in w_symbolen and geslagen != 1):
  508. bord[a][b + 1] = '\033[31m ♚ \033[00m'
  509. bord[a][b] = '___'
  510. geslagen = 1
  511. elif(bord[a + 1][b - 1] in w_symbolen and geslagen != 1):
  512. bord[a + 1][b - 1] = '\033[31m ♚ \033[00m'
  513. bord[a][b] = '___'
  514. geslagen = 1
  515. elif(bord[a + 1][b] in w_symbolen and geslagen != 1):
  516. bord[a + 1][b] = '\033[31m ♚ \033[00m'
  517. bord[a][b] = '___'
  518. geslagen = 1
  519. #linksmidden
  520. elif(b == 1):
  521. if(bord[a - 1][b] in w_symbolen and geslagen != 1):
  522. bord[a - 1][b] = '\033[31m ♚ \033[00m'
  523. bord[a][b] = '___'
  524. geslagen = 1
  525. elif(bord[a - 1][b + 1] in w_symbolen and geslagen != 1):
  526. bord[a - 1][b + 1] = '\033[31m ♚ \033[00m'
  527. bord[a][b] = '___'
  528. geslagen = 1
  529. elif(bord[a][b + 1] in w_symbolen and geslagen != 1):
  530. bord[a][b + 1] = '\033[31m ♚ \033[00m'
  531. bord[a][b] = '___'
  532. geslagen = 1
  533. elif(bord[a + 1][b] in w_symbolen and geslagen != 1):
  534. bord[a + 1][b] = '\033[31m ♚ \033[00m'
  535. bord[a][b] = '___'
  536. geslagen = 1
  537. elif(bord[a + 1][b + 1] in w_symbolen and geslagen != 1):
  538. bord[a + 1][b + 1] = '\033[31m ♚ \033[00m'
  539. bord[a][b] = '___'
  540. geslagen = 1
  541. #onder
  542. elif(a == 8):
  543. #middenonder
  544. if(b != 1 and b != 8):
  545. if(bord[a - 1][b - 1] in w_symbolen and geslagen != 1):
  546. bord[a - 1][b - 1] = '\033[31m ♚ \033[00m'
  547. bord[a][b] = '___'
  548. geslagen = 1
  549. elif(bord[a - 1][b] in w_symbolen and geslagen != 1):
  550. bord[a - 1][b] = '\033[31m ♚ \033[00m'
  551. bord[a][b] = '___'
  552. geslagen = 1
  553. elif(bord[a - 1][b + 1] in w_symbolen and geslagen != 1):
  554. bord[a - 1][b + 1] = '\033[31m ♚ \033[00m'
  555. bord[a][b] = '___'
  556. geslagen = 1
  557. elif(bord[a][b - 1] in w_symbolen and geslagen != 1):
  558. bord[a][b - 1] = '\033[31m ♚ \033[00m'
  559. bord[a][b] = '___'
  560. geslagen = 1
  561. elif(bord[a][b + 1] in w_symbolen and geslagen != 1):
  562. bord[a][b + 1] = '\033[31m ♚ \033[00m'
  563. bord[a][b] = '___'
  564. geslagen = 1
  565. #rechtsonder
  566. elif(b == 8):
  567. if(bord[a - 1][b] in w_symbolen and geslagen != 1):
  568. bord[a - 1][b] = '\033[31m ♚ \033[00m'
  569. bord[a][b] = '___'
  570. geslagen = 1
  571. elif(bord[a - 1][b - 1] in w_symbolen and geslagen != 1):
  572. bord[a - 1][b - 1] = '\033[31m ♚ \033[00m'
  573. bord[a][b] = '___'
  574. geslagen = 1
  575. elif(bord[a][b - 1] in w_symbolen and geslagen != 1):
  576. bord[a][b - 1] = '\033[31m ♚ \033[00m'
  577. bord[a][b] = '___'
  578. geslagen = 1
  579. #linksonder
  580. elif(b == 1):
  581. if(bord[a - 1][b] in w_symbolen and geslagen != 1):
  582. bord[a - 1][b] = '\033[31m ♚ \033[00m'
  583. bord[a][b] = '___'
  584. geslagen = 1
  585. elif(bord[a - 1][b + 1] in w_symbolen and geslagen != 1):
  586. bord[a - 1][b + 1] = '\033[31m ♚ \033[00m'
  587. bord[a][b] = '___'
  588. geslagen = 1
  589. elif(bord[a][b + 1] in w_symbolen and geslagen != 1):
  590. bord[a][b + 1] = '\033[31m ♚ \033[00m'
  591. bord[a][b] = '___'
  592. geslagen = 1
  593. #boven
  594. elif(a == 1):
  595. #middenboven
  596. if(b != 1 and b != 8):
  597. if(bord[a][b - 1] in w_symbolen and geslagen != 1):
  598. bord[a][b - 1] = '\033[31m ♚ \033[00m'
  599. bord[a][b] = '___'
  600. geslagen = 1
  601. elif(bord[a][b + 1] in w_symbolen and geslagen != 1):
  602. bord[a][b + 1] = '\033[31m ♚ \033[00m'
  603. bord[a][b] = '___'
  604. geslagen = 1
  605. elif(bord[a + 1][b - 1] in w_symbolen and geslagen != 1):
  606. bord[a + 1][b - 1] = '\033[31m ♚ \033[00m'
  607. bord[a][b] = '___'
  608. geslagen = 1
  609. elif(bord[a + 1][b] in w_symbolen and geslagen != 1):
  610. bord[a + 1][b] = '\033[31m ♚ \033[00m'
  611. bord[a][b] = '___'
  612. geslagen = 1
  613. elif(bord[a + 1][b + 1] in w_symbolen and geslagen != 1):
  614. bord[a + 1][b + 1] = '\033[31m ♚ \033[00m'
  615. bord[a][b] = '___'
  616. geslagen = 1
  617. #rechtsboven
  618. elif(b == 8):
  619. if(bord[a][b - 1] in w_symbolen and geslagen != 1):
  620. bord[a][b - 1] = '\033[31m ♚ \033[00m'
  621. bord[a][b] = '___'
  622. geslagen = 1
  623. elif(bord[a + 1][b - 1] in w_symbolen and geslagen != 1):
  624. bord[a + 1][b - 1] = '\033[31m ♚ \033[00m'
  625. bord[a][b] = '___'
  626. geslagen = 1
  627. elif(bord[a + 1][b] in w_symbolen and geslagen != 1):
  628. bord[a + 1][b] = '\033[31m ♚ \033[00m'
  629. bord[a][b] = '___'
  630. geslagen = 1
  631. #linksboven
  632. elif(b == 1):
  633. if(bord[a][b + 1] in w_symbolen and geslagen != 1):
  634. bord[a][b + 1] = '\033[31m ♚ \033[00m'
  635. bord[a][b] = '___'
  636. geslagen = 1
  637. elif(bord[a + 1][b] in w_symbolen and geslagen != 1):
  638. bord[a + 1][b] = '\033[31m ♚ \033[00m'
  639. bord[a][b] = '___'
  640. geslagen = 1
  641. elif(bord[a + 1][b + 1] in w_symbolen and geslagen != 1):
  642. bord[a + 1][b + 1] = '\033[31m ♚ \033[00m'
  643. bord[a][b] = '___'
  644. geslagen = 1
  645.  
  646.  
  647. def Lopen():
  648. z = 0
  649. x = 0
  650. y = 0
  651. pionnen = []
  652. mogelijkx = []
  653. mogelijky = []
  654. torens = []
  655. for i in stukken:
  656. if(bord[stukken[z][0]][stukken[z][1]] == z_symbolen[5]):
  657. pionnen.append([stukken[z][0], stukken[z][1]])
  658. z += 1
  659. z = 0
  660. for i in stukken:
  661. if(bord[stukken[z][0]][stukken[z][1]] == z_symbolen[2]):
  662. torens.append([stukken[z][0], stukken[z][1]])
  663. z += 1
  664.  
  665. keuze = ["pion", "pion", "pion", "toren"]
  666. keus = random.choice(keuze)
  667. time.sleep(1)
  668. if(keus == "pion"):
  669. z = random.randint(0, len(pionnen))
  670. k = stukken[z][0]
  671. l = stukken[z][1]
  672. if(k == 2):
  673. bord[k + 2][l] = z_symbolen[5]
  674. bord[k][l] = '___'
  675. else:
  676. bord[k + 1][l] = z_symbolen[5]
  677. bord[k][l] = '___'
  678. elif(keus == "toren"):
  679. lire = random.randint(0, len(torens))
  680. if(lire == 0):
  681. a = torens[0][0]
  682. b = torens[0][1]
  683. else:
  684. a = torens[1][0]
  685. b = torens[1][1]
  686. richtingen = ["links", "rechts", "boven", "onder"]
  687. if(a == 1):
  688. richtingen.remove("boven")
  689. elif(a == 8):
  690. richtingen.remove("onder")
  691. if(b == 1):
  692. richtingen.remove("links")
  693. if(b == 8):
  694. richtingen.remove("rechts")
  695. print(richtingen)
  696. if("rechts" in richtingen):
  697. while(x < 8):
  698. if(bord[a][b + x] == '___' or b + x == b):
  699. if(x != 0):
  700. mogelijkx.append(x)
  701. else:
  702. if(x == 0):
  703. richtingen.remove('rechts')
  704. break
  705. x += 1
  706. x = 0
  707. if("links" in richtingen):
  708. time.sleep(1)
  709. while(x < 8):
  710. if(bord[a][b - x] == '___' or b - x == b):
  711. if(x != 0):
  712. mogelijkx.append(x)
  713. else:
  714. if(x == 0):
  715. richtingen.remove('links')
  716. break
  717. x += 1
  718. print(mogelijkx)
  719. if("boven" in richtingen):
  720. while(y < 8):
  721. if(bord[a - y][b] == '___' or a - y == a):
  722. if(y != 0):
  723. mogelijkx.append(y)
  724. else:
  725. if(y == 0):
  726. richtingen.remove('boven')
  727. break
  728. y += 1
  729. y = 0
  730. if("onder" in richtingen):
  731. while(y < 8):
  732. if(bord[a + y][b] == '___' or a + y == a):
  733. if(y != 0):
  734. mogelijkx.append(y)
  735. else:
  736. if(y == 0):
  737. richtingen.remove('onder')
  738. break
  739. y += 1
  740. error = False
  741. if(mogelijky == []):
  742. try:
  743. richtingen.remove("onder")
  744. except ValueError:
  745. richtingen.remove("boven")
  746. error = True
  747. finally:
  748. if(error == False):
  749. try:
  750. richtingen.remove("boven")
  751. except ValueError:
  752. print('')
  753. error = False
  754. if(mogelijkx == []):
  755. try:
  756. richtingen.remove("links")
  757. except ValueError:
  758. richtingen.remove("rechts")
  759. error = True
  760. finally:
  761. if(error == False):
  762. try:
  763. richtingen.remove("rechts")
  764. except ValueError:
  765. print('')
  766. richting = random.choice(richtingen)
  767. time.sleep(2)
  768. if(richting == 'rechts'):
  769. zet = random.choice(mogelijkx)
  770. bord[a][b + zet] = z_symbolen[2]
  771. bord[a][b] = '___'
  772. elif(richting == 'links'):
  773. zet = random.choice(mogelijkx)
  774. bord[a][b - zet] = z_symbolen[2]
  775. bord[a][b] = '___'
  776. elif(richting == 'boven'):
  777. zet = random.choice(mogelijky)
  778. bord[a - zet][b] = z_symbolen[2]
  779. bord[a][b] = '___'
  780. elif(richting == 'onder'):
  781. zet = random.choice(mogelijky)
  782. bord[a + zet][b] = z_symbolen[2]
  783. bord[a][b] = '___'
  784.  
  785.  
  786. #De funcite om de AI een zet te laten maken
  787. def AI():
  788. global stukken
  789. stukken = []
  790. global z
  791. z = 0
  792.  
  793. for i in bord:
  794. y = 1
  795. while(y < 9):
  796. x = 1
  797. while(x < 9):
  798. if(bord[y][x] in z_symbolen):
  799. if([y, x] not in stukken):
  800. stukken.append([y, x])
  801. x += 1
  802. y += 1
  803. z = 0
  804. for i in stukken:
  805. global a
  806. global b
  807. a = stukken[z][0]
  808. b = stukken[z][1]
  809. if(geslagen == 1):
  810. break
  811. if(bord[stukken[z][0]][stukken[z][1]] == z_symbolen[5] and geslagen != 1):
  812. PionSlaan()
  813. elif(bord[stukken[z][0]][stukken[z][1]] == z_symbolen[2] and geslagen != 1):
  814. TorenSlaan()
  815. elif(bord[stukken[z][0]][stukken[z][1]] == z_symbolen[0] and geslagen != 1):
  816. KoningSlaan()
  817. z += 1
  818. if(geslagen != 1):
  819. Lopen()
  820.  
  821. #definieer stukken
  822. w_symbolen = [' ♔ ',' ♕ ',' ♖ ',' ♗ ',' ♘ ',' ♙ ']
  823. z_symbolen = ['\033[31m ♚ \033[00m','\033[31m ♛ \033[00m','\033[31m ♜ \033[00m','\033[31m ♝ \033[00m','\033[31m ♞ \033[00m','\033[31m ♟ \033[00m',]
  824. namen = ['koning','dame','toren','loper','paard','pion']
  825.  
  826.  
  827. #voer functies van het programma uit
  828. Startpositie()
  829. PrintBord()
  830. #Het uitvoeren van onze functies! Met controle op winnaar
  831. koningen = 4
  832. print('Beste Speler! \n \nWelkom bij ons schaakspel. Selecteer stukken op Algebraïsche volgorde AUB! \nBijvoorbeeld 7a of 7A \n')
  833. keuze_start = int(input('Wilt u tegen het AI(1) of met iemand anders(2) spelen? '))
  834.  
  835.  
  836. while(koningen == 4):
  837. speler = 'Wit'
  838. Beurt()
  839. time.sleep(1)
  840.  
  841. replit.clear()
  842. PrintBord()
  843.  
  844. tel_koningen()
  845. if(koningen < 4):
  846. print('Wit heeft gewonnen!')
  847. break
  848. speler = 'Zwart'
  849. geslagen = 0
  850.  
  851. if(keuze_start == 1):
  852. AI()
  853. else:
  854. Beurt()
  855.  
  856. geslagen = 0
  857.  
  858. replit.clear()
  859. PrintBord()
  860.  
  861. tel_koningen()
  862. if(koningen < 4):
  863. print('Zwart heeft gewonnen!')
  864. break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement