overactive

hfhfh

Jul 28th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.88 KB | None | 0 0
  1. import pygame
  2. import sys
  3. import time
  4.  
  5. WIDTH, HEIGHT = 600, 700
  6. WHITE = (255, 255, 255)
  7. PINK = (255,0,120)
  8. END = False
  9. openWindow = True
  10.  
  11. click = (0,0,0)
  12. clickPos = [0,0]
  13. player = 'X'
  14. board = [[0,0,0],[0,0,0],[0,0,0]]
  15. win_commbinations = ((0, 1, 2), (3, 4, 5), (6, 7, 8), (0, 3, 6), (1, 4, 7), (2, 5, 8), (0, 4, 8), (2, 4, 6))
  16.  
  17. canvas = pygame.display.set_mode((WIDTH,HEIGHT))
  18. pygame.display.set_caption('TicTacToe')
  19. pygame.init()
  20. font = pygame.font.SysFont('arial', 50)
  21.  
  22. def printBoard():
  23.     pygame.draw.line(canvas, WHITE, [200, 100], [200,700], 2)
  24.     pygame.draw.line(canvas, WHITE, [400, 100], [400,700], 2)
  25.     pygame.draw.line(canvas, WHITE, [0, 100], [600,100], 2)
  26.     pygame.draw.line(canvas, WHITE, [0, 300], [600,300], 2)
  27.     pygame.draw.line(canvas, WHITE, [0, 500], [600,500], 2)
  28.  
  29.    
  30. def printHeader(winner):
  31.     if winner == 'X' or winner == 'O':
  32.         text = 'WINNER: ' + str(winner)
  33.     elif winner == 'TIE':
  34.         text = 'TIE: NOBODY WINS'
  35.     else:
  36.         text = 'Player:' + str(player)
  37.     if takenPos == True:
  38.         text = str(player) + ': choose again'
  39.  
  40.     canvas.fill((0,0,0), (0,0,600,100))
  41.     textSet = font.render(text, True, (255, 0, 100))
  42.     canvas.blit(textSet,(20,20))
  43.  
  44. def getClickPos():
  45.     global clickPos
  46.     takenPos = False
  47.  
  48.     x, y = pygame.mouse.get_pos()
  49.     x = int(x / 200)
  50.     y = int((y-100) / 200)
  51.  
  52.     if board[x][y]==0:
  53.         board[x][y] = player
  54.     else:
  55.         takenPos = True
  56.         board[x][y]==0
  57.  
  58.     if x == 0:
  59.         if y == 0:
  60.             clickPos = [100, 200]
  61.         if y == 1:
  62.             clickPos = [100, 400]
  63.         if y == 2:
  64.             clickPos = [100, 600]
  65.     if x == 1:
  66.         if y == 0:
  67.             clickPos = [300, 200]
  68.         if y == 1:
  69.             clickPos = [300, 400]
  70.         if y == 2:
  71.             clickPos = [300, 600]
  72.     if x == 2:
  73.         if y == 0:
  74.             clickPos = [500, 200]
  75.         if y == 1:
  76.             clickPos = [500, 400]
  77.         if y == 2:
  78.             clickPos = [500, 600]
  79.  
  80.     return x, y, takenPos
  81.  
  82. def printPlayer(player, clickPos, x, y):
  83.     if board[x][y] == player:
  84.    
  85.         if player == 'O':
  86.             pygame.draw.circle(canvas, WHITE, clickPos, 50, 5)
  87.             player = 'X'
  88.          
  89.         elif player == 'X':
  90.             pygame.draw.line(canvas, WHITE, [clickPos[0] - 50,clickPos[1] + 50], [clickPos[0] + 50,clickPos[1] - 50], 5)
  91.             pygame.draw.line(canvas, WHITE, [clickPos[0] + 50,clickPos[1] + 50], [clickPos[0] - 50,clickPos[1] - 50], 5)
  92.             player = 'O'
  93.      
  94.     return player
  95.  
  96. def getWinner():
  97.     winComb = []
  98.     turnCounter = 0
  99.     winner = ''
  100.  
  101.     for i in range(len(board)):
  102.         for j in range(len(board[i])):
  103.             winComb.append(board[i][j])
  104.  
  105.     for i in range(len(board)):
  106.         for j in range(len(board[i])):
  107.             if board[i][j] == 'X' or board[i][j] == 'O':
  108.                 turnCounter += 1
  109.     if turnCounter > 8:
  110.         winner = 'TIE'
  111.    
  112.     for i in win_commbinations:
  113.         if winComb[i[0]] == winComb[i[1]] == winComb[i[2]] == player:
  114.             winner = player
  115.     return winner
  116.  
  117. text = ('Player: ', str(player))
  118. textSet = font.render(''.join(text), True, (255, 0, 100))
  119. canvas.blit(textSet,(20,20))
  120.  
  121. while openWindow == True:
  122.     printBoard()
  123.  
  124.     for event in pygame.event.get():
  125.         if event.type == pygame.QUIT:
  126.             openWindow = False
  127.  
  128.         elif event.type == pygame.MOUSEBUTTONUP:
  129.             x, y, takenPos = getClickPos()
  130.             winner = getWinner()
  131.             player = printPlayer(player, clickPos, x, y)
  132.             printHeader(winner)
  133.  
  134.     pygame.display.flip()
  135.  
  136.  
  137. ####################################################
  138. """
  139. - bug #2 - po wygranej grze dalej można uzupełniać planszę
  140. - po zakonczonej grze brak możliwości ponownej gry
  141. """
  142. ####################################################
Advertisement
Add Comment
Please, Sign In to add comment