Advertisement
Guest User

Xadrez_em_Python

a guest
Apr 24th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 8.64 KB | None | 0 0
  1.  
  2. def Define_N():
  3.     n = ""
  4.     while type(n) != int:
  5.         n = input("Tamanho do tabuleiro :")
  6.         if n.isdigit():
  7.             n = int(n)
  8.             if not 3 <= n <= 8:
  9.                 n = n.__str__()
  10.                 print("\n", "Escolha Um Número de 3 até 8", "\n")
  11.         else:
  12.             print("\n", "Escolha Um Número de 3 até 8", "\n")
  13.     print("\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n")
  14.     return n
  15. ## RETORNA UM VALOR DE N INTEIRO (3,4,5,6,7,8)
  16. def Matriz_Inicial(N):
  17.     matriz_inicial = [[0] * N for _ in range(N)]
  18.     count_X = 0
  19.     count_Y = 1
  20.     while count_X < N:
  21.         matriz_inicial[0][count_X] = 1
  22.         count_X += 1
  23.     while count_Y <= N - 1:
  24.         count_X = 0
  25.         while count_X < N:
  26.             matriz_inicial[count_Y][count_X] = 0
  27.             count_X += 1
  28.         count_Y += 1
  29.     count_X = 0
  30.     while count_X < N:
  31.         matriz_inicial[N - 1][count_X] = 2
  32.         count_X += 1
  33.     return matriz_inicial
  34.  
  35.  
  36.  
  37.  
  38.     return matriz_inicial
  39. ## RETORNA MATRIZ INICIAL COM N COLUNAS E N LINHAS
  40. def print_Matriz (Matriz,N):
  41.     count_X=0
  42.     count_Y=0
  43.     while count_Y<N:
  44.         count_X = 0
  45.         while count_X < N:
  46.             print(Matriz[count_Y][count_X],"    ",end='')
  47.             count_X+=1
  48.         if count_Y<N-1:
  49.             print("\n","")
  50.         count_Y+=1
  51.     print()
  52. ## IMPRIME A MATRIZ COM N LINHAS E N COLUNAS
  53. def Jogada_Possivel_Jogador1(Matriz,N,CordY,CordX,Movi):
  54.     Possivel = False
  55.     if Matriz[CordY][CordX] == 1:
  56.         if Movi == 1:
  57.             if CordX != 0:
  58.                 if (Matriz[CordY + 1][CordX - 1] == 2):
  59.                     Possivel = True
  60.         if Movi == 2:
  61.             if (Matriz[CordY + 1][CordX + 0] == 0):
  62.                 Possivel = True
  63.         if Movi == 3:
  64.             if CordX != N-1:
  65.                 if (Matriz[CordY + 1][CordX + 1] == 2):
  66.                     Possivel = True
  67.     return Possivel
  68. ## RETORNA UM VALOR TRUE SE A JOGADA DO JOGADOR 1 FOR POSSÍVEL, E FALSE SE NÃO FOR POSSÍVEL
  69. def Jogada_do_jogador_1(Matriz,N):
  70.     print()
  71.     print("VEZ DO JOGADOR 1 ----------------------------")
  72.     print()
  73.     CordX =""
  74.     CordY=""
  75.     Movi=""
  76.     jogada_possivel = False
  77.     while not jogada_possivel:
  78.         print("Insira um valor de 1 a",N, end='')
  79.         CordX = input(" para a cordenada X :")
  80.         print("Insira um valor de 1 a", N , end='')
  81.         CordY = input(" para a cordenada Y :")
  82.         Movi = input("Movimento (1,2,3) :")
  83.         if CordX.isdigit():
  84.             CordX = int(CordX) - 1
  85.             if not 0 <= CordX<= N-1:
  86.                 CordX = ""
  87.         if CordY.isdigit():
  88.             CordY = int(CordY) - 1
  89.             if not 0 <= CordY<= N-1:
  90.                 CordY = ""
  91.         if Movi.isdigit():
  92.             Movi = int(Movi)
  93.             if not 1 <= Movi<= 3:
  94.                 Movi = ""
  95.  
  96.         if type(CordX) == int and type(CordY) == int and type(Movi) == int :
  97.             if Jogada_Possivel_Jogador1(Matriz,N,CordY,CordX,Movi):
  98.                 if Movi == 1:
  99.                     Matriz[CordY][CordX] = 0
  100.                     Matriz[CordY + 1][CordX - 1] = 1
  101.                 if Movi == 2:
  102.                     Matriz[CordY][CordX] = 0
  103.                     Matriz[CordY + 1][CordX + 0] = 1
  104.                 if Movi == 3:
  105.                     Matriz[CordY][CordX] = 0
  106.                     Matriz[CordY + 1][CordX + 1] = 1
  107.                 print("\n","\n","\n","\n","\n","\n","\n","\n","\n")
  108.                 print_Matriz(Matriz, N)
  109.                 jogada_possivel = True
  110.             else:
  111.                 print(" Jogada Impossível ")
  112.     return Matriz
  113. ## EXECUTA A ROTINA DA JOGADA DO JOGADOR 1 E RETORNA A MATRIZ FINAL
  114. def Jogada_Possivel_Jogador2(Matriz,N,CordY,CordX,Movi):
  115.     Possivel = False
  116.     if Matriz[CordY][CordX] == 2:
  117.         if Movi == 1:
  118.             if CordX != 0:
  119.                 if (Matriz[CordY - 1][CordX - 1] == 1):
  120.                     Possivel = True
  121.         if Movi == 2:
  122.             if (Matriz[CordY - 1][CordX + 0] == 0):
  123.                 Possivel = True
  124.         if Movi == 3:
  125.             if CordX != N-1:
  126.                 if (Matriz[CordY - 1][CordX + 1] == 1):
  127.                     Possivel = True
  128.     return Possivel
  129. ## RETORNA UM VALOR TRUE SE A JOGADA DO JOGADOR FOR POSSÍVEL, E FALSE SE NÃO FOR POSSÍVEL
  130. def Jogada_do_jogador_2(Matriz,N):
  131.     print()
  132.     print("VEZ DO JOGADOR 2 ----------------------------")
  133.     print()
  134.     CordX =""
  135.     CordY=""
  136.     Movi=""
  137.     jogada_possivel = False
  138.     while not jogada_possivel:
  139.         print("Insira um valor de 1 a",N,end='')
  140.         CordX = input(" para a cordenada X :")
  141.         print("Insira um valor de 1 a", N ,end='')
  142.         CordY = input(" para a cordenada Y :")
  143.         Movi = input("Movimento (1,2,3) :")
  144.         if CordX.isdigit():
  145.             CordX = int(CordX) - 1
  146.             if not 0 <= CordX<= N-1:
  147.                 CordX = ""
  148.         if CordY.isdigit():
  149.             CordY = int(CordY) - 1
  150.             if not 0 <= CordY<= N-1:
  151.                 CordY = ""
  152.         if Movi.isdigit():
  153.             Movi = int(Movi)
  154.             if not 1 <= Movi<= 3:
  155.                 Movi = ""
  156.  
  157.         if type(CordX) == int and type(CordY) == int and type(Movi) == int :
  158.             if Jogada_Possivel_Jogador2(Matriz,N,CordY,CordX,Movi):
  159.                 if Movi == 1:
  160.                     Matriz[CordY][CordX] = 0
  161.                     Matriz[CordY - 1][CordX - 1] = 2
  162.                 if Movi == 2:
  163.                     Matriz[CordY][CordX] = 0
  164.                     Matriz[CordY - 1][CordX + 0] = 2
  165.                 if Movi == 3:
  166.                     Matriz[CordY][CordX] = 0
  167.                     Matriz[CordY - 1][CordX + 1] = 2
  168.                 print("\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n")
  169.                 print_Matriz(Matriz, N)
  170.                 jogada_possivel = True
  171.             else:
  172.                 print(" Jogada Impossível ")
  173.     return Matriz
  174. ## EXECUTA A ROTINA DA JOGADA DO JOGADOR 2 E RETORNA A MATRIZ FINAL
  175. def Jogador_1_venceu(Matriz,N):
  176.     aux = False
  177.     aux_2 = True
  178.     countX = 0
  179.     countY = 0
  180.     count = 0
  181.     while countY < N:
  182.         countX = 0
  183.         while countX < N:
  184.             if Matriz[countY][countX] == 2 and (Jogada_Possivel_Jogador2(Matriz,N,countY,countX,1) or Jogada_Possivel_Jogador2(Matriz,N,countY,countX,2) or Jogada_Possivel_Jogador2(Matriz,N,countY,countX,3)):
  185.                 aux_2 = False
  186.             countX+=1
  187.         countY+=1
  188.     while count < N:
  189.         if Matriz[N-1][count] == 1:
  190.             aux = True
  191.         count+=1
  192.     if aux or aux_2:
  193.         jogador_1_venceu = True
  194.     else:
  195.         jogador_1_venceu = False
  196.     return jogador_1_venceu
  197. ## VERIFICA SE O JOGADOR 1 VENCEU E RETORNA TRUE SE VENCEU, OU FALSE CASO NÃO VENCEU
  198. def Jogador_2_venceu(Matriz,N):
  199.     aux = False
  200.     aux_2 = True
  201.     countX = 0
  202.     countY = 0
  203.     count = 0
  204.     while countY < N:
  205.         countX = 0
  206.         while countX < N:
  207.             if Matriz[countY][countX] == 1 and (Jogada_Possivel_Jogador1(Matriz,N,countY,countX,1) or Jogada_Possivel_Jogador1(Matriz,N,countY,countX,2) or Jogada_Possivel_Jogador1(Matriz,N,countY,countX,3)):
  208.                 aux_2 = False
  209.             countX += 1
  210.         countY += 1
  211.     while count < N:
  212.         if Matriz[0][count] == 2:
  213.             aux = True
  214.         count += 1
  215.     if aux or aux_2:
  216.         jogador_2_venceu = True
  217.     else:
  218.         jogador_2_venceu = False
  219.     return jogador_2_venceu
  220. ## VERIFICA SE O JOGADOR 2 VENCEU E RETORNA TRUE SE VENCEU, OU FALSE CASO NÃO VENCEU
  221.  
  222. """"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"""
  223.  
  224.  
  225. n = Define_N()                   ## DEFINE O TAMANHO DA MATRIZ, NO CASO É n
  226. Matriz_Jogo = Matriz_Inicial(n)  ## A MATRIZ DO JOGO RECEBE A MATRIZ INICIAL
  227. print_Matriz(Matriz_Jogo,n)      ## IMPRIME A MATRIZ DO JOGO
  228.  
  229. jog_1_venceu = False             ## TRUE: JOGADOR 1 VENCEU; FALSE: JOGADOR 1 NÃO VENCEU
  230. jog_2_venceu = False             ## TRUE: JOGADOR 2 VENCEU; FALSE: JOGADOR 2 NÃO VENCEU
  231.  
  232. while not (jog_2_venceu or jog_1_venceu):
  233.     if not jog_2_venceu:
  234.         Matriz_jogo = Jogada_do_jogador_1(Matriz_Jogo,n)
  235.         jog_1_venceu = Jogador_1_venceu(Matriz_Jogo,n)
  236.     if not jog_1_venceu:
  237.         Matriz_Jogo = Jogada_do_jogador_2(Matriz_Jogo,n)
  238.         jog_2_venceu = Jogador_2_venceu(Matriz_Jogo, n)
  239.  
  240. if jog_1_venceu:
  241.     print("\n","\n","\n","\n","\n","\n","\n")
  242.     print_Matriz(Matriz_Jogo,n)
  243.     print("\n","\n")
  244.     print("  JOGADOR 1 VENCEU   ")
  245.  
  246. if jog_2_venceu:
  247.     print("\n","\n","\n","\n","\n","\n","\n")
  248.     print_Matriz(Matriz_Jogo,n)
  249.     print("\n","\n")
  250.     print("  JOGADOR 2 VENCEU   ")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement