Tre i rad i Python [Del 2/2]

av Uppdaterad 2020-07-07

Nu bygger vi färdigt vårt Tre-i-rad-spel! Se del 1: https://youtu.be/Ya17S6xyT-4

Se del 2 (sista delen): https://youtu.be/EoryVzFU_Js

Den färdiga koden hittar du här nedan 🙂

print("#################")
print("### TRE I RAD ###")
print("#################")

board = [["-", "-", "-"],
          ["-", "-", "-"],
          ["-", "-", "-"]]

# skriv ut spelbrädet
def print_board():
  print(board[0][0] + "  " + board[0][1] + "  " + board[0][2])
  print(board[1][0] + "  " + board[1][1] + "  " + board[1][2])
  print(board[2][0] + "  " + board[2][1] + "  " + board[2][2])

# kolla om någon har vunnit
def has_winner():
  # kolla rader
  if board[0][0] == board[0][1] == board[0][2] != "-":
    return True
  elif board[1][0] == board[1][1] == board[1][2] != "-":
    return True
  elif board[2][0] == board[2][1] == board[2][2] != "-":
    return True
  # kolla kolumner
  elif board[0][0] == board[1][0] == board[2][0] != "-":
    return True
  elif board[0][1] == board[1][1] == board[2][1] != "-":
    return True
  elif board[0][2] == board[1][2] == board[2][2] != "-":
    return True
  # kolla diagonaler
  elif board[0][0] == board[1][1] == board[2][2] != "-":
    return True
  elif board[0][2] == board[1][1] == board[2][0] != "-":
    return True
  else:
    return False

# kolla om det är oavgjort
def is_tie():
  for rad in board:
    for element in rad:
      if element == "-":
        return False
  return True

# kicka igång spel
def play(player_turn):

  print_board()
  
  while True:
    print("Spelare " + player_turn + ", din tur.")

    input_ok = False
    rad = ""
    kolumn = ""
    while not input_ok:
      rad = input("Välj rad: ")
      kolumn = input("Välj kolumn: ")
      if rad in ["1", "2", "3"] and kolumn in ["1", "2", "3"]:
        rad = int(rad) - 1
        kolumn = int(kolumn) - 1
        if board[rad][kolumn] == "-":
          input_ok = True
        else:
          print("Upptagen plats. Försök igen.")
      else:
        print("Försök igen.")
 

    board[rad][kolumn] = player_turn

    print_board()

    # kolla om någon har vunnit eller blivit oavgjort
    if has_winner():
      print("Spelare " + player_turn + " vann!")
      break
    elif is_tie():
      print("Spelet blev oavgjort.")
      break

    # byt spelare
    if player_turn == "X":
      player_turn = "0"
    else:
      player_turn = "X"

play("X")

Unga Programmerare håller kurser i programmering för barn och ungdomar. Unga Programmerare startades av studenter från Chalmers Tekniska Högskola.

Företagsinfo

Innovation Institute of Sweden AB
Box 2062, 116 74 Stockholm
Org.nr. 559290-7603

Följ oss