Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.24 KB | None | 0 0
  1. import random
  2. ####### HEAD #################
  3. n = int(input("ใส่ขนาดตาราง: "))
  4. table = [[0]*n for i in range(n)]
  5. turn = random.randint(1,2)
  6. r = 1
  7. c = 1
  8. ###########################################
  9. def reports():
  10. keep = "+"
  11. for i in range(n):
  12. keep+="---+"
  13. print(keep)
  14. for i in table:
  15. keep2 = "|"
  16. for j in i:
  17. if j == 0:
  18. keep2 = keep2 + " "+ "|"
  19. elif j == 1:
  20. keep2 = keep2 + " o "+ "|"
  21. else:
  22. keep2 = keep2 + " x "+ "|"
  23. print(keep2)
  24. print(keep)
  25. ############################################
  26. def setOthello():
  27. table[n//2-1][n//2-1] = 1
  28. table[n//2][n//2] = 1
  29. table[n//2][n//2-1] = 2
  30. table[n//2-1][n//2] = 2
  31. #############################################
  32. def getPoints():
  33. global turn
  34. global r
  35. global c
  36. show_1 = "ใส่ตำแหน่งที่ แถว 0-"+str(n-1)+": "
  37. show_2 = "ใส่ตำแหน่งที่ คอลัมน์ 0-"+str(n-1)+": "
  38. try:
  39. rows = int(input(show_1))
  40. cols = int(input(show_2))
  41. except:
  42. return True
  43. if table[rows][cols] !=0:
  44. return True
  45. else:
  46. table[rows][cols]=turn
  47. check(rows,cols,turn)
  48. if turn == 1:
  49. turn =2
  50. else:
  51. turn = 1
  52. return False
  53. ##########################################################################################################################################
  54. ######
  55. def upLeft(rows,cols,turn):
  56. global r
  57. global c
  58. if cols-c == -1 or rows-r == -1 or cols-c-1 == -1 or rows-r-1 == -1:
  59. return False
  60. if (table[rows-r][cols-c]!=0 and table[rows-r][cols-c]!=turn) and (rows-r != -1 and cols-c != -1):
  61. if table[rows-r-1][cols-c-1] == turn and (rows-r-1 != -1 and cols-c-1 != -1):
  62. table[rows-r][cols-c] = turn
  63. return True
  64. else:
  65. r+=1
  66. c+=1
  67. if upLeft(rows,cols,turn):
  68. r-=1
  69. c-=1
  70. table[rows-r][cols-c] = turn
  71. return True
  72. else:
  73. return False
  74. else:
  75. return False
  76. def upMid(rows,cols,turn):
  77. global r
  78. if rows-r == -1 or rows-r-1 == -1:
  79. return False
  80. if (table[rows-r][cols]!=0 and table[rows-r][cols]!=turn) and rows-r != -1 :
  81. if table[rows-r-1][cols] == turn and rows-r-1 != -1:
  82. table[rows-r][cols] = turn
  83. return True
  84. else:
  85. r+=1
  86. if upMid(rows,cols,turn):
  87. r-=1
  88. table[rows-r][cols] = turn
  89. return True
  90. else:
  91. return False
  92. else:
  93. return False
  94. def upRight(rows,cols,turn):
  95. global r
  96. global c
  97. if cols+c == n or rows-r == -1 or cols+c+1 == n or rows-r-1 == -1:
  98. return False
  99. if (table[rows-r][cols+c]!=0 and table[rows-r][cols+c]!=turn) and (rows-r != -1 and cols+c != n):
  100. if table[rows-r-1][cols+c+1] == turn and (rows-r-1 != -1 and cols+c+1 != n):
  101. table[rows-r][cols+c] = turn
  102. return True
  103. else:
  104. r+=1
  105. c+=1
  106. if upRight(rows,cols,turn):
  107. r-=1
  108. c-=1
  109. table[rows-r][cols+c] = turn
  110. return True
  111. else:
  112. return False
  113. else:
  114. return False
  115. def cenLeft(rows,cols,turn):
  116. global c
  117. if cols-c == -1 or cols-c-1 == -1:
  118. return False
  119. if (table[rows][cols-c]!=0 and table[rows][cols-c]!=turn) and cols-c != -1:
  120. if table[rows][cols-c-1] == turn and cols-c-1 != -1:
  121. table[rows][cols-c] = turn
  122. return True
  123. else:
  124. c+=1
  125. if cenLeft(rows,cols,turn):
  126. c-=1
  127. table[rows][cols-c] = turn
  128. return True
  129. else:
  130. return False
  131. else:
  132. return False
  133. def cenRight(rows,cols,turn):
  134. global c
  135. if cols+c == n or cols+c+1 == n:
  136. return False
  137. if (table[rows][cols+c]!=0 and table[rows][cols+c]!=turn) and cols+c != n:
  138. if table[rows][cols+c+1] == turn and cols+c+1 != n:
  139. table[rows][cols+c] = turn
  140. return True
  141. else:
  142. c+=1
  143. if cenRight(rows,cols,turn):
  144. c-=1
  145. table[rows][cols+c] = turn
  146. return True
  147. else:
  148. return False
  149. else:
  150. return False
  151. def downLeft(rows,cols,turn):
  152. global r
  153. global c
  154. if cols-c == -1 or rows+r == n or cols-c-1 == -1 or rows+r+1 == n:
  155. return False
  156. if (table[rows+r][cols-c]!=0 and table[rows+r][cols-c]!=turn) and (rows+r != n and cols-c != -1):
  157. if table[rows+r+1][cols-c-1] == turn and (rows+r+1 != n and cols-c-1 != -1):
  158. table[rows+r][cols-c] = turn
  159. return True
  160. else:
  161. r+=1
  162. c+=1
  163. if downLeft(rows,cols,turn):
  164. r-=1
  165. c-=1
  166. table[rows+r][cols-c] = turn
  167. return True
  168. else:
  169. return False
  170. else:
  171. return False
  172. def downMid(rows,cols,turn):
  173. global r
  174. if rows+r == n or rows+r+1 == n:
  175. return False
  176. if (table[rows+r][cols]!=0 and table[rows+r][cols]!=turn) and rows+r != n :
  177. if table[rows+r+1][cols] == turn and rows+r+1 != n:
  178. table[rows+r][cols] = turn
  179. return True
  180. else:
  181. r+=1
  182. if upMid(rows,cols,turn):
  183. r-=1
  184. table[rows+r][cols] = turn
  185. return True
  186. else:
  187. return False
  188. else:
  189. return False
  190. def downRight(rows,cols,turn):
  191. global r
  192. global c
  193. if cols+c == n or rows+r == n or cols+c+1 == n or rows+r+1 == n:
  194. return False
  195. if (table[rows+r][cols+c]!=0 and table[rows+r][cols+c]!=turn) and (rows+r != n and cols+c != n):
  196. if table[rows+r+1][cols+c+1] == turn and (rows+r+1 != n and cols+c+1 != n):
  197. table[rows+r][cols+c] = turn
  198. return True
  199. else:
  200. r+=1
  201. c+=1
  202. if downRight(rows,cols,turn):
  203. r-=1
  204. c-=1
  205. table[rows+r][cols+c] = turn
  206. return True
  207. else:
  208. return False
  209. else:
  210. return False
  211.  
  212. #################################################################################################################################################
  213.  
  214. def check(rows,cols,turn):
  215. global r
  216. global c
  217. r=1
  218. c=1
  219. upLeft(rows,cols,turn)
  220. r=1
  221. upMid(rows,cols,turn)
  222. r=1
  223. c=1
  224. upRight(rows,cols,turn)
  225. c=1
  226. cenLeft(rows,cols,turn)
  227. c=1
  228. cenRight(rows,cols,turn)
  229. r=1
  230. c=1
  231. downLeft(rows,cols,turn)
  232. r=1
  233. downMid(rows,cols,turn)
  234. r=1
  235. c=1
  236. downRight(rows,cols,turn)
  237.  
  238. ##########################################################################################################################################
  239. def isWinner(turn):
  240. o = 0
  241. x = 0
  242. for i in range(n):
  243. for j in range(n):
  244. if table[i][j] == 1:
  245. o+=1
  246. elif table[i][j] == 2:
  247. x+=1
  248. else:
  249. return False
  250. if i == n-1 and j == n-1:
  251. if o>x:
  252. print("ผู้เล่นคน o Win")
  253. elif o==x:
  254. print("Draw")
  255. else:
  256. print("ผู้เล่นคน x Win")
  257. return True
  258. #########################################################################################################################################
  259. if __name__ == "__main__":
  260. setOthello()
  261. reports()
  262. while True:
  263. if turn == 1:
  264. print("\nผู้เล่นคน: o")
  265. else:
  266. print("\nผู้เล่นคน: x")
  267. if getPoints():
  268. continue
  269. reports()
  270. if isWinner(turn):
  271. break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement