Advertisement
Guest User

Untitled

a guest
Nov 25th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.27 KB | None | 0 0
  1. def newBoard(n):
  2.     if n > 0:
  3.         return [0 for x in range(n)]
  4.     else:
  5.         print ("n doit etre plus grand que 0")
  6.         exit(0)
  7.  
  8.  
  9. def display(board, n):
  10.     s = ""
  11.     indexes = ""
  12.     for i in range(0, n):
  13.         if board[i] == 1:
  14.             c = "X"
  15.         elif board[i] == 2:
  16.             c = "O"
  17.         else:
  18.             c = "."
  19.         s += c + " "
  20.         indexes += str(i + 1) + " "
  21.     print (s)
  22.     print (indexes)
  23.  
  24.  
  25. def possible(board, n, player, removed, i):
  26.     if player <= 0 or player > 2:
  27.         return False
  28.     if (board[i - 1] is not 0) or (i - 1 in removed) or (i > n):
  29.         return False
  30.     else:
  31.         return True
  32.  
  33.  
  34. def select(board, n, player, removed):
  35.     while True:
  36.         x = input("Player " + str(player) + " Entrer un nombre : ")
  37.         if int(x) > n:
  38.             pass
  39.         if (board[x - 1] == 0) and (x not in removed):
  40.             return x
  41.  
  42.  
  43. def put(board, n, player, removed, i):
  44.     if possible(board, n, player, removed, i):
  45.         board[i - 1] = player
  46.         removed = captured(board, n, i)
  47.         print ("Removed: "), removed
  48.         for j in range(len(removed)):
  49.             board[removed[j] - 1] = 0
  50.  
  51.  
  52. def again(board, n, player, removed):
  53.     for i in range(n):
  54.         if board[i] == 0:
  55.             return True
  56.     return False
  57.  
  58.  
  59. def win(board, n):
  60.     p1 = board.count(1)
  61.     p2 = board.count(2)
  62.     if p1 > p2:
  63.         return "Player 1 gagne"
  64.     elif p1 < p2:
  65.         return "Player 2 gagne"
  66.     else:
  67.         return "EgalitΓ©"
  68.  
  69.  
  70. def captured(board, n, i):
  71.     capture = []
  72.     # chercher les captures du cote droit
  73.     if i < n:
  74.         selected_player = board[i - 1]
  75.         j = i
  76.         while board[j] != selected_player and board[j] != 0:
  77.             j += 1
  78.             if j > n - 1:
  79.                 break
  80.  
  81.         if j >= n:
  82.             # on a atteint le mur
  83.             if board[n - 1] != selected_player and board[n - 1] != 0:
  84.                 for j in range(i, n):
  85.                     capture.append(j + 1)
  86.         else:
  87.             # on a atteint une pose du meme joueur, donc une capture entre deux
  88.             if board[j] == selected_player:
  89.                 for x in range(i, j):
  90.                     capture.append(x + 1)
  91.  
  92.     # chercher les captures du cote gauche
  93.     if i > 1:
  94.         selected_player = board[i - 1]
  95.         j = i - 2
  96.         while board[j] != selected_player and board[j] != 0:
  97.             j -= 1
  98.             if j < 0:
  99.                 break
  100.  
  101.         if j <= 0:
  102.             if board[0] != selected_player and board[0] != 0:
  103.                 for j in range(0, i - 1):
  104.                     capture.append(j + 1)
  105.  
  106.         else:
  107.             # on a atteint une pose du meme joueur, donc une capture entre deux
  108.             if board[j] == selected_player:
  109.                 for x in range(j + 1, i - 1):
  110.                     capture.append(x + 1)
  111.  
  112.     return capture
  113.  
  114.  
  115. def alak(n):
  116.     removed = []
  117.     player = 1
  118.     board = newBoard(n)
  119.     while again(board, n, player, removed):
  120.         display(board, n)
  121.         i = select(board, n, player, removed)
  122.         put(board, n, player, removed, i)
  123.         if player == 1:
  124.             player = 2
  125.         elif player == 2:
  126.             player = 1
  127.     print (win(board, n))
  128.  
  129. alak(9)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement