Advertisement
Guest User

Untitled

a guest
Dec 12th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.16 KB | None | 0 0
  1. import random
  2. CHOICES = [1, 2, 3, 4, 5, 6, 7]
  3. GAME_OVER = False
  4. doorgaan = True
  5. KOLOMMEN = [0, 0, 0, 0, 0, 0, 0, 0]
  6. bord = [
  7. [" ", " ", " ", " ", " ", " ", " "],
  8. [" ", " ", " ", " ", " ", " ", " "],
  9. [" ", " ", " ", " ", " ", " ", " "],
  10. [" ", " ", " ", " ", " ", " ", " "],
  11. [" ", " ", " ", " ", " ", " ", " "],
  12. [" ", " ", " ", " ", " ", " ", " "],
  13. ]
  14.  
  15. bord_new = [
  16. [" ", " ", " ", " ", " ", " ", " "],
  17. [" ", " ", " ", " ", " ", " ", " "],
  18. [" ", " ", " ", " ", " ", " ", " "],
  19. [" ", " ", " ", " ", " ", " ", " "],
  20. [" ", " ", " ", " ", " ", " ", " "],
  21. [" ", " ", " ", " ", " ", " ", " "],
  22. ]
  23.  
  24.  
  25. def bordweergave(bord):
  26. """Geeft het bord weer.
  27.  
  28. :param bord: Het bord dat weergegeven moet worden.
  29. :type bord: str
  30. """
  31. print(" 1 2 3 4 5 6 7")
  32. print(" +---+---+---+---+---+---+---+")
  33. print("1: | " + bord[0][0] + " | " + bord[0][1] + " | " + bord[0][2] + " | " + bord[0][3] + " | " + bord[0][4] + " | " + bord[0][5] + " | " + bord[0][6] + " |")
  34. print(" +---+---+---+---+---+---+---+")
  35. print("2: | " + bord[1][0] + " | " + bord[1][1] + " | " + bord[1][2] + " | " + bord[1][3] + " | " + bord[1][4] + " | " + bord[1][5] + " | " + bord[1][6] + " |")
  36. print(" +---+---+---+---+---+---+---+")
  37. print("3: | " + bord[2][0] + " | " + bord[2][1] + " | " + bord[2][2] + " | " + bord[2][3] + " | " + bord[2][4] + " | " + bord[2][5] + " | " + bord[2][6] + " |")
  38. print(" +---+---+---+---+---+---+---+")
  39. print("4: | " + bord[3][0] + " | " + bord[3][1] + " | " + bord[3][2] + " | " + bord[3][3] + " | " + bord[3][4] + " | " + bord[3][5] + " | " + bord[3][6] + " |")
  40. print(" +---+---+---+---+---+---+---+")
  41. print("5: | " + bord[4][0] + " | " + bord[4][1] + " | " + bord[4][2] + " | " + bord[4][3] + " | " + bord[4][4] + " | " + bord[4][5] + " | " + bord[4][6] + " |")
  42. print(" +---+---+---+---+---+---+---+")
  43. print("6: | " + bord[5][0] + " | " + bord[5][1] + " | " + bord[5][2] + " | " + bord[5][3] + " | " + bord[5][4] + " | " + bord[5][5] + " | " + bord[5][6] + " |")
  44. print(" +---+---+---+---+---+---+---+")
  45. print('\n')
  46.  
  47.  
  48. def gebruikers_zet(bord, piece, speler, bot=False):
  49. good_choice = False
  50. loop = True
  51. while loop:
  52. try:
  53. zet_toegestaan = 0
  54. while zet_toegestaan == 0:
  55. while not good_choice:
  56. if not bot:
  57. kolom = int(input(f"Speler {speler}({piece}) Kies kolom (1-7)\n"))
  58. if KOLOMMEN[kolom] < 6 and kolom in CHOICES:
  59. KOLOMMEN[kolom] += 1
  60. good_choice = True
  61. elif bot:
  62. kolom = random.randint(1, 7)
  63. if KOLOMMEN[kolom] < 6 and kolom in CHOICES:
  64. KOLOMMEN[kolom] += 1
  65. good_choice = True
  66. for rij in range(6, 0, -1):
  67. if (1 <= rij <= 6) and (1 <= kolom <= 7) and (bord[rij-1][kolom-1] == ' '):
  68. bord[rij-1][kolom-1] = piece
  69. zet_toegestaan = 1
  70. print("\nJe hebt je steen gezet.")
  71. loop = False
  72. break
  73.  
  74. else:
  75. print("Hokje kan niet worden gekozen, vul een getal tussen 0 en 7 in!\n")
  76.  
  77. except NameError:
  78. print("Alleen nummers tussen 1 en 7 zijn toegestaan.")
  79. except IndexError:
  80. print("Je kunt alleen maar kolommen tussen 1 en 7 selecteren, en rijen tussen 1 en 6.")
  81. except ValueError:
  82. print("Probeer het opnieuw.")
  83.  
  84.  
  85. def wincheck(bord):
  86. global uitvoeren
  87. # Check horizontaal (bord)
  88. for rij in range(6):
  89. for kolom in range(4):
  90. if (bord[rij][kolom] == bord[rij][kolom + 1] == bord[rij][kolom + 2] ==
  91. bord[rij][kolom + 3]) and (bord[rij][kolom] != " "):
  92. uitvoeren = False
  93. return True
  94. # Check verticaal (kolommen)
  95. for kolom in range(7):
  96. for rij in range(3):
  97. if (bord[rij][kolom] == bord[rij + 1][kolom] == bord[rij + 2][kolom] ==
  98. bord[rij + 3][kolom]) and (bord[rij][kolom] != " "):
  99. uitvoeren = False
  100. return True
  101.  
  102. # Check diagonaal (links-boven naar rechts-onder)
  103.  
  104. for rij in range(3):
  105. for kolom in range(4):
  106. if (bord[rij][kolom] == bord[rij + 1][kolom + 1] == bord[rij + 2][kolom + 2] ==
  107. bord[rij + 3][kolom + 3]) and (bord[rij][kolom] != " "):
  108. uitvoeren = False
  109. return True
  110.  
  111.  
  112. # Check diagonaal (links-onder naar rechtsboven)
  113.  
  114. for rij in range(5, 2, -1):
  115. for kolom in range(3):
  116. if (bord[rij][kolom] == bord[rij - 1][kolom + 1] == bord[rij - 2][kolom + 2] ==\
  117. bord[rij - 3][kolom + 3]) and (bord[rij][kolom] != " "):
  118. uitvoeren = False
  119. return True
  120.  
  121. # Geen winnaar --> Return empty string
  122. return ""
  123.  
  124.  
  125. def menu():
  126. """Start menu waarin speler keus kan maken."""
  127. print("Welkom bij 4-op-een-rij. Dit spel heeft verschillende gamemodes:")
  128. print("1. Singleplayer (tegen de computer).")
  129. print("2. Multiplayer (met twee personen).\n")
  130. print("Vul '1' in om singleplayer te starten.")
  131. print("Vul '2' in om multiplayer te starten.")
  132. print("Vul '3' in om het spel af te sluiten.")
  133.  
  134.  
  135. def menu_choice():
  136. game_mode_choice = input("> ")
  137. return game_mode_choice
  138.  
  139.  
  140. def start_game(bord, robot=False):
  141. global looping
  142. """
  143. Start het spel met het speelbord
  144.  
  145. :param bord: Het bord waarop het spel plaatsvindt
  146. :type bord: str
  147. :param robot: Bepaald of speler tegen a.i speel of niet., defaults to False
  148. :param robot: bool, optional
  149. """
  150. zetten = 0
  151. if robot:
  152. eerste_zet = input("Wil je als eerst een zet zetten? (j/n) ")
  153. if eerste_zet == 'j':
  154. zetten = 0
  155. else:
  156. zetten = 1
  157. bordweergave(bord)
  158. while zetten < 20:
  159. if zetten == 0:
  160. # Speler = "X"
  161. gebruikers_zet(bord, 'X', 1)
  162. bordweergave(bord)
  163.  
  164. if wincheck(bord):
  165. print("Gewonnen!")
  166. zetten = 20
  167.  
  168. zetten += 1
  169.  
  170. elif zetten == 1:
  171. #speler = "O"
  172. if not robot:
  173. gebruikers_zet(bord, 'O', 2)
  174. bordweergave(bord)
  175. else:
  176. gebruikers_zet(bord, 'O', 1, bot=True)
  177. bordweergave(bord)
  178. if wincheck(bord):
  179. print("Gewonnen!")
  180. zetten = 20
  181.  
  182. if wincheck(bord):
  183. print("Gewonnen!")
  184. zetten = 20
  185. zetten -= 1
  186.  
  187.  
  188. def main():
  189. global doorgaan
  190. global bord
  191. global bord_new
  192. """Main loop van het spel."""
  193. menu()
  194. looping = True
  195. while looping:
  196. game_mode_choice = menu_choice()
  197. # Singleplayer
  198. if game_mode_choice == "1":
  199. start_game(bord, robot=True)
  200. looping = False
  201. print("Wil je doorgaan met spelen? (j/n)")
  202. antwoord = input("> ")
  203. if antwoord == 'j':
  204. doorgaan = True
  205. bord = bord_new
  206.  
  207. else:
  208. doorgaan = False
  209. # Multiplayer
  210. elif game_mode_choice == "2":
  211. start_game(bord, robot=False)
  212. looping = False
  213. print("Wil je doorgaan met spelen? (j/n)")
  214. antwoord = input("> ")
  215. if antwoord == 'j':
  216. doorgaan = True
  217. bord = bord_new
  218. else:
  219. doorgaan = False
  220.  
  221. elif game_mode_choice == "3":
  222. looping = False
  223. doorgaan = False
  224. else:
  225. print("Kies een goed antwoord!")
  226.  
  227.  
  228. # Run spel.
  229. while doorgaan:
  230. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement