Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- CHOICES = [1, 2, 3, 4, 5, 6, 7]
- GAME_OVER = False
- doorgaan = True
- KOLOMMEN = [0, 0, 0, 0, 0, 0, 0, 0]
- bord = [
- [" ", " ", " ", " ", " ", " ", " "],
- [" ", " ", " ", " ", " ", " ", " "],
- [" ", " ", " ", " ", " ", " ", " "],
- [" ", " ", " ", " ", " ", " ", " "],
- [" ", " ", " ", " ", " ", " ", " "],
- [" ", " ", " ", " ", " ", " ", " "],
- ]
- bord_new = [
- [" ", " ", " ", " ", " ", " ", " "],
- [" ", " ", " ", " ", " ", " ", " "],
- [" ", " ", " ", " ", " ", " ", " "],
- [" ", " ", " ", " ", " ", " ", " "],
- [" ", " ", " ", " ", " ", " ", " "],
- [" ", " ", " ", " ", " ", " ", " "],
- ]
- def bordweergave(bord):
- """Geeft het bord weer.
- :param bord: Het bord dat weergegeven moet worden.
- :type bord: str
- """
- print(" 1 2 3 4 5 6 7")
- print(" +---+---+---+---+---+---+---+")
- print("1: | " + bord[0][0] + " | " + bord[0][1] + " | " + bord[0][2] + " | " + bord[0][3] + " | " + bord[0][4] + " | " + bord[0][5] + " | " + bord[0][6] + " |")
- print(" +---+---+---+---+---+---+---+")
- print("2: | " + bord[1][0] + " | " + bord[1][1] + " | " + bord[1][2] + " | " + bord[1][3] + " | " + bord[1][4] + " | " + bord[1][5] + " | " + bord[1][6] + " |")
- print(" +---+---+---+---+---+---+---+")
- print("3: | " + bord[2][0] + " | " + bord[2][1] + " | " + bord[2][2] + " | " + bord[2][3] + " | " + bord[2][4] + " | " + bord[2][5] + " | " + bord[2][6] + " |")
- print(" +---+---+---+---+---+---+---+")
- print("4: | " + bord[3][0] + " | " + bord[3][1] + " | " + bord[3][2] + " | " + bord[3][3] + " | " + bord[3][4] + " | " + bord[3][5] + " | " + bord[3][6] + " |")
- print(" +---+---+---+---+---+---+---+")
- print("5: | " + bord[4][0] + " | " + bord[4][1] + " | " + bord[4][2] + " | " + bord[4][3] + " | " + bord[4][4] + " | " + bord[4][5] + " | " + bord[4][6] + " |")
- print(" +---+---+---+---+---+---+---+")
- print("6: | " + bord[5][0] + " | " + bord[5][1] + " | " + bord[5][2] + " | " + bord[5][3] + " | " + bord[5][4] + " | " + bord[5][5] + " | " + bord[5][6] + " |")
- print(" +---+---+---+---+---+---+---+")
- print('\n')
- def gebruikers_zet(bord, piece, speler, bot=False):
- good_choice = False
- loop = True
- while loop:
- try:
- zet_toegestaan = 0
- while zet_toegestaan == 0:
- while not good_choice:
- if not bot:
- kolom = int(input(f"Speler {speler}({piece}) Kies kolom (1-7)\n"))
- if KOLOMMEN[kolom] < 6 and kolom in CHOICES:
- KOLOMMEN[kolom] += 1
- good_choice = True
- elif bot:
- kolom = random.randint(1, 7)
- if KOLOMMEN[kolom] < 6 and kolom in CHOICES:
- KOLOMMEN[kolom] += 1
- good_choice = True
- for rij in range(6, 0, -1):
- if (1 <= rij <= 6) and (1 <= kolom <= 7) and (bord[rij-1][kolom-1] == ' '):
- bord[rij-1][kolom-1] = piece
- zet_toegestaan = 1
- print("\nJe hebt je steen gezet.")
- loop = False
- break
- else:
- print("Hokje kan niet worden gekozen, vul een getal tussen 0 en 7 in!\n")
- except NameError:
- print("Alleen nummers tussen 1 en 7 zijn toegestaan.")
- except IndexError:
- print("Je kunt alleen maar kolommen tussen 1 en 7 selecteren, en rijen tussen 1 en 6.")
- except ValueError:
- print("Probeer het opnieuw.")
- def wincheck(bord):
- global uitvoeren
- # Check horizontaal (bord)
- for rij in range(6):
- for kolom in range(4):
- if (bord[rij][kolom] == bord[rij][kolom + 1] == bord[rij][kolom + 2] ==
- bord[rij][kolom + 3]) and (bord[rij][kolom] != " "):
- uitvoeren = False
- return True
- # Check verticaal (kolommen)
- for kolom in range(7):
- for rij in range(3):
- if (bord[rij][kolom] == bord[rij + 1][kolom] == bord[rij + 2][kolom] ==
- bord[rij + 3][kolom]) and (bord[rij][kolom] != " "):
- uitvoeren = False
- return True
- # Check diagonaal (links-boven naar rechts-onder)
- for rij in range(3):
- for kolom in range(4):
- if (bord[rij][kolom] == bord[rij + 1][kolom + 1] == bord[rij + 2][kolom + 2] ==
- bord[rij + 3][kolom + 3]) and (bord[rij][kolom] != " "):
- uitvoeren = False
- return True
- # Check diagonaal (links-onder naar rechtsboven)
- for rij in range(5, 2, -1):
- for kolom in range(3):
- if (bord[rij][kolom] == bord[rij - 1][kolom + 1] == bord[rij - 2][kolom + 2] ==\
- bord[rij - 3][kolom + 3]) and (bord[rij][kolom] != " "):
- uitvoeren = False
- return True
- # Geen winnaar --> Return empty string
- return ""
- def menu():
- """Start menu waarin speler keus kan maken."""
- print("Welkom bij 4-op-een-rij. Dit spel heeft verschillende gamemodes:")
- print("1. Singleplayer (tegen de computer).")
- print("2. Multiplayer (met twee personen).\n")
- print("Vul '1' in om singleplayer te starten.")
- print("Vul '2' in om multiplayer te starten.")
- print("Vul '3' in om het spel af te sluiten.")
- def menu_choice():
- game_mode_choice = input("> ")
- return game_mode_choice
- def start_game(bord, robot=False):
- global looping
- """
- Start het spel met het speelbord
- :param bord: Het bord waarop het spel plaatsvindt
- :type bord: str
- :param robot: Bepaald of speler tegen a.i speel of niet., defaults to False
- :param robot: bool, optional
- """
- zetten = 0
- if robot:
- eerste_zet = input("Wil je als eerst een zet zetten? (j/n) ")
- if eerste_zet == 'j':
- zetten = 0
- else:
- zetten = 1
- bordweergave(bord)
- while zetten < 20:
- if zetten == 0:
- # Speler = "X"
- gebruikers_zet(bord, 'X', 1)
- bordweergave(bord)
- if wincheck(bord):
- print("Gewonnen!")
- zetten = 20
- zetten += 1
- elif zetten == 1:
- #speler = "O"
- if not robot:
- gebruikers_zet(bord, 'O', 2)
- bordweergave(bord)
- else:
- gebruikers_zet(bord, 'O', 1, bot=True)
- bordweergave(bord)
- if wincheck(bord):
- print("Gewonnen!")
- zetten = 20
- if wincheck(bord):
- print("Gewonnen!")
- zetten = 20
- zetten -= 1
- def main():
- global doorgaan
- global bord
- global bord_new
- """Main loop van het spel."""
- menu()
- looping = True
- while looping:
- game_mode_choice = menu_choice()
- # Singleplayer
- if game_mode_choice == "1":
- start_game(bord, robot=True)
- looping = False
- print("Wil je doorgaan met spelen? (j/n)")
- antwoord = input("> ")
- if antwoord == 'j':
- doorgaan = True
- bord = bord_new
- else:
- doorgaan = False
- # Multiplayer
- elif game_mode_choice == "2":
- start_game(bord, robot=False)
- looping = False
- print("Wil je doorgaan met spelen? (j/n)")
- antwoord = input("> ")
- if antwoord == 'j':
- doorgaan = True
- bord = bord_new
- else:
- doorgaan = False
- elif game_mode_choice == "3":
- looping = False
- doorgaan = False
- else:
- print("Kies een goed antwoord!")
- # Run spel.
- while doorgaan:
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement