aIexandria

MPagodNaAko

Sep 25th, 2019
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.91 KB | None | 0 0
  1. print ("Welcome to Checkers!", "\n")
  2. board= [ ["-" , "x" , "-" , "x" , "-" , "x", "-", "x" , 8 ] ,
  3. ["x" , "-" , "x" , "-" , "x" , "-", "x", "-" , 7 ],
  4. ["-" , "x" , "-" , "x" , "-" , "x", "-", "x" , 6 ],
  5. ["-" , "-" , "-" , "-" , "-" , "-", "-", "-" , 5 ],
  6. ["-" , "-" , "-" , "-" , "-" , "-", "-", "-" , 4 ],
  7. ["o" , "-" , "o" , "-" , "o" , "-", "o", "-" , 3 ],
  8. ["-" , "o" , "-" , "o" , "-" , "o", "-", "o" , 2 ],
  9. ["o" , "-" , "o" , "-" , "o" , "-", "o", "-" , 1 ],
  10. ["A" , "B" , "C" , "D" , "E" , "F", "G", "H"] ]
  11. for i in range (len(board)) :
  12. for j in range (len(board[i])) :
  13. print (board[i][j], end = " ")
  14. print ()
  15.  
  16. letter = {"A":0, "B":1 , "C":2 , "D":3 , "E":4 , "F":5 , "G":6, "H":7}
  17. number = {"8":0, "7":1, "6":2, "5":3, "4":4, "3":5, "2":6, "1":7}
  18. rettel = {0:"A", 1:"B", 2:"C", 3:"D", 4:"E", 5:"F", 6:"G", 7:"H"}
  19. rebmun = {0:"8", 1:"7", 2:"6", 3:"5", 4:"4", 5:"3", 6:"2", 7:"1"}
  20.  
  21. def move_d():
  22. global dmove
  23. dmove = input("Dark pieces to play. Enter your move:")
  24. return dmove
  25.  
  26.  
  27. def move_l():
  28. global lmove
  29. lmove = input("Light pieces to play. Enter your move:")
  30. return lmove
  31.  
  32.  
  33.  
  34. def convertdmove(dmove):
  35.  
  36. da = dmove[0]
  37. db = dmove[1]
  38. dc = dmove[3]
  39. dd = dmove[4]
  40. global dx1
  41. global dy1
  42. global dx2
  43. global dy2
  44. dx1 = number[db]
  45. dx1 = int(dx1)
  46. dy1 = letter[da]
  47. dy1 = int(dy1)
  48. dx2 = number[dd]
  49. dx2 = int(dx2)
  50. dy2 = letter[dc]
  51. dy2 = int(dy2)
  52. return dx1,dy1,dx2,dy2
  53.  
  54.  
  55.  
  56. def convertlmove(lmove):
  57.  
  58. la = lmove[0]
  59. lb = lmove[1]
  60. lc = lmove[3]
  61. ld = lmove[4]
  62. global lx1
  63. global ly1
  64. global lx2
  65. global ly2
  66. lx1 = number[lb]
  67. lx1 = int(lx1)
  68. ly1 = letter[la]
  69. ly1 = int(ly1)
  70. lx2 = number[ld]
  71. lx2 = int(lx2)
  72. ly2 = letter[lc]
  73. ly2 = int(ly2)
  74.  
  75. #if len(lmove)>5:
  76.  
  77.  
  78.  
  79. def dmovement(board):
  80. board[dx1][dy1],board[dx2][dy2]=board[dx2][dy2],board[dx1][dy1]
  81. return board
  82.  
  83. def dmovement1(board):
  84. board[dx1][dy1],board[dx2][dy2]=board[dx2][dy2],board[dx1][dy1]
  85. board[dx2][dy2],board[dx3][dy3]=board[dx3][dy3],board[dx2][dy2]
  86. return board
  87.  
  88. #def dmovement2(board):
  89. #board[dx1][dy1],board[dx2][dy2]=board[dx2][dy2],board[dx1][dy1]
  90. #board[dx2][dy2],board[dx3][dy3]=board[dx3][dy3],board[dx2][dy2]
  91. #board[dx3][dy3],board[dx4][dy4]=board[dx4][dy4],board[dx3][dy3]
  92. #return board
  93.  
  94.  
  95. def lmovement(board):
  96. board[lx1][ly1],board[lx2][ly2]=board[lx2][ly2],board[lx1][ly1]
  97. return board
  98.  
  99.  
  100.  
  101. def validity_check_d():
  102. if len(dmove)>=5:
  103. if board[dx1][dy1]=="x":
  104. if dx2==dx1+1 and dy2==dy1-1:
  105. dmovement(board)
  106. elif dx2==dx1+1 and dy2==dy1+1:
  107. dmovement(board)
  108. elif dx2==dx1+2 or dx2==dx1-2 or dy2==dy1-2 or dy2==dy1+2:
  109. darkcapture()
  110. elif dx2!=dx1+1 or dy2!=dy1+1 or dy2!=dy1-1 or dx2!=dx1+2 or dx2!=dx1-2 or dy2!=dy1-2 or dy2!=dy1+2:
  111. print("Invalid input.Try again.")
  112. move_d()
  113. convertdmove(dmove)
  114. validity_check_d()
  115. elif board[dx1][dy1]!="x":
  116. print("Invalid input. Wrong piece. Try again.")
  117. move_d()
  118. convertdmove(dmove)
  119. validity_check_d()
  120. elif len(dmove)<5:
  121. print("Invalid input. Try again.")
  122. move_d()
  123. convertdmove(dmove)
  124. validity_check_d()
  125. elif dmove=="END" or dmove=="end" or dmove=="End":
  126. end()
  127.  
  128. def validity_check_l():
  129. if len(lmove)>=5:
  130. if board[lx1][ly1]=="o":
  131. if lx2==lx1-1 and ly2==ly1-1:
  132. lmovement(board)
  133. elif lx2==lx1-1 and ly2==ly1+1:
  134. lmovement(board)
  135. elif lx2==lx1+2 or lx2==lx1-2 or ly2==ly1-2 or ly2==ly1+2:
  136. lightcapture()
  137. elif lx2!=lx1+1 or ly2!=ly1+1 or ly2!=ly1-1:
  138. print("Invalid input.Try again.")
  139. move_l()
  140. convertlmove(lmove)
  141. validity_check_l()
  142. elif board[lx1][ly1]!="o":
  143. print("Invalid input. Wrong piece. Try again.")
  144. move_l()
  145. convertlmove(lmove)
  146. validity_check_l()
  147. elif lmove=="END" or lmove=="end" or lmove=="End":
  148. end()
  149. elif len(lmove)<5 and not ("END" or "end" or "End"):
  150. print("Invalid input. Try again.")
  151. move_l()
  152. convertlmove(lmove)
  153. validity_check_l()
  154.  
  155.  
  156. def darkcapture():
  157. global dcapture
  158. dcapture = 0
  159. for x in range (8):
  160. for y in range(8):
  161. if board[x][y]=="x" or board[x][y]=="X":
  162. if x-2 >= 0 or y-2 >= 0:
  163. if board[x-1][y-1]=="o" or board[x-1][y-1]=="O":
  164. if board[x-2][y-2]=="-":
  165. if dx2==x-2 and dy2==y-2:
  166. board[x-1][y-1]="-"
  167. dmovement(board)
  168. dcapture +=1
  169. return dcapture
  170. elif dx2!=x-2 and dy2!=y-2:
  171. print("Invalid input. Mandatory capture on", rettel[y],rebmun[x], rettel[y-2],rebmun[x-2])
  172. move_d()
  173. convertdmove(dmove)
  174. darkcapture()
  175. if x-2 >= 0 or y+2 < 8:
  176. if board[x-1][y+1]=="o" or board[x-1][y+1]=="O":
  177. if board[x-2][y+2]=="-":
  178. if dx2==x-2 and dy2==y+2:
  179. board[x-1][y+1]="-"
  180. dmovement(board)
  181. dcapture += 1
  182. return dcapture
  183. elif dx2!=x-2 or dy2!=y+2:
  184. print("Invalid input. Mandatory capture on", rettel[y],rebmun[x],rettel[y+2],rebmun[x-2])
  185. move_d()
  186. convertdmove(dmove)
  187. darkcapture()
  188. if x+2 < 8 and y-2 >= 0:
  189. if board[x+1][y-1]=="o" or board[x+1][y-1]=="O":
  190. if board[x+2][y-2]=="-":
  191. if dx2==x+2 or dy2==y-2:
  192. board[x+1][y-1]="-"
  193. dmovement(board)
  194. dcapture += 1
  195. return dcapture
  196. elif dx2!=x+2 and dy2!=y-2:
  197. print("Invalid input. Mandatory capture on", rettel[y],rebmun[x],rettel[y-2],rebmun[x+2])
  198. move_d()
  199. convertdmove(dmove)
  200. darkcapture()
  201. if x+2 < 8 or y+2 < 8:
  202. if board[x+1][y+1]=="o" or board[x+1][y+1]=="O":
  203. if board[x+2][y+2]=="-":
  204. if dx2==x+2 and dy2==x+2:
  205. board[x+1][y+1]="-"
  206. dmovement(board)
  207. dcapture += 1
  208. return dcapture
  209. elif dx2!=x+2 and dy2!=y+2:
  210. print("Invalid input. Mandatory capture on",rettel[y],rebmun[x],rettel[y+2],rebmun[x+2])
  211. move_d()
  212. convertdmove(dmove)
  213. darkcapture()
  214. else:
  215. continue
  216. else:
  217. continue
  218. else:
  219. continue
  220.  
  221. def lightcapture():
  222. global lcapture
  223. lcapture = 0
  224. for x in range (8):
  225. for y in range(8):
  226. if board[x][y]=="o" or board[x][y]=="O":
  227. if x-2 >= 0 or y-2 >= 0:
  228. if board[x-1][y-1]=="x" or board[x-1][y-1]=="X":
  229. if board[x-2][y-2]=="-":
  230. if lx2==x-2 and ly2==y-2:
  231. board[x-1][y-1]="-"
  232. lmovement(board)
  233. lcapture += 1
  234. return lcapture
  235. elif lx2!=x-2 or ly2!=y-2:
  236. print("Invalid input. Mandatory capture on", rettel[y],rebmun[x],rettel[y-2],rebmun[x-2])
  237. move_l()
  238. convertlmove(lmove)
  239. lightcapture()
  240. if x-2 >= 0 or y+2 < 8:
  241. if board[x-1][y+1]=="x" or board[x-1][y+1]=="X":
  242. if board[x-2][y+2]=="-":
  243. if lx2==x-2 and ly2==y+2:
  244. board[x-1][y+1]="-"
  245. lmovement(board)
  246. lcapture += 1
  247. return lcapture
  248. elif lx2!=x-2 or ly2!=y+2:
  249. print("Invalid input. Mandatory capture on", rettel[y],rebmun[x],rettel[y+2],rebmun[x-2])
  250. move_l()
  251. convertlmove(lmove)
  252. lightcapture()
  253. if x+2 < 8 and y-2 >= 0:
  254. if board[x+1][y-1]=="x" or board[x+1][y-1]=="X":
  255. if board[x+2][y-2]=="-":
  256. if lx2==x+2 and ly2==y-2:
  257. board[x+1][y-1]="-"
  258. lmovement(board)
  259. lcapture += 1
  260. return lcapture
  261. elif lx2!=x+2 or ly2!=y-2:
  262. print("Invalid input. Mandatory capture on", rettel[y],rebmun[x],rettel[y-2],rebmun[x+2])
  263. move_l()
  264. convertlmove(lmove)
  265. lightcapture()
  266. if x+2 < 8 or y+2 <8:
  267. if board[x+1][y+1]=="x" or board[x+1][y+1]=="X":
  268. if board[x+2][y+2]=="-":
  269. if lx2==x+2 and ly2==y+2:
  270. board[x+1][y+1]="-"
  271. lmovement(board)
  272. lcapture += 1
  273. return
  274. elif lx2!=x+2 and ly2==y+2:
  275. print("Invalid input. Mandatory capture on", rettel[y],rebmun[x], rettel[y+2],number[x+2])
  276. move_l()
  277. convertlmove(lmove)
  278. lightcapture()
  279. else:
  280. continue
  281. else:
  282. continue
  283. else:
  284. continue
  285.  
  286.  
  287. def end():
  288. lcapture = lightcapture()
  289. dcapture = darkcapture()
  290. print("ENDING GAME", "\n", "LIGHT PIECES =", lcapture , "POINTS.", "\n", "DARK PIECES = ", dcapture ,"POINTS." )
  291. if lcapture>dcapture:
  292. print("LIGHT PIECES WON!", "\n")
  293. if dcapture>lcapture:
  294. print("DARK PIECES WON!", "\n")
  295. if dcapture==lcapture:
  296. print("DRAW!")
  297.  
  298. def darkking():
  299. if dx2==7 and dy2==0:
  300. board[dx2][dy2]="X"
  301. elif dx2==7 and dy2==2:
  302. board[dx2][dy2]="X"
  303. elif dx2==7 and dy2==4:
  304. board[dx2][dy2]="X"
  305. elif dx2==7 and dy2==6:
  306. board[dx2][dy2]="X"
  307.  
  308. def lightking():
  309. if lx2==0 and ly2==1:
  310. board[lx2][ly2]="O"
  311. elif lx2==0 and ly2==3:
  312. board[lx2][ly2]="O"
  313. elif lx2==0 and ly2==5:
  314. board[lx2][ly2]="O"
  315. elif lx2==0 and ly2==7:
  316. board[lx2][ly2]="O"
  317.  
  318. def darkkingcheck():
  319. if dx1%2==0 or dx2%2==0 or dx1==0 or dx2==0:
  320. if dy1==1 or dy1==3 or dy1==5 or dy1==7 or dy2==1 or dy2==3 or dy2==5 or dy2==7:
  321. dmovement()
  322. elif dx1==1 or dx1==3 or dx1==5 or dx1==7 or dx2==1 or dx2==3 or dx2==5 or dx2==7:
  323. if dy1%2==0 or dy2%2==0 or dy1==0 or dy2==0:
  324. dmovement()
  325. else:
  326. print("Invalid input.Try again.")
  327. move_d()
  328. convertdmove(dmove)
  329. darkkingcheck()
  330.  
  331. def lightkingcheck():
  332. if lx1%2==0 or lx2%2==0 or lx1==0 or lx2==0:
  333. if ly1==1 or ly1==3 or ly1==5 or ly1==7 or ly2==1 or ly2==3 or ly2==5 or ly2==7:
  334. lmovement(board)
  335. elif lx1==1 or lx1==3 or lx1==5 or lx1==7 or lx2==1 or lx2==3 or lx2==5 or lx2==7:
  336. if ly1%2==0 or ly2%2==0 or ly1==0 or ly2==0:
  337. dmovement(board)
  338. else:
  339. print("Invalid input.Try again.")
  340. move_l()
  341. convertlmove(lmove)
  342. lightkingcheck()
  343.  
  344.  
  345.  
  346. def darkmove():
  347. move_d()
  348. convertdmove(dmove)
  349. validity_check_d()
  350. if board[7]=="x":
  351. darkking()
  352. darkkingcheck()
  353.  
  354. for i in range (len(board)) :
  355. for j in range (len(board[i])) :
  356. print (board[i][j], end = " ")
  357. print ()
  358. print ("\n","Dark player played:", dmove)
  359.  
  360.  
  361. def lightmove():
  362. move_l()
  363. convertlmove(lmove)
  364. validity_check_l()
  365. if board[0]=="o":
  366. lightking()
  367. lightkingcheck()
  368. for i in range (len(board)) :
  369. for j in range (len(board[i])) :
  370. print (board[i][j], end = " ")
  371. print ()
  372. print ("\n","Light player played:", lmove)
  373.  
  374.  
  375.  
  376. turn = 1
  377. while turn>=1:
  378. if turn%2==0:
  379. darkmove()
  380. else:
  381. lightmove()
  382. turn +=1
Advertisement
Add Comment
Please, Sign In to add comment