Advertisement
Guest User

Smartchess 1.0

a guest
Jan 21st, 2015
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 81.72 KB | None | 0 0
  1. import pygame, sys, time
  2. from pygame.locals import *
  3. import random
  4.  
  5. pygame.init()
  6.  
  7.  
  8. def getNewBoardType():
  9.     boardType = [[" "] * 8 for i in range(8)]
  10.     for x in range(8):
  11.         boardType[x][1] = "E"
  12.         boardType[x][6] = "E"
  13.     typeOrder = ["V", "R", "O", "L", "K", "O", "R", "V"]
  14.     for x in range(8):
  15.         boardType[x][0] = typeOrder[x]
  16.         boardType[x][7] = typeOrder[x]
  17.     return boardType
  18.  
  19. def getNewBoardOwner():
  20.     boardOwner = [[" "] * 8 for i in range(8)]
  21.     for x in range(8):
  22.         boardOwner[x][1] = "V"
  23.         boardOwner[x][0] = "V"
  24.         boardOwner[x][6] = "M"
  25.         boardOwner[x][7] = "M"
  26.     return boardOwner
  27. boardType = getNewBoardType()
  28. boardOwner = getNewBoardOwner()
  29.  
  30. def checkCheck(X,boardType,boardOwner):
  31.     Y = X[0] + 1
  32.     while Y < 8:
  33.         if boardOwner[Y][X[1]] == turn:
  34.             break
  35.         elif boardOwner[Y][X[1]] != " ":
  36.             if boardType[Y][X[1]] == "V" or boardType[Y][X[1]] == "L": #paremal
  37.                 return True
  38.             else:
  39.                 break
  40.         Y += 1
  41.        
  42.     Y = X[0] - 1
  43.     while Y > -1:
  44.         if boardOwner[Y][X[1]] == turn:
  45.             break
  46.         elif boardOwner[Y][X[1]] != " ":
  47.             if boardType[Y][X[1]] == "V" or boardType[Y][X[1]] == "L": #vasakul
  48.                 return True
  49.             else:
  50.                 break
  51.         Y -= 1
  52.     Y = X[1] + 1
  53.     while Y < 8:
  54.         if boardOwner[X[0]][Y] == turn:
  55.             break
  56.         elif boardOwner[X[0]][Y] != " ":
  57.             if boardType[X[0]][Y] == "V" or boardType[X[0]][Y] == "L": #üles
  58.                 return True
  59.             else:
  60.                 break
  61.         Y += 1
  62.     Y = X[1] - 1
  63.     while Y > -1:
  64.         if boardOwner[X[0]][Y] == turn:
  65.             break
  66.         elif boardOwner[X[0]][Y] != " ":
  67.             if boardType[X[0]][Y] == "V" or boardType[X[0]][Y] == "L": # alla
  68.                 return True
  69.             else:
  70.                 break
  71.         Y -= 1
  72.        
  73.     Y = X[0] + 1
  74.     Z = X[1] + 1
  75.     while Y < 8 and Z < 8:
  76.         if boardOwner[Y][Z] == turn:
  77.             break
  78.         elif boardOwner[Y][Z] != " ":
  79.             if boardType[Y][Z] == "O" or boardType[Y][Z] == "L": #Asimuut 45
  80.                 return True
  81.             else:
  82.                 break
  83.         Y += 1
  84.         Z += 1
  85.        
  86.     Y = X[0] - 1
  87.     Z = X[1] - 1
  88.     while Y > -1 and Z > -1:
  89.         if boardOwner[Y][Z] == turn:
  90.             break
  91.         elif boardOwner[Y][Z] != " ":
  92.             if boardType[Y][Z] == "O" or boardType[Y][Z] == "L": #asimuut 225
  93.                 return True
  94.             else:
  95.                 break
  96.         Y -= 1
  97.         Z -= 1
  98.        
  99.     Y = X[0] + 1
  100.     Z = X[1] - 1
  101.     while Y < 8 and Z > -1:
  102.         if boardOwner[Y][Z] == turn:
  103.             break
  104.         elif boardOwner[Y][Z] != " ":            
  105.             if boardType[Y][Z] == "O" or boardType[Y][Z] == "L": #asimuut 135
  106.                 return True
  107.             else:
  108.                 break
  109.            
  110.         Y += 1
  111.         Z -= 1
  112.     Y = X[0] - 1
  113.     Z = X[1] + 1
  114.     while Z < 8 and Y > -1:
  115.         if boardOwner[Y][Z] == turn:
  116.             break
  117.         elif boardOwner[Y][Z] != " ":
  118.             if boardType[Y][Z] == "O" or boardType[Y][Z] == "L": #asimuut 315
  119.                 return True
  120.             else:
  121.                 break
  122.         Y -= 1
  123.         Z += 1
  124.                                     #Ratsud
  125.     if X[0]+2 < 8:                  #Paremal
  126.         if X[1]+1 < 8:
  127.             if boardType[X[0]+2][X[1]+1] == "R":
  128.                 if boardOwner[X[0]+2][X[1]+1] != turn:
  129.                     return True
  130.         if X[1]-1 > -1:
  131.             if boardType[X[0]+2][X[1]-1] == "R":
  132.                 if boardOwner[X[0]+2][X[1]-1] != turn:
  133.                     return True
  134.     if X[0]-2 > -1:                 #Vasakul
  135.         if X[1]+1 < 8:
  136.             if boardType[X[0]-2][X[1]+1] == "R":
  137.                 if boardOwner[X[0]-2][X[1]+1] != turn:
  138.                     return True
  139.         if X[1]-1 > -1:
  140.             if boardType[X[0]-2][X[1]-1] == "R":
  141.                 if boardOwner[X[0]-2][X[1]-1] != turn:
  142.                     return True
  143.     if X[1]+2 < 8:                  #Üleval
  144.         if X[0]+1 < 8:
  145.             if boardType[X[0]+1][X[1]+2] == "R":
  146.                 if boardOwner[X[0]+1][X[1]+2] != turn:
  147.                     return True
  148.         if X[0]-1 > -1:
  149.             if boardType[X[0]-1][X[1]+2] == "R":
  150.                 if boardOwner[X[0]-1][X[1]+2] != turn:
  151.                     return True
  152.     if X[1]-2 > -1:                  #All
  153.         if X[0]+1 < 8:
  154.             if boardType[X[0]+1][X[1]-2] == "R":
  155.                 if boardOwner[X[0]+1][X[1]-2] != turn:
  156.                     return True
  157.         if X[0]-1 > -1:
  158.             if boardType[X[0]-1][X[1]-2] == "R":
  159.                 if boardOwner[X[0]-1][X[1]-2] != turn:
  160.                     return True
  161.     if turn == "V":
  162.         if X[1]+1 < 8:
  163.             if X[0]+1 < 8:
  164.                 if boardType[X[0]+1][X[1]+1] == "E" and boardOwner[X[0]+1][X[1]+1] != turn:
  165.                     return True
  166.             if X[0]-1 > -1:
  167.                 if boardType[X[0]-1][X[1]+1] == "E" and boardOwner[X[0]-1][X[1]+1] != turn:
  168.                     return True
  169.     else:
  170.         if X[1]-1 > -1:
  171.             if X[0]+1 < 8:
  172.                 if boardType[X[0]+1][X[1]-1] == "E" and boardOwner[X[0]+1][X[1]-1] != turn:
  173.                     return True
  174.             if X[0]-1 > -1:
  175.                 if boardType[X[0]-1][X[1]-1] == "E" and boardOwner[X[0]-1][X[1]-1] != turn:
  176.                     return True
  177.     if X[0]-1 > -1 and (boardOwner[X[0]-1][X[1]] != turn) and (boardType[X[0]-1][X[1]] == "K"):
  178.         return True
  179.     if X[0]+1 < 8 and (boardOwner[X[0]+1][X[1]] != turn) and (boardType[X[0]+1][X[1]] == "K"):
  180.         return True
  181.     if X[1]+1 < 8:
  182.         for i in range(3):
  183.             if X[0]-1+i < 8 and X[0]-1+i > - 1:
  184.                 if boardOwner[X[0]-1+i][X[1]+1] != turn and boardType[X[0]-1+i][X[1]+1] == "K":
  185.                     return True
  186.     if X[1]-1 > -1:
  187.         for i in range(3):
  188.             if X[0]-1+i < 8 and X[0]-1+i > - 1:
  189.                 if boardOwner[X[0]-1+i][X[1]-1] != turn and boardType[X[0]-1+i][X[1]-1] == "K":
  190.                     return True
  191.        
  192. def checkValidity(turn, startPos, endPos):
  193.     validMoves = []
  194.     startx = startPos[0]
  195.     starty = startPos[1]
  196.     endx = endPos[0]
  197.     endy = endPos[1]
  198.     if boardType[startx][starty] == "E": #Lisab validMoves listi kõik võimalikud käigud etturi poolt.
  199.         if turn == "V":
  200.             if boardType[startx][starty+1] == " ":
  201.                 validMoves.append((startx,starty+1))
  202.             if startx+1 < 8 and boardOwner[startx+1][starty+1] == "M":
  203.                 validMoves.append((startx+1,startPos[1]+1))
  204.             if startx-1 > -1 and boardOwner[startx-1][starty+1] == "M":
  205.                 validMoves.append((startx-1,starty+1))
  206.             if starty == 1 and boardType[startx][starty+2] == " ":
  207.                 validMoves.append((startx,3))
  208.         if turn == "M":
  209.             if boardType[startx][starty-1] == " ":
  210.                 validMoves.append((startx,starty-1))
  211.             if startx+1 < 8 and boardOwner[startx+1][starty-1] == "V":
  212.                 validMoves.append((startx+1,starty-1))
  213.             if startx-1 > -1 and boardOwner[startx-1][starty-1] == "V":
  214.                 validMoves.append((startx-1,starty-1))
  215.             if starty == 6 and boardType[startx][starty-2] == " ":
  216.                 validMoves.append((startx,4))
  217.                
  218.     if boardType[startx][starty] == "K":
  219.         if startx-1 > -1 and (boardOwner[startx-1][starty] != turn):
  220.             validMoves.append((startx-1,starty))
  221.         if startx+1 < 8 and (boardOwner[startx+1][starty] != turn):
  222.             validMoves.append((startx+1,starty))
  223.         if starty+1 < 8:
  224.             for i in range(3):
  225.                 if startx-1+i < 8 and startx-1+i > - 1:
  226.                     if boardOwner[startx-1+i][starty+1] != turn:
  227.                         validMoves.append((startx-1+i,starty+1))
  228.         if starty-1 > -1:
  229.             for i in range(3):
  230.                 if startx-1+i < 8 and startx-1+i > - 1:
  231.                     if boardOwner[startx-1+i][starty-1] != turn:
  232.                         validMoves.append((startx-1+i,starty-1))
  233.  
  234.     if boardType[startx][starty] == "R":
  235.         if starty+2 < 8:
  236.             if startx-1 > -1:
  237.                 if boardOwner[startx-1][starty+2] != turn:
  238.                     validMoves.append((startx-1,starty+2))
  239.             if startx+1 < 8:
  240.                 if boardOwner[startx+1][starty+2] != turn:
  241.                     validMoves.append((startx+1,starty+2))
  242.         if starty-2 > -1:
  243.             if startx-1 > -1:
  244.                 if boardOwner[startx-1][starty-2] != turn:
  245.                     validMoves.append((startx-1,starty-2))
  246.             if startx+1 < 8:
  247.                 if boardOwner[startx+1][starty-2] != turn:
  248.                     validMoves.append((startx+1,starty-2))
  249.         if startx+2 < 8:
  250.             if starty-1 > -1:
  251.                 if boardOwner[startx+2][starty-1] != turn:
  252.                     validMoves.append((startx+2,starty-1))
  253.             if starty+1 < 8:
  254.                 if boardOwner[startx+2][starty+1] != turn:
  255.                     validMoves.append((startx+2,starty+1))
  256.         if startx-2 > -1 :
  257.             if starty-1 > -1:
  258.                 if boardOwner[startx-2][starty-1] != turn:
  259.                     validMoves.append((startx-2,starty-1))
  260.             if starty+1 < 8:
  261.                 if boardOwner[startx-2][starty+1] != turn:
  262.                     validMoves.append((startx-2,starty+1))
  263.  
  264.     if boardType[startx][starty] == "V" or boardType[startx][starty] == "L":
  265.         for moveLength in range(1,8):
  266.             if starty+moveLength < 8: #1. Üles
  267.                 nextTileNumber = (startx, (starty+moveLength))
  268.                 nextTileOwner = boardOwner[startx][starty+moveLength]
  269.                 if nextTileOwner != turn:
  270.                     if nextTileOwner == " ":
  271.                         validMoves.append(nextTileNumber)
  272.                     else:
  273.                         validMoves.append(nextTileNumber)
  274.                         break
  275.                 else:
  276.                     break
  277.         for moveLength in range(1,8):
  278.             if startx+moveLength < 8: #2. Paremale
  279.                 nextTileNumber = (startx+moveLength, starty)
  280.                 nextTileOwner = boardOwner[startx+moveLength][starty]
  281.                 if nextTileOwner != turn:
  282.                     if nextTileOwner == " ":
  283.                         validMoves.append(nextTileNumber)
  284.                     else:
  285.                         validMoves.append(nextTileNumber)
  286.                         break
  287.                 else:
  288.                     break
  289.         for moveLength in range(1,8):
  290.             if starty-moveLength > (-1): #3. Alla
  291.                 nextTileNumber = (startx, starty-moveLength)
  292.                 nextTileOwner = boardOwner[startx][starty-moveLength]
  293.                 if nextTileOwner != turn:
  294.                     if nextTileOwner == " ":
  295.                         validMoves.append(nextTileNumber)
  296.                     else:
  297.                         validMoves.append(nextTileNumber)
  298.                         break
  299.                 else:
  300.                     break
  301.         for moveLength in range(1,8):
  302.             if startx-moveLength > (-1): #4. Vasakule
  303.                 nextTileNumber = (startx-moveLength, starty)
  304.                 nextTileOwner = boardOwner[startx-moveLength][starty]
  305.                 if nextTileOwner != turn:
  306.                     if nextTileOwner == " ":
  307.                         validMoves.append(nextTileNumber)
  308.                     else:
  309.                         validMoves.append(nextTileNumber)
  310.                         break
  311.                 else:
  312.                     break
  313.     if boardType[startx][starty] == "O" or boardType[startx][starty] == "L":
  314.         for moveLength in range(1,8): #1. asimuut 45
  315.             if startx+moveLength < 8 and starty+moveLength < 8:
  316.                 nextTileNumber = (startx+moveLength, starty+moveLength)
  317.                 nextTileOwner = boardOwner[startx+moveLength][starty+moveLength]
  318.                 if nextTileOwner != turn:
  319.                     if nextTileOwner == " ":
  320.                         validMoves.append(nextTileNumber)
  321.                     else:
  322.                         validMoves.append(nextTileNumber)
  323.                         break
  324.                 else:
  325.                     break
  326.         for moveLength in range(1,8): #2. asimuut 135
  327.             if startx+moveLength < 8 and starty-moveLength > (-1):
  328.                 nextTileNumber = (startx+moveLength, starty-moveLength)
  329.                 nextTileOwner = boardOwner[startx+moveLength][starty-moveLength]
  330.                 if nextTileOwner != turn:
  331.                     if nextTileOwner == " ":
  332.                         validMoves.append(nextTileNumber)
  333.                     else:
  334.                         validMoves.append(nextTileNumber)
  335.                         break
  336.                 else:
  337.                     break
  338.         for moveLength in range(1,8): #1. asimuut 225
  339.             if startx-moveLength > (-1) and starty-moveLength > (-1):
  340.                 nextTileNumber = (startx-moveLength, starty-moveLength)
  341.                 nextTileOwner = boardOwner[startx-moveLength][starty-moveLength]
  342.                 if nextTileOwner != turn:
  343.                     if nextTileOwner == " ":
  344.                         validMoves.append(nextTileNumber)
  345.                     else:
  346.                         validMoves.append(nextTileNumber)
  347.                         break
  348.                 else:
  349.                     break
  350.         for moveLength in range(1,8): #1. asimuut 315
  351.             if startx+moveLength > (-1) and starty+moveLength < 8:
  352.                 nextTileNumber = (startx-moveLength, starty+moveLength)
  353.                 nextTileOwner = boardOwner[startx-moveLength][starty+moveLength]
  354.                 if nextTileOwner != turn:
  355.                     if nextTileOwner == " ":
  356.                         validMoves.append(nextTileNumber)
  357.                     else:
  358.                         validMoves.append(nextTileNumber)
  359.                         break
  360.                 else:
  361.                     break
  362.    
  363.     if check == True:
  364.         boardTypeTemp = [[" "] * 8 for i in range(8)]
  365.         boardOwnerTemp = [[" "] * 8 for i in range(8)]
  366.         for i in range(8):
  367.             for y in range(8):
  368.                 boardTypeTemp[i][y]=(boardType[i][y])
  369.                 boardOwnerTemp[i][y]=(boardOwner[i][y])
  370.         boardTypeTemp[endPos[0]][endPos[1]] = boardType[startPos[0]][startPos[1]]
  371.         boardOwnerTemp[endPos[0]][endPos[1]] = turn
  372.         boardTypeTemp[startPos[0]][startPos[1]] = " "
  373.         boardOwnerTemp[startPos[0]][startPos[1]] = " "
  374.        
  375.         if boardType[startx][starty] == "K":
  376.             if checkCheck((endPos[0],endPos[1]),boardTypeTemp,boardOwnerTemp):
  377.                 #print("Tuli! Te ei saa sinna käia.")
  378.                 return False
  379.         elif turn == "V":
  380.             if checkCheck(whiteKingPos,boardTypeTemp,boardOwnerTemp):
  381.                 #print("Tuli! Te ei saa sinna käia.")
  382.                 return False
  383.         else:
  384.             if checkCheck(blackKingPos,boardTypeTemp,boardOwnerTemp):
  385.                 #print("Tuli! Te ei saa sinna käia.")
  386.                 return False
  387.            
  388.     if boardType[startx][starty] == "K": ################ Vangerdus
  389.         if turn == "V":
  390.             if (endx, endy) == (6, 0) and "V" not in kingSideCastle:
  391.                 if boardType[5][0] == " " and not checkCheck((5,0),boardType,boardOwner) and boardType[6][0] == " " and not checkCheck((6,0),boardType,boardOwner):
  392.                     return "whiteKingSide"
  393.             elif (endx, endy) == (2, 0) and "V" not in queenSideCastle:
  394.                 if boardType[3][0] == " " and not checkCheck((5,0),boardType,boardOwner) and boardType[2][0] == " " and not checkCheck((2,0),boardType,boardOwner) and boardType[1][0] == " ":
  395.                     return "whiteQueenSide"
  396.         else:
  397.             if (endx, endy) == (6, 7) and "M" not in kingSideCastle:
  398.                 if boardType[5][7] == " " and not checkCheck((5,7),boardType,boardOwner) and boardType[6][7] == " " and not checkCheck((6,7),boardType,boardOwner):
  399.                     return "blackKingSide"
  400.             elif (endx, endy) == (2, 7) and "M" not in queenSideCastle:
  401.                 if boardType[3][7] == " " and not checkCheck((5,7),boardType,boardOwner) and boardType[2][7] == " " and not checkCheck((2,7),boardType,boardOwner) and boardType[1][7] == " ":
  402.                     return "blackQueenSide"
  403.                        
  404.     if (endx, endy) in validMoves:
  405.         return True
  406.     else:
  407.         #print("Te ei saa sinna käia.")
  408.         return False
  409.  
  410. def drawPieceChoices():
  411.     windowSurface.blit(pieceChoiceImage,pieceChoiceButton)
  412.  
  413.    
  414. def pieceChoiceChoice(mousePos):
  415.     if rookButton.collidepoint(mousePos):
  416.         return "V"
  417.     elif queenButton.collidepoint(mousePos):
  418.         return "L"
  419.     elif bishopButton.collidepoint(mousePos):
  420.         return "O"
  421.     elif knightButton.collidepoint(mousePos):
  422.         return "R"
  423.     else:
  424.         return False
  425.  
  426. def blankPieceChoice():
  427.     windowSurface.blit(pieceChoiceBlankImage,pieceChoiceButton)
  428.    
  429. def clearInstructionsText():
  430.     windowSurface.blit(pieceChoiceBlankImage,instructionsButton)
  431.  
  432. def clearQuestionsText():
  433.     windowSurface.blit(pieceChoiceBlankImage,questionsButton)
  434.  
  435.  
  436. def drawUpgradingText():
  437.     clearInstructionsText()
  438.     upgradingText = instructionsFont.render("Valige etturi asemele uus nupp",True,BLACK)
  439.     upgradingTextRect = upgradingText.get_rect()
  440.     upgradingTextRect.centery = 2*S+5*s
  441.     upgradingTextRect.left = WINDOWHEIGHT+2*s
  442.     windowSurface.blit(upgradingText,upgradingTextRect)
  443.  
  444. def pieceChoice(turn):
  445.     global running
  446.     drawPieceChoices()
  447.     drawTimer(time.time()-timeStart-timePause)
  448.     pygame.display.update()
  449.     for event in pygame.event.get():
  450.         if event.type == QUIT:
  451.             running = terminate()
  452.             pygame.quit()
  453.             sys.exit()
  454.         elif event.type == MOUSEBUTTONDOWN:
  455.             if event.button == 1:
  456.                 piece = pieceChoiceChoice(pygame.mouse.get_pos())
  457.                 if piece:
  458.                     blankPieceChoice()
  459.                     return piece
  460.  
  461.  
  462.  
  463.                        
  464. def pawnUpgrade(endpos):
  465.     piece = 0
  466.     while True:
  467.         if piece!="V" and piece!="O" and piece!="R" and piece!="L":
  468.             drawUpgradingText()
  469.             piece = pieceChoice(turn)
  470.         else:
  471.             break
  472.     boardType[endpos[0]][endpos[1]] = piece
  473.     drawSquare((endpos[0],endpos[1]),0)
  474.  
  475.  
  476. def changeBoard(turn, startPos, endPos):
  477.     global whiteKingPos,blackKingPos,kingSideCastle,queenSideCastle
  478.     if boardType[endPos[0]][endPos[1]] == "K":
  479.         #if turn == "V":
  480.             #print("Valge võit.")
  481.         #else:
  482.             #print("Musta võit.")
  483.         return False        
  484.     boardType[endPos[0]][endPos[1]] = boardType[startPos[0]][startPos[1]]
  485.     boardOwner[endPos[0]][endPos[1]] = turn
  486.     boardType[startPos[0]][startPos[1]] = " "
  487.     boardOwner[startPos[0]][startPos[1]] = " "
  488.     drawSquare(startPos,0)
  489.     drawSquare(endPos,0)
  490.     ################################### Vankri liikumine
  491.     if boardType[endPos[0]][endPos[1]] == "V":
  492.         if startPos == (0,0):
  493.             queenSideCastle.append("V")
  494.         elif startPos == (0,7):
  495.             queenSideCastle.append("M")
  496.         elif startPos == (7,0):
  497.             kingSideCastle.append("V")
  498.         elif startPos == (7,7):
  499.             kingSideCastle.append("M")
  500.     if turn == "V": #Etturite ülendamine mängulaua lõppu jõudes
  501.         if boardType[endPos[0]][endPos[1]] == "E" and endPos[1] == 7:
  502.             pawnUpgrade(endPos)
  503.     else:
  504.         if boardType[endPos[0]][endPos[1]] == "E" and endPos[1] == 0:
  505.             pawnUpgrade(endPos)
  506.            
  507.     if boardType[endPos[0]][endPos[1]] == "K": #Kuninga liikumine
  508.         if turn == "V":
  509.             kingSideCastle.append("V")
  510.             queenSideCastle.append("V")
  511.             whiteKingPos = (endPos[0],endPos[1])
  512.         else:
  513.             kingSideCastle.append("M")
  514.             queenSideCastle.append("M")
  515.             blackKingPos = (endPos[0],endPos[1])
  516.     return True
  517.    
  518. def castle(x): ########## Vangerdamise laua muutmine
  519.     global boardOwner,boardType,blackKingPos,whiteKingPos
  520.     if x == "whiteKingSide":
  521.         boardType[5][0] = "V"
  522.         boardOwner[5][0] = "V"
  523.         boardType[7][0] = " "
  524.         boardOwner[7][0] = " "
  525.         boardType[6][0] = "K"
  526.         boardOwner[6][0] = "V"
  527.         boardType[4][0] = " "
  528.         boardOwner[4][0] = " "
  529.         kingSideCastle.append("V")
  530.         queenSideCastle.append("V")
  531.         whiteKingPos = (6,0)
  532.     elif x == "blackKingSide":
  533.         boardType[5][7] = "V"
  534.         boardOwner[5][7] = "M"
  535.         boardType[7][7] = " "
  536.         boardOwner[7][7] = " "
  537.         boardType[6][7] = "K"
  538.         boardOwner[6][7] = "M"
  539.         boardType[4][7] = " "
  540.         boardOwner[4][7] = " "
  541.         kingSideCastle.append("M")
  542.         queenSideCastle.append("M")
  543.         blackKingPos = (6,7)
  544.     elif x == "whiteQueenSide":
  545.         boardType[3][0] = "V"
  546.         boardOwner[3][0] = "V"
  547.         boardType[0][0] = " "
  548.         boardOwner[0][0] = " "
  549.         boardType[2][0] = "K"
  550.         boardOwner[2][0] = "V"
  551.         boardType[4][0] = " "
  552.         boardOwner[4][0] = " "
  553.         kingSideCastle.append("V")
  554.         queenSideCastle.append("V")
  555.         whiteKingPos = (2,0)
  556.     elif x == "blackQueenSide":
  557.         boardType[3][7] = "V"
  558.         boardOwner[3][7] = "M"
  559.         boardType[0][7] = " "
  560.         boardOwner[0][7] = " "
  561.         boardType[2][7] = "K"
  562.         boardOwner[2][7] = "M"
  563.         boardType[4][7] = " "
  564.         boardOwner[4][7] = " "
  565.         kingSideCastle.append("M")
  566.         queenSideCastle.append("M")
  567.         blackKingPos = (2,7)
  568.     return boardType,boardOwner,blackKingPos,whiteKingPos
  569.  
  570.  
  571. def drawSquare(pos,H):
  572.     centerX = pos[0]*S + S//2
  573.     centerY = (7-pos[1])*S + S//2
  574.     if pos[1] % 2 == 0:
  575.         color2 = (255,204,153)
  576.     else:
  577.         color2 = (102,51,0)
  578.     if pos[0] % 2 == 0:
  579.         if color2 == (255,204,153):
  580.             color2 = (102,51,0)
  581.         else:
  582.             color2 = (255,204,153)
  583.     if H == 1:
  584.         color2 = (153,255,51)
  585.            
  586.     pygame.draw.rect(windowSurface,color2,(pos[0]*S,(7-pos[1])*S,S,S))
  587.                
  588.     if boardOwner[pos[0]][pos[1]] == "V":
  589.         color = WHITE
  590.         color3=BLACK
  591.     elif boardOwner[pos[0]][pos[1]] == "M":
  592.         color = BLACK
  593.         color3=WHITE
  594.  
  595.     if boardType[pos[0]][pos[1]] == "E":
  596.         pygame.draw.polygon(windowSurface,color,((centerX+s,centerY),(centerX+s,centerY+2*s),(centerX+2*s,centerY+3*s),(centerX+2*s,centerY+4*s),(centerX-2*s,centerY+4*s),(centerX-2*s,centerY+3*s),(centerX-s,centerY+2*s),(centerX-s,centerY)))
  597.         pygame.draw.lines(windowSurface,color3,False,[(centerX+s,centerY+2*s),(centerX+2*s,centerY+3*s),(centerX+2*s,centerY+4*s),(centerX-2*s,centerY+4*s),(centerX-2*s,centerY+3*s),(centerX-s,centerY+2*s)],s//2)
  598.         pygame.draw.circle(windowSurface,color,(centerX,centerY-1),s*2)
  599.         pygame.draw.circle(windowSurface,color3,(centerX,centerY-1),s*2,s//2)
  600.         pygame.draw.lines(windowSurface,color3,False,[(centerX-2*s,centerY+3*s),(centerX+2*s,centerY+3*s)],s//2)
  601.     elif boardType[pos[0]][pos[1]] == "V":
  602.         pygame.draw.polygon(windowSurface,color,((centerX-2*s,centerY-4*s),(centerX+2*s,centerY-4*s),(centerX+2*s,centerY-3*s),(centerX+s,centerY-2*s),(centerX+s,centerY+s),(centerX+3*s,centerY+2*s),(centerX+3*s,centerY+4*s),(centerX-3*s,centerY+4*s),(centerX-3*s,centerY+2*s),(centerX-s,centerY+s),(centerX-s,centerY-2*s),(centerX-2*s,centerY-3*s)))
  603.         pygame.draw.lines(windowSurface,color3,True,[(centerX-2*s,centerY-4*s),(centerX+2*s,centerY-4*s),(centerX+2*s,centerY-3*s),(centerX+s,centerY-2*s),(centerX+s,centerY+s),(centerX+3*s,centerY+2*s),(centerX+3*s,centerY+4*s),(centerX-3*s,centerY+4*s),(centerX-3*s,centerY+2*s),(centerX-s,centerY+s),(centerX-s,centerY-2*s),(centerX-2*s,centerY-3*s)],s//2)
  604.         pygame.draw.lines(windowSurface,color3,False,[(centerX-3*s,centerY+2*s),(centerX+3*s,centerY+2*s)],s//2)
  605.         pygame.draw.lines(windowSurface,color3,False,[(centerX-2*s,centerY-3*s),(centerX+2*s,centerY-3*s)],s//2)
  606.         pygame.draw.lines(windowSurface,color3,False,[(centerX-s,centerY-2*s),(centerX+s,centerY-2*s)],s//2)
  607.         pygame.draw.lines(windowSurface,color3,False,[(centerX-s,centerY+s),(centerX+s,centerY+s)],s//2)
  608.  
  609.  
  610.     elif boardType[pos[0]][pos[1]] == "R":
  611.         pygame.draw.polygon(windowSurface,color,((centerX-3*s,centerY-s),(centerX-s,centerY-3*s),(centerX,centerY-3*s),(centerX+s,centerY-4*s),(centerX+s,centerY+2*s),(centerX+2*s,centerY+3*s),(centerX+2*s,centerY+4*s),(centerX-3*s,centerY+4*s),(centerX-3*s,centerY+3*s),(centerX-2*s,centerY+2*s),(centerX-s,centerY-s),(centerX-3*s,centerY)))
  612.         pygame.draw.lines(windowSurface,color3,True,[(centerX-3*s,centerY-s),(centerX-s,centerY-3*s),(centerX,centerY-3*s),(centerX+s,centerY-4*s),(centerX+s,centerY+2*s),(centerX+2*s,centerY+3*s),(centerX+2*s,centerY+4*s),(centerX-3*s,centerY+4*s),(centerX-3*s,centerY+3*s),(centerX-2*s,centerY+2*s),(centerX-s,centerY-s),(centerX-3*s,centerY)],s//2)
  613.         pygame.draw.lines(windowSurface,color3,False,[(centerX-3*s,centerY+3*s),(centerX+2*s,centerY+3*s)],s//2)
  614.         pygame.draw.lines(windowSurface,color3,False,[(centerX-2*s,centerY+2*s),(centerX+s,centerY+2*s)],s//2)
  615.  
  616.     elif boardType[pos[0]][pos[1]] == "O":
  617.         pygame.draw.polygon(windowSurface,color,((centerX,centerY-4*s),(centerX+2*s,centerY-2*s),(centerX+s,centerY-s),(centerX+s,centerY+2*s),(centerX+2*s,centerY+3*s),(centerX+2*s,centerY+4*s),(centerX-2*s,centerY+4*s),(centerX-2*s,centerY+3*s),(centerX-s,centerY+2*s),(centerX-s,centerY-s),(centerX-2*s,centerY-2*s)))
  618.         pygame.draw.lines(windowSurface,color3,True,[(centerX,centerY-4*s),(centerX+2*s,centerY-2*s),(centerX+s,centerY-s),(centerX+s,centerY+2*s),(centerX+2*s,centerY+3*s),(centerX+2*s,centerY+4*s),(centerX-2*s,centerY+4*s),(centerX-2*s,centerY+3*s),(centerX-s,centerY+2*s),(centerX-s,centerY-s),(centerX-2*s,centerY-2*s)],s//2)
  619.         pygame.draw.lines(windowSurface,color3,False,[(centerX-2*s,centerY+3*s),(centerX+2*s,centerY+3*s)],s//2)
  620.         pygame.draw.lines(windowSurface,color3,False,[(centerX-s,centerY+2*s),(centerX+s,centerY+2*s)],s//2)
  621.         pygame.draw.lines(windowSurface,color3,False,[(centerX,centerY-3*s),(centerX,centerY-s)],s//2)
  622.         pygame.draw.lines(windowSurface,color3,False,[(centerX-s,centerY-2*s),(centerX+s,centerY-2*s)],s//2)
  623.  
  624.     elif boardType[pos[0]][pos[1]] == "K":
  625.         pygame.draw.polygon(windowSurface,color,((centerX+s,centerY-4*s),(centerX+s,centerY-3*s),(centerX+2*s,centerY-3*s),(centerX+2*s,centerY-s),(centerX+s,centerY-s),(centerX+s,centerY),(centerX+2*s,centerY+s),(centerX+4*s,centerY+s),(centerX+3*s,centerY+4*s),(centerX-3*s,centerY+4*s),(centerX-4*s,centerY+s),(centerX-2*s,centerY+s),(centerX-s,centerY),(centerX-s,centerY-s),(centerX-2*s,centerY-s),(centerX-2*s,centerY-3*s),(centerX-s,centerY-3*s),(centerX-s,centerY-4*s)))
  626.         pygame.draw.lines(windowSurface,color3,False,[(centerX+s,centerY-4*s),(centerX+s,centerY-3*s),(centerX+2*s,centerY-3*s),(centerX+2*s,centerY-s),(centerX+s,centerY-s),(centerX+s,centerY),(centerX+2*s,centerY+s)],s//2)
  627.         pygame.draw.lines(windowSurface,color3,False,[(centerX+4*s,centerY+s),(centerX+3*s,centerY+4*s),(centerX-3*s,centerY+4*s),(centerX-4*s,centerY+s)],s//2)
  628.         pygame.draw.lines(windowSurface,color3,False,[(centerX-2*s,centerY+s),(centerX-s,centerY),(centerX-s,centerY-s),(centerX-2*s,centerY-s),(centerX-2*s,centerY-3*s),(centerX-s,centerY-3*s),(centerX-s,centerY-4*s),(centerX+s,centerY-4*s)],s//2)
  629.         pygame.draw.circle(windowSurface,color,(centerX-3*s,centerY+s),s)
  630.         pygame.draw.circle(windowSurface,color3,(centerX-3*s,centerY+s),s,s//2)
  631.         pygame.draw.circle(windowSurface,color,(centerX+3*s,centerY+s),s)
  632.         pygame.draw.circle(windowSurface,color3,(centerX+3*s,centerY+s),s,s//2)
  633.                
  634.     elif boardType[pos[0]][pos[1]] == "L":
  635.         pygame.draw.polygon(windowSurface,color,((centerX,centerY-4*s),(centerX+s,centerY+s),(centerX+3*s,centerY-3*s),(centerX+2*s,centerY+2*s),(centerX+4*s,centerY-2*s),(centerX+3*s,centerY+4*s),(centerX-3*s,centerY+4*s),(centerX-4*s,centerY-2*s),(centerX-2*s,centerY+2*s),(centerX-3*s,centerY-3*s),(centerX-s,centerY+s)))
  636.         pygame.draw.lines(windowSurface,color3,True,[(centerX,centerY-4*s),(centerX+s,centerY+s),(centerX+3*s,centerY-3*s),(centerX+2*s,centerY+2*s),(centerX+4*s,centerY-2*s),(centerX+3*s,centerY+4*s),(centerX-3*s,centerY+4*s),(centerX-4*s,centerY-2*s),(centerX-2*s,centerY+2*s),(centerX-3*s,centerY-3*s),(centerX-s,centerY+s)],s//2)
  637.  
  638.    
  639. def drawBoard():
  640.     windowSurface.fill(BLACK)
  641.     for x in range(8):
  642.         for y in range(8):
  643.             drawSquare((x,y),0)
  644.  
  645. def mouseConvert(x):
  646.     return (x[0]//S,7-x[1]//S)
  647.            
  648.  
  649. def turnChange(turn):
  650.     if turn == "M":
  651.         turn = "V"
  652.     else:
  653.         turn = "M"
  654.     return turn
  655.  
  656.  
  657. def getMove(turn, startPos, y, running):
  658.     global boardOwner,boardType
  659.     global menu, purchasingStage
  660.     if y == True:
  661.         startPos = mouseConvert(pygame.mouse.get_pos())
  662.         if startPos[0]>7:
  663.             return turn, startPos, y, running
  664.         if boardOwner[startPos[0]][startPos[1]] == turn:
  665.             drawSquare((startPos[0],startPos[1]),1)
  666.             pygame.display.update()
  667.             y = False
  668.             return turn, startPos, y, running
  669.     else:
  670.         endPos = mouseConvert(pygame.mouse.get_pos())
  671.         if endPos[0]>7:
  672.             return turn, startPos, y, running
  673.         temp = checkValidity(turn, startPos, endPos)
  674.         if temp != True and temp != False:
  675.             boardType,boardOwner,blackKingPos,whiteKingPos = castle(temp)
  676.             if turn == "V":                
  677.                 for i in range(8):
  678.                     drawSquare((i,0),0)
  679.             else:
  680.                 for i in range(8):
  681.                     drawSquare((i,7),0)
  682.             if purchasing:
  683.                 menu = "purchasing"
  684.                 purchasingStage = 1
  685.                 drawGUI(turn, menu)
  686.             else:
  687.                 turn = turnChange(turn)
  688.             y = True
  689.             return turn, startPos, y, running
  690.            
  691.         elif temp == True:
  692.             if not changeBoard(turn,startPos,endPos): ###### Lisada midagi mängu lõpu kohta
  693.                 menu = "gameend"
  694.                 drawGameEndScreen(turn)
  695.                 return turn, startPos, y, running
  696.             if purchasing:
  697.                 menu = "purchasing"
  698.                 purchasingStage = 1
  699.                 drawGUI(turn, menu)
  700.             else:
  701.                 turn = turnChange(turn)
  702.             y = True
  703.             return turn, startPos, y, running
  704.         return turn, startPos, y, running
  705.     return turn, startPos, y, running
  706.        
  707. def getMousePos():
  708.     pos = pygame.mouse.get_pos()
  709.     return pos
  710.  
  711. def terminate():
  712.     #pygame.quit()
  713.     #sys.exit()
  714.     return False
  715.  
  716. def drawPauseMenu():
  717.     windowSurface.fill(BLACK)
  718.     windowSurface.blit(unpauseImage, unpauseButton)
  719.  
  720. def drawScore(scoreWhite, scoreBlack):
  721.     windowSurface.blit(scoreDisplayImage,scoreDisplayButton)
  722.     scoreWhiteText = scoreFont.render("V:" + str(scoreWhite),True,BLACK)
  723.     scoreBlackText = scoreFont.render("M:" + str(scoreBlack),True,BLACK)
  724.     scoreWhiteTextRect = scoreWhiteText.get_rect()
  725.     scoreBlackTextRect = scoreBlackText.get_rect()
  726.     scoreWhiteTextRect.centery = 7*S+5*s
  727.     scoreWhiteTextRect.left = WINDOWHEIGHT+2*s
  728.     windowSurface.blit(scoreWhiteText,scoreWhiteTextRect)
  729.     scoreBlackTextRect.centery = 7*S+5*s
  730.     scoreBlackTextRect.left = WINDOWHEIGHT+2*s+2*S
  731.     windowSurface.blit(scoreBlackText,scoreBlackTextRect)
  732.  
  733. def drawGUI(turn, menu):
  734.     windowSurface.blit(pauseImage,pauseButton)
  735.     windowSurface.blit(surrenderImage, surrenderButton)
  736.     windowSurface.blit(scoreDisplayImage,scoreDisplayButton)
  737.     scoreWhiteText = scoreFont.render("V:" + str(scoreWhite),True,BLACK)
  738.     scoreBlackText = scoreFont.render("M:" + str(scoreBlack),True,BLACK)
  739.     scoreWhiteTextRect = scoreWhiteText.get_rect()
  740.     scoreBlackTextRect = scoreBlackText.get_rect()
  741.     scoreWhiteTextRect.centery = 7*S+5*s
  742.     scoreWhiteTextRect.left = WINDOWHEIGHT+2*s
  743.     windowSurface.blit(scoreWhiteText,scoreWhiteTextRect)
  744.     scoreBlackTextRect.centery = 7*S+5*s
  745.     scoreBlackTextRect.left = WINDOWHEIGHT+2*s+2*S
  746.     windowSurface.blit(scoreBlackText,scoreBlackTextRect)
  747.     windowSurface.blit(pieceChoiceBlankImage,instructionsButton)
  748.  
  749.    
  750.     blankPieceChoice()
  751.     if turn == "V":
  752.         windowSurface.blit(whiteTurnImage,turnButton)
  753.     else:
  754.         windowSurface.blit(blackTurnImage,turnButton)
  755.     if menu == "purchasing":
  756.         windowSurface.blit(stagePurchasingImage,stageRect)
  757.     elif menu == "questions":
  758.         windowSurface.blit(stageQuestionsImage,stageRect)
  759.     else:
  760.         windowSurface.blit(stageMovingImage,stageRect)
  761.     checkCheckTurnStart(turn)
  762.     if checkTurnStart and check:
  763.         windowSurface.blit(checkTimeDisplayImageOn,checkTimeDisplayButton)
  764.     else:
  765.         windowSurface.blit(checkTimeDisplayImageOff,checkTimeDisplayButton)
  766.  
  767.  
  768.     if menu == "game":
  769.         if y == True:
  770.             instructionsText = instructionsFont.render("Valige nupp",True,BLACK)
  771.         elif y == False:
  772.             instructionsText = instructionsFont.render("Valige sihtpunkt",True,BLACK)
  773.     elif menu == "purchasing":
  774.         if purchasingStage == 1:
  775.             instructionsText = instructionsFont.render("Valige nupp, mida soovite osta",True,BLACK)
  776.         elif purchasingStage == 2:
  777.             instructionsText = instructionsFont.render("Valige sihtpunkt teie nupule",True,BLACK)
  778.     elif menu == "questions":
  779.         instructionsText = instructionsFont.render("Lahendage tehteid!", True,BLACK)
  780.     else:
  781.         instructionsText = instructionsFont.render("", True,BLACK) ## Et suvalisi erroreid ei tekiks
  782.     instructionsTextRect = instructionsText.get_rect()
  783.     instructionsTextRect.centery = 2*S+5*s
  784.     instructionsTextRect.left = WINDOWHEIGHT+2*s
  785.     windowSurface.blit(instructionsText,instructionsTextRect)
  786.  
  787.  
  788. def drawMainMenu():
  789.     windowSurface.fill(BLACK)
  790.     windowSurface.blit(startGameImage,startGameButton)
  791.     windowSurface.blit(optionsImage,optionsButton)
  792.     pygame.display.update()
  793.  
  794. def drawOptionsMenu(optionsTemp):
  795.     printMode = optionsTemp["printMode"]
  796.     purchasing = optionsTemp["purchasing"]
  797.     queens = optionsTemp["queens"]
  798.     placing = optionsTemp["placing"]
  799.     check = optionsTemp["check"]
  800.     pawnValue = optionsTemp["pawnValue"]
  801.  
  802.     if options["printMode"] == "V":
  803.         windowSurface.fill(BLACK)
  804.         windowSurface.blit(goBackImage,goBackButton)
  805.         windowSurface.blit(saveImage, saveButton)
  806.  
  807.        
  808.         text = basicFont.render("Kuvamise suurus:",True,WHITE,BLACK)
  809.         textRect = text.get_rect()
  810.         textRect.topleft = (50,120)
  811.         windowSurface.blit(text,textRect)
  812.         windowSurface.blit(nextArrowImage,printModeButton)
  813.         windowSurface.blit(backArrowImage,printModeButtonBack)
  814.  
  815.         if printMode == "K":
  816.             settingsText = settingsFont.render("Keskmine (1200x800)",True,WHITE,BLACK)
  817.         elif printMode == "S":
  818.             settingsText = settingsFont.render("Suur (1440x960)",True,WHITE,BLACK)
  819.         else:
  820.             settingsText = settingsFont.render("Väike (960x640)",True,WHITE,BLACK)
  821.         settingsTextRect = settingsText.get_rect()
  822.         settingsTextRect.centerx = 450
  823.         settingsTextRect.centery = 132.5
  824.         windowSurface.blit(settingsText,settingsTextRect)
  825.  
  826.        
  827.         text = basicFont.render("Nuppude ostmine:",True,WHITE,BLACK)
  828.         textRect.top = 145
  829.         windowSurface.blit(text,textRect)
  830.         windowSurface.blit(nextArrowImage,purchasingButton)
  831.         windowSurface.blit(backArrowImage,purchasingButtonBack)
  832.         if purchasing:
  833.             settingsText = settingsFont.render("Sees",True,WHITE,BLACK)
  834.         else:
  835.             settingsText = settingsFont.render("Väljas",True,WHITE,BLACK)
  836.         settingsTextRect = settingsText.get_rect()
  837.         settingsTextRect.centerx = 450
  838.         settingsTextRect.centery = 157.5
  839.         windowSurface.blit(settingsText,settingsTextRect)
  840.  
  841.        
  842.         text = basicFont.render("Lippude ostmine:",True,WHITE,BLACK)
  843.         textRect.top = 170
  844.         windowSurface.blit(text,textRect)
  845.         windowSurface.blit(nextArrowImage,queensButton)
  846.         windowSurface.blit(backArrowImage,queensButtonBack)
  847.         if not purchasing:
  848.             settingsText = settingsFont.render("-",True,WHITE,BLACK)
  849.         elif queens:
  850.             settingsText = settingsFont.render("Sees",True,WHITE,BLACK)
  851.         else:
  852.             settingsText = settingsFont.render("Väljas",True,WHITE,BLACK)
  853.         settingsTextRect = settingsText.get_rect()
  854.         settingsTextRect.centerx = 450
  855.         settingsTextRect.centery = 182.5
  856.         windowSurface.blit(settingsText,settingsTextRect)
  857.  
  858.        
  859.         text = basicFont.render("Nuppude asetamine:",True,WHITE,BLACK)
  860.         textRect.top = 195
  861.         windowSurface.blit(text,textRect)
  862.         windowSurface.blit(nextArrowImage,placingButton)
  863.         windowSurface.blit(backArrowImage,placingButtonBack)
  864.         if not purchasing:
  865.             settingsText = settingsFont.render("-",True,WHITE,BLACK)
  866.         elif placing == "M":
  867.             settingsText = settingsFont.render("Mõlemad",True,WHITE,BLACK)
  868.         elif placing == "T":
  869.             settingsText = settingsFont.render("Tagumine rida",True,WHITE,BLACK)
  870.         elif placing == "P":
  871.             settingsText = settingsFont.render("Nuppude ülendamine",True,WHITE,BLACK)
  872.         settingsTextRect = settingsText.get_rect()
  873.         settingsTextRect.centerx = 450
  874.         settingsTextRect.centery = 207.5
  875.         windowSurface.blit(settingsText,settingsTextRect)
  876.        
  877.        
  878.         text = basicFont.render("Tuli:",True,WHITE,BLACK)
  879.         textRect.top = 220
  880.         windowSurface.blit(text,textRect)
  881.         windowSurface.blit(nextArrowImage,checkButton)
  882.         windowSurface.blit(backArrowImage,checkButtonBack)
  883.         if check:
  884.             settingsText = settingsFont.render("Sees",True,WHITE,BLACK)
  885.         else:
  886.             settingsText = settingsFont.render("Väljas",True,WHITE,BLACK)
  887.         settingsTextRect = settingsText.get_rect()
  888.         settingsTextRect.centerx = 450
  889.         settingsTextRect.centery = 232.5
  890.         windowSurface.blit(settingsText,settingsTextRect)
  891.  
  892.        
  893.         text = basicFont.render("Etturi väärtus:",True,WHITE,BLACK)
  894.         textRect.top = 245
  895.         windowSurface.blit(text,textRect)
  896.         windowSurface.blit(nextArrowImage,pawnValueButton)
  897.         windowSurface.blit(backArrowImage,pawnValueButtonBack)
  898.         settingsText = settingsFont.render(str(pawnValue),True,WHITE,BLACK)
  899.         settingsTextRect = settingsText.get_rect()
  900.         settingsTextRect.centerx = 450
  901.         settingsTextRect.centery = 257.5
  902.         windowSurface.blit(settingsText,settingsTextRect)
  903.        
  904.     if options["printMode"] == "K" or options["printMode"] == "S": ###########
  905.         windowSurface.fill(BLACK)
  906.         windowSurface.blit(goBackImage,goBackButton)
  907.         windowSurface.blit(saveImage, saveButton)
  908.  
  909.        
  910.         text = basicFont.render("Kuvamise suurus:",True,WHITE,BLACK)
  911.         textRect = text.get_rect()
  912.         textRect.topleft = (100,250)
  913.         windowSurface.blit(text,textRect)
  914.         windowSurface.blit(nextArrowImage,printModeButton)
  915.         windowSurface.blit(backArrowImage,printModeButtonBack)
  916.  
  917.         if printMode == "K":
  918.             settingsText = settingsFont.render("Keskmine (1200x800)",True,WHITE,BLACK)
  919.         elif printMode == "S":
  920.             settingsText = settingsFont.render("Suur (1440x960)",True,WHITE,BLACK)
  921.         else:
  922.             settingsText = settingsFont.render("Väike (960x640)",True,WHITE,BLACK)
  923.         settingsTextRect = settingsText.get_rect()
  924.         settingsTextRect.centerx = 900
  925.         settingsTextRect.centery = 265
  926.         windowSurface.blit(settingsText,settingsTextRect)
  927.  
  928.        
  929.         text = basicFont.render("Nuppude ostmine:",True,WHITE,BLACK)
  930.         textRect.top = 300
  931.         windowSurface.blit(text,textRect)
  932.         windowSurface.blit(nextArrowImage,purchasingButton)
  933.         windowSurface.blit(backArrowImage,purchasingButtonBack)
  934.         if purchasing:
  935.             settingsText = settingsFont.render("Sees",True,WHITE,BLACK)
  936.         else:
  937.             settingsText = settingsFont.render("Väljas",True,WHITE,BLACK)
  938.         settingsTextRect = settingsText.get_rect()
  939.         settingsTextRect.centerx = 900
  940.         settingsTextRect.centery = 315
  941.         windowSurface.blit(settingsText,settingsTextRect)
  942.  
  943.        
  944.         text = basicFont.render("Lippude ostmine:",True,WHITE,BLACK)
  945.         textRect.top = 350
  946.         windowSurface.blit(text,textRect)
  947.         windowSurface.blit(nextArrowImage,queensButton)
  948.         windowSurface.blit(backArrowImage,queensButtonBack)
  949.         if not purchasing:
  950.             settingsText = settingsFont.render("-",True,WHITE,BLACK)
  951.         elif queens:
  952.             settingsText = settingsFont.render("Sees",True,WHITE,BLACK)
  953.         else:
  954.             settingsText = settingsFont.render("Väljas",True,WHITE,BLACK)
  955.         settingsTextRect = settingsText.get_rect()
  956.         settingsTextRect.centerx = 900
  957.         settingsTextRect.centery = 365
  958.         windowSurface.blit(settingsText,settingsTextRect)
  959.  
  960.        
  961.         text = basicFont.render("Nuppude asetamine:",True,WHITE,BLACK)
  962.         textRect.top = 400
  963.         windowSurface.blit(text,textRect)
  964.         windowSurface.blit(nextArrowImage,placingButton)
  965.         windowSurface.blit(backArrowImage,placingButtonBack)
  966.         if not purchasing:
  967.             settingsText = settingsFont.render("-",True,WHITE,BLACK)
  968.         elif placing == "M":
  969.             settingsText = settingsFont.render("Mõlemad",True,WHITE,BLACK)
  970.         elif placing == "T":
  971.             settingsText = settingsFont.render("Tagumine rida",True,WHITE,BLACK)
  972.         elif placing == "P":
  973.             settingsText = settingsFont.render("Nuppude ülendamine",True,WHITE,BLACK)
  974.         settingsTextRect = settingsText.get_rect()
  975.         settingsTextRect.centerx = 900
  976.         settingsTextRect.centery = 415
  977.         windowSurface.blit(settingsText,settingsTextRect)
  978.        
  979.        
  980.         text = basicFont.render("Tuli:",True,WHITE,BLACK)
  981.         textRect.top = 450
  982.         windowSurface.blit(text,textRect)
  983.         windowSurface.blit(nextArrowImage,checkButton)
  984.         windowSurface.blit(backArrowImage,checkButtonBack)
  985.         if check:
  986.             settingsText = settingsFont.render("Sees",True,WHITE,BLACK)
  987.         else:
  988.             settingsText = settingsFont.render("Väljas",True,WHITE,BLACK)
  989.         settingsTextRect = settingsText.get_rect()
  990.         settingsTextRect.centerx = 900
  991.         settingsTextRect.centery = 465
  992.         windowSurface.blit(settingsText,settingsTextRect)
  993.  
  994.        
  995.         text = basicFont.render("Etturi väärtus:",True,WHITE,BLACK)
  996.         textRect.top = 500
  997.         windowSurface.blit(text,textRect)
  998.         windowSurface.blit(nextArrowImage,pawnValueButton)
  999.         windowSurface.blit(backArrowImage,pawnValueButtonBack)
  1000.         settingsText = settingsFont.render(str(pawnValue),True,WHITE,BLACK)
  1001.         settingsTextRect = settingsText.get_rect()
  1002.         settingsTextRect.centerx = 900
  1003.         settingsTextRect.centery = 515
  1004.         windowSurface.blit(settingsText,settingsTextRect)
  1005.  
  1006. def optionsSave(optionsTemp):
  1007.     options = optionsTemp
  1008.     printMode = options["printMode"]
  1009.     purchasing = options["purchasing"]
  1010.     queens = options["queens"]
  1011.     placing = options["placing"]
  1012.     check = options["check"]
  1013.     pawnValue = options["pawnValue"]
  1014.     global basicFont, settingsFont
  1015.     if printMode == "V":
  1016.         basicFont = pygame.font.SysFont(None, 32)
  1017.         settingsFont = pygame.font.SysFont(None,24)
  1018.     else:
  1019.         basicFont = pygame.font.SysFont(None, 48)
  1020.         settingsFont = pygame.font.SysFont(None,32)
  1021.     return options
  1022.  
  1023. def changeOptions(mousePos, optionsTemp):
  1024.     printMode = optionsTemp["printMode"]
  1025.     purchasing = optionsTemp["purchasing"]
  1026.     queens = optionsTemp["queens"]
  1027.     placing = optionsTemp["placing"]
  1028.     check = optionsTemp["check"]
  1029.     pawnValue = optionsTemp["pawnValue"]
  1030.     if printModeButton.collidepoint(mousePos):
  1031.         if printMode == "K":
  1032.             printMode = "S"
  1033.         elif printMode == "S":
  1034.             printMode = "V"
  1035.         else:
  1036.             printMode = "K"
  1037.     elif printModeButtonBack.collidepoint(mousePos):
  1038.         if printMode == "K":
  1039.             printMode = "V"
  1040.         elif printMode == "S":
  1041.             printMode = "K"
  1042.         else:
  1043.             printMode = "S"
  1044.    
  1045.     elif purchasingButton.collidepoint(mousePos) or purchasingButtonBack.collidepoint(mousePos):
  1046.         purchasing = not purchasing
  1047.     elif queensButton.collidepoint(mousePos) or queensButtonBack.collidepoint(mousePos):
  1048.         if purchasing:
  1049.             queens = not queens
  1050.     elif placingButton.collidepoint(mousePos) and purchasing:
  1051.         if placing == "M":
  1052.             placing = "P"
  1053.         elif placing == "P":
  1054.             placing = "T"
  1055.         else:
  1056.             placing = "M"
  1057.     elif placingButtonBack.collidepoint(mousePos):
  1058.         if placing == "M":
  1059.             placing = "T"
  1060.         elif placing == "P":
  1061.             placing = "M"
  1062.         else:
  1063.             placing = "P"
  1064.     elif checkButton.collidepoint(mousePos) or checkButtonBack.collidepoint(mousePos):
  1065.         check = not check
  1066.     elif pawnValueButton.collidepoint(mousePos):
  1067.         if pawnValue < 10:
  1068.             pawnValue +=1
  1069.         else:
  1070.             pawnValue = 1
  1071.     elif pawnValueButtonBack.collidepoint(mousePos):
  1072.         if pawnValue > 1:
  1073.             pawnValue -= 1
  1074.         else:
  1075.             pawnValue = 10
  1076.     optionsTemp = {"printMode":printMode,"purchasing":purchasing,"queens":queens,"placing":placing,"check":check,"pawnValue":pawnValue}
  1077.     return optionsTemp
  1078.  
  1079. def surrenderQuery(turn):
  1080.     global running
  1081.     windowSurface.blit(confirmationQuestionImage,confirmationQuestionButton)
  1082.     windowSurface.blit(confirmationYesImage,confirmationYesButton)
  1083.     windowSurface.blit(confirmationNoImage,confirmationNoButton)
  1084.     pygame.display.update()
  1085.     while True:
  1086.         drawTimer(time.time()-timeStart-timePause)
  1087.         pygame.display.update()
  1088.         for event in pygame.event.get():
  1089.             if event.type == QUIT:
  1090.                 running = terminate()
  1091.                 return
  1092.             if event.type == MOUSEBUTTONDOWN:
  1093.                 if event.button == 1:
  1094.                     if confirmationYesButton.collidepoint(getMousePos()):
  1095.                         return True
  1096.                     elif confirmationNoButton.collidepoint(getMousePos()):
  1097.                         return False
  1098.  
  1099. def resetBoard():
  1100.     global y, turn, boardType, boardOwner
  1101.     global scoreWhite,scoreBlack
  1102.     scoreWhite=scoreBlack=0
  1103.     boardType = getNewBoardType()
  1104.     boardOwner = getNewBoardOwner()
  1105.     turn = "V"
  1106.     y = True
  1107.     global startPos,kingSideCastle,queenSideCastle,whiteKingPos,blackKingPos
  1108.     startPos = 0
  1109.     kingSideCastle = []
  1110.     queenSideCastle = []
  1111.     whiteKingPos = (4,0)
  1112.     blackKingPos = (4,7)
  1113.  
  1114.     global timeLast, turnStart, pauseStart, currentTime, timePause
  1115.     timeLast = turnStart = pauseStart = currentTime = timePause = 0
  1116.  
  1117. def stringToBool(string):
  1118.     if string == "True":
  1119.         return True
  1120.     return False
  1121.  
  1122. def readSettings():
  1123.     f = open("settings.txt","r")
  1124.     settings = []
  1125.     settingsType = []
  1126.     for line in f:
  1127.         settingType, text, setting = line.split()
  1128.         settings.append(setting)
  1129.         settingsType.append(settingType)
  1130.     for x in range(len(settingsType)):
  1131.         settingType = settingsType[x]
  1132.         if settingType == "printMode":
  1133.             printMode = str(settings[x])
  1134.         if settingType == "purchasing":
  1135.             purchasing = stringToBool(settings[x])
  1136.         if settingType == "queens":
  1137.             queens = stringToBool(settings[x])
  1138.         if settingType == "placing":
  1139.             placing = str(settings[x])
  1140.         if settingType == "check":
  1141.             check = stringToBool(settings[x])
  1142.         if settingType == "pawnValue":
  1143.             pawnValue = int(settings[x])
  1144.     f.close()
  1145.     return printMode, purchasing, queens, placing, check, pawnValue
  1146.    
  1147. def saveSettingsDocument():
  1148.     f = open("settings.txt", "w")
  1149.     f.write("printMode = " + str(options["printMode"]) +"\n")
  1150.     f.write("purchasing = " + str(options["purchasing"])+"\n")
  1151.     f.write("queens = " + str(options["queens"])+"\n")
  1152.     f.write("placing = " + str(options["placing"])+"\n")
  1153.     f.write("check = " + str(options["check"])+"\n")
  1154.     f.write("pawnValue = " + str(options["pawnValue"])+"\n")
  1155.     f.close()
  1156.  
  1157. ##GUI
  1158. def reloadSettings():
  1159.     global WINDOWWIDTH, WINDOWHEIGHT, S, s, LEFTOVERSPACE
  1160.     global basicFont, settingsFont, scoreFont, instructionsFont, questionsFont
  1161.     global checkTurnStart
  1162.     global scoreWhite, scoreBlack, timeWhite, timeBlack
  1163.     scoreWhite = 0
  1164.     timeWhite = 0
  1165.     scoreBlack = 0
  1166.     timeBlack = 0
  1167.     checkTurnStart = False
  1168.     if printMode == "K":
  1169.         WINDOWWIDTH = 1200
  1170.         WINDOWHEIGHT = 800
  1171.         questionsFont = pygame.font.SysFont(None,64)
  1172.         basicFont = pygame.font.SysFont(None,48)
  1173.         settingsFont = pygame.font.SysFont(None,32)
  1174.         scoreFont = pygame.font.SysFont(None,96)
  1175.         instructionsFont = pygame.font.SysFont(None,32)
  1176.     elif printMode == "S":
  1177.         WINDOWWIDTH = 1440
  1178.         WINDOWHEIGHT = 960
  1179.         questionsFont = pygame.font.SysFont(None,96)
  1180.         basicFont = pygame.font.SysFont(None,48)
  1181.         settingsFont = pygame.font.SysFont(None,32)
  1182.         scoreFont = pygame.font.SysFont(None,128)
  1183.         instructionsFont = pygame.font.SysFont(None,32)
  1184.     else:
  1185.         WINDOWWIDTH = 960
  1186.         WINDOWHEIGHT = 640
  1187.         questionsFont = pygame.font.SysFont(None,42)
  1188.         basicFont = pygame.font.SysFont(None,32)
  1189.         settingsFont = pygame.font.SysFont(None,24)
  1190.         scoreFont = pygame.font.SysFont(None,64)
  1191.         instructionsFont = pygame.font.SysFont(None,24)
  1192.     windowSurface = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT), 0, 32)
  1193.     LEFTOVERSPACE = WINDOWWIDTH-WINDOWHEIGHT
  1194.     S = WINDOWHEIGHT//8
  1195.     s = S//10
  1196.  
  1197.    
  1198.     global unpauseImage, unpauseButton, pauseImageBase, pauseImage, pauseButton, surrenderImageBase,surrenderImage
  1199.     global surrenderButton, whiteTurnImageBase, whiteTurnImage, blackTurnImageBase, blackTurnImage,turnButton
  1200.    
  1201.     global pieceChoiceButton, pieceChoiceImageBase, pieceChoiceImage, pieceChoiceBlankImageBase, pieceChoiceBlankImage
  1202.  
  1203.     global stageMovingImageBase, stageMovingImage, stagePurchasingImageBase, stagePurchasingImage, stageQuestionsImageBase, stageQuestionsImage, stageRect
  1204.  
  1205.     ###main menüü pildid
  1206.     global startGameImage, optionsImage, startGameButton, optionsButton
  1207.  
  1208.     ## Options menüü
  1209.     global goBackImage, goBackButton, saveImage, saveButton, nextArrowImageBase, nextArrowImage
  1210.     global printModeButton, purchasingButton, queensButton, placingButton, checkButton, pawnValueButton
  1211.  
  1212.     global backArrowImageBase, backArrowImage, printModeButtonBack, purchasingButtonBack,queensButtonBack,placingButtonBack,checkButtonBack,pawnValueButtonBack
  1213.  
  1214.     ## Surrender
  1215.     global confirmationQuestionImage, confirmationYesImage, confirmationNoImage, confirmationQuestionButton, confirmationYesButton, confirmationNoButton
  1216.  
  1217.  
  1218.     #Ostmine/Upgrade'imine
  1219.     global bishopButton, knightButton, rookButton, queenButton
  1220.    
  1221.     global checkTimeDisplayImageOnBase, checkTimeDisplayImageOn, checkTimeDisplayImageOffBase, checkTimeDisplayImageOff, checkTimeDisplayButton
  1222.     global scoreDisplayImage, scoreDisplayButton
  1223.     global instructionsButton
  1224.  
  1225.     global pieceChoiceImageBishop, pieceChoiceImageRook, pieceChoiceImageKnight, pieceChoiceImageQueen
  1226.     global questionsButton
  1227.  
  1228.     global endGameContinueButton, endGameContinueImage, whiteWinImage, blackWinImage, winnerRect
  1229.  
  1230.     endGameContinueImageBase = pygame.image.load("endGameContinueImage.png")
  1231.     endGameContinueImage = pygame.transform.scale(endGameContinueImageBase, (4*S,S))
  1232.     endGameContinueButton = pygame.Rect(0,0,4*S,S)
  1233.     endGameContinueButton.centerx = WINDOWWIDTH//2
  1234.     endGameContinueButton.centery = WINDOWHEIGHT//2
  1235.     whiteWinImageBase = pygame.image.load("whiteWinImage.png")
  1236.     whiteWinImage = pygame.transform.scale(whiteWinImageBase, (4*S,S))
  1237.     blackWinImageBase = pygame.image.load("blackWinImage.png")
  1238.     blackWinImage = pygame.transform.scale(blackWinImageBase, (4*S,S))
  1239.     winnerRect = pygame.Rect(0,0,4*S,S)
  1240.     winnerRect.bottom = endGameContinueButton.top
  1241.     winnerRect.left = endGameContinueButton.left
  1242.    
  1243.    
  1244.     pieceChoiceImageBishopBase = pygame.image.load("pieceChoiceImageBishop.png")
  1245.     pieceChoiceImageBishop = pygame.transform.scale(pieceChoiceImageBishopBase, (4*S,S))
  1246.     pieceChoiceImageKnightBase = pygame.image.load("pieceChoiceImageKnight.png")
  1247.     pieceChoiceImageKnight = pygame.transform.scale(pieceChoiceImageKnightBase, (4*S,S))
  1248.     pieceChoiceImageRookBase = pygame.image.load("pieceChoiceImageRook.png")
  1249.     pieceChoiceImageRook = pygame.transform.scale(pieceChoiceImageRookBase, (4*S,S))
  1250.     pieceChoiceImageQueenBase = pygame.image.load("pieceChoiceImageQueen.png")
  1251.     pieceChoiceImageQueen = pygame.transform.scale(pieceChoiceImageQueenBase, (4*S,S))
  1252.  
  1253.     questionsButton = pygame.Rect(WINDOWHEIGHT,S,4*S,S)
  1254.    
  1255.     instructionsButton = pygame.Rect(WINDOWHEIGHT,2*S,4*S,S)
  1256.    
  1257.     unpauseImage = pygame.image.load("unpauseButton.png")
  1258.     unpauseButton = pygame.Rect (WINDOWWIDTH//2-150, WINDOWHEIGHT//2-50, 300, 100)
  1259.     pauseImageBase = pygame.image.load("pauseButton.png")
  1260.     pauseImage = pygame.transform.scale(pauseImageBase,(S,S))
  1261.     pauseButton = pygame.Rect (WINDOWHEIGHT,0,S,S)
  1262.     surrenderImageBase = pygame.image.load("surrenderButton.png")
  1263.     surrenderImage = pygame.transform.scale(surrenderImageBase,(S,S))
  1264.     surrenderButton = pygame.Rect (WINDOWHEIGHT+S,0,S,S)
  1265.     whiteTurnImageBase = pygame.image.load("whiteTurnImage.png")
  1266.     whiteTurnImage = pygame.transform.scale(whiteTurnImageBase,(2*S,S))
  1267.     blackTurnImageBase = pygame.image.load("blackTurnImage.png")
  1268.     blackTurnImage = pygame.transform.scale(blackTurnImageBase,(2*S,S))
  1269.     turnButton = pygame.Rect (WINDOWHEIGHT+S+S,0,S+S,S)
  1270.  
  1271.     scoreDisplayImageBase = pygame.image.load("ScoreDisplayImage.png")
  1272.     scoreDisplayImage = pygame.transform.scale(scoreDisplayImageBase,(4*S,S))
  1273.     scoreDisplayButton = pygame.Rect(WINDOWHEIGHT,7*S,4*S,S)
  1274.    
  1275.     checkTimeDisplayImageOnBase = pygame.image.load("checkTimeDisplayImageOn.png")
  1276.     checkTimeDisplayImageOn = pygame.transform.scale(checkTimeDisplayImageOnBase,(4*S,S))
  1277.     checkTimeDisplayImageOffBase = pygame.image.load("checkTimeDisplayImageOff.png")
  1278.     checkTimeDisplayImageOff = pygame.transform.scale(checkTimeDisplayImageOffBase,(4*S,S))
  1279.     checkTimeDisplayButton = pygame.Rect(WINDOWHEIGHT,6*S,4*S,S)
  1280.    
  1281.     pieceChoiceButton = pygame.Rect(WINDOWHEIGHT,S,4*S,S)
  1282.     pieceChoiceImageBase = pygame.image.load("pieceChoiceImage.png")
  1283.     pieceChoiceImage = pygame.transform.scale(pieceChoiceImageBase, (4*S, S))
  1284.     pieceChoiceBlankImageBase = pygame.image.load("pieceChoiceBlankImage.png")
  1285.     pieceChoiceBlankImage = pygame.transform.scale(pieceChoiceBlankImageBase, (4*S, S))
  1286.  
  1287.     stageMovingImageBase = pygame.image.load("stageMovingImage.png")
  1288.     stageMovingImage = pygame.transform.scale(stageMovingImageBase,(4*S,3*S))
  1289.     stagePurchasingImageBase = pygame.image.load("stagePurchasingImage.png")
  1290.     stagePurchasingImage = pygame.transform.scale(stagePurchasingImageBase,(4*S,3*S))
  1291.     stageQuestionsImageBase = pygame.image.load("stageQuestionsImage.png")
  1292.     stageQuestionsImage = pygame.transform.scale(stageQuestionsImageBase,(4*S,3*S))
  1293.     stageRect = pygame.Rect(WINDOWHEIGHT,3*S,LEFTOVERSPACE,3*S)
  1294.  
  1295.     global blankTimerImage, blankTimerButton
  1296.     blankTimerImageBase = pygame.image.load("blankTimerImage.png")
  1297.     blankTimerImage = pygame.transform.scale(blankTimerImageBase, (2*S,S))
  1298.     blankTimerButton = pygame.Rect(WINDOWHEIGHT+2*S,6*S,2*S,S)
  1299.    
  1300.     ###main menüü pildid
  1301.     startGameImage = pygame.image.load("startGameImage.png")
  1302.     optionsImage = pygame.image.load("optionsImage.png")
  1303.     startGameButton = pygame.Rect(WINDOWWIDTH//2-200,WINDOWHEIGHT//2-100-50-20,400,100)
  1304.     optionsButton = pygame.Rect(WINDOWWIDTH//2-200,WINDOWHEIGHT//2-100+50+20,400,100)
  1305.  
  1306.     ## Options menüü
  1307.     if printMode == "S" or printMode == "K":
  1308.         goBackImage = pygame.image.load("goBackImage.png")
  1309.         goBackButton = pygame.Rect(100,100,400,100)
  1310.         saveImage = pygame.image.load("saveImage.png")
  1311.         saveButton = pygame.Rect(700,100,400,100)
  1312.         nextArrowImageBase = pygame.image.load("nextArrowImage.png")
  1313.         nextArrowImage = pygame.transform.scale(nextArrowImageBase,(30,30))
  1314.         printModeButton = pygame.Rect(1100,250,30,30)
  1315.         purchasingButton = pygame.Rect(1100,300,30,30)
  1316.         queensButton = pygame.Rect(1100,350,30,30)
  1317.         placingButton = pygame.Rect(1100,400,30,30)
  1318.         checkButton = pygame.Rect(1100,450,30,30)
  1319.         pawnValueButton = pygame.Rect(1100,500,30,30)
  1320.  
  1321.         backArrowImageBase = pygame.image.load("backArrowImage.png")
  1322.         backArrowImage = pygame.transform.scale(backArrowImageBase,(30,30))
  1323.         printModeButtonBack = pygame.Rect(670,250,30,30)
  1324.         purchasingButtonBack = pygame.Rect(670,300,30,30)
  1325.         queensButtonBack = pygame.Rect(670,350,30,30)
  1326.         placingButtonBack = pygame.Rect(670,400,30,30)
  1327.         checkButtonBack = pygame.Rect(670,450,30,30)
  1328.         pawnValueButtonBack = pygame.Rect(670,500,30,30)
  1329.     else:
  1330.         goBackImageBase = pygame.image.load("goBackImage.png")
  1331.         goBackImage = pygame.transform.scale(goBackImageBase,(200,50))
  1332.         goBackButton = pygame.Rect(50,50,200,50)
  1333.         saveImageBase = pygame.image.load("saveImage.png")
  1334.         saveImage = pygame.transform.scale(saveImageBase,(200,50))
  1335.         saveButton = pygame.Rect(350,50,200,50)
  1336.         nextArrowImageBase = pygame.image.load("nextArrowImage.png")
  1337.         nextArrowImage = pygame.transform.scale(nextArrowImageBase,(15,15))
  1338.         printModeButton = pygame.Rect(550,125,15,15)
  1339.         purchasingButton = pygame.Rect(550,150,15,15)
  1340.         queensButton = pygame.Rect(550,175,15,15)
  1341.         placingButton = pygame.Rect(550,200,15,15)
  1342.         checkButton = pygame.Rect(550,225,15,15)
  1343.         pawnValueButton = pygame.Rect(550,250,15,15)
  1344.  
  1345.         backArrowImageBase = pygame.image.load("backArrowImage.png")
  1346.         backArrowImage = pygame.transform.scale(backArrowImageBase,(15,15))
  1347.         printModeButtonBack = pygame.Rect(335,125,15,15)
  1348.         purchasingButtonBack = pygame.Rect(335,150,15,15)
  1349.         queensButtonBack = pygame.Rect(335,175,15,15)
  1350.         placingButtonBack = pygame.Rect(335,200,15,15)
  1351.         checkButtonBack = pygame.Rect(335,225,15,15)
  1352.         pawnValueButtonBack = pygame.Rect(335,250,15,15)
  1353.  
  1354.  
  1355.  
  1356.  
  1357.     ## Surrender
  1358.     confirmationQuestionImage = pygame.image.load("confirmationQuestionImage.png")
  1359.     confirmationYesImage = pygame.image.load("confirmationYesImage.png")
  1360.     confirmationNoImage = pygame.image.load("confirmationNoImage.png")
  1361.     confirmationQuestionButton = pygame.Rect(WINDOWWIDTH//2-300,WINDOWHEIGHT//2-100,600,100)
  1362.     confirmationYesButton = pygame.Rect(WINDOWWIDTH//2-300,WINDOWHEIGHT//2-100+100,300,100)
  1363.     confirmationNoButton = pygame.Rect(WINDOWWIDTH//2-300+300,WINDOWHEIGHT//2-100+100,300,100)
  1364.  
  1365.  
  1366.     #Ostmine/Upgrade'imine
  1367.     bishopButton = pygame.Rect(WINDOWHEIGHT,S,S,S)
  1368.     knightButton = pygame.Rect(WINDOWHEIGHT+S,S,S,S)
  1369.     rookButton = pygame.Rect(WINDOWHEIGHT+2*S,S,S,S)
  1370.     queenButton = pygame.Rect(WINDOWHEIGHT+3*S,S,S,S)
  1371.  
  1372. def findKing(turn):
  1373.     for y in range(8):
  1374.         for x in range(8):
  1375.             if boardType[x][y] == "K":
  1376.                 if boardOwner[x][y] == turn:
  1377.                     return (x,y)
  1378.  
  1379. def checkCheckTurnStart(turn):
  1380.     global checkTurnStart
  1381.     if checkCheck(findKing(turn),boardType,boardOwner):
  1382.         checkTurnStart = True
  1383.     else:
  1384.         checkTurnStart = False
  1385.  
  1386. def countTime(timeStart):
  1387.     timeCurrent = time.time() - timeStart
  1388.     return timeCurrent
  1389.  
  1390. def getSquare(mousePos):
  1391.     x = mousePos[0]//S
  1392.     y = 7-mousePos[1]//S
  1393.     if x <= 7 and x >=0 and y <=8 and y>=0:
  1394.         return (x,y)
  1395.     else:
  1396.         return False
  1397.  
  1398. def getPurchasingOrder():
  1399.     global purchasingStage, turn, menu, running, scoreWhite, scoreBlack
  1400.     global timeStart, timePause
  1401.     global timeLastTemp
  1402.     global answer
  1403.     drawPieceChoices()
  1404.     pygame.display.update()
  1405.     piece = 0
  1406.     while True:
  1407.         drawTimer(time.time()-timeStart-timePause) ############## Eraldi funktsioon aja joonistamiseks
  1408.         pygame.display.update()
  1409.         #print(time.time()-timeStart-timePause)
  1410.         for event in pygame.event.get():
  1411.             if event.type == pygame.QUIT:
  1412.                 running = terminate()
  1413.                 return
  1414.             if event.type == MOUSEBUTTONDOWN:
  1415.                 if event.button == 3:
  1416.                     if purchasingStage == 2:
  1417.                         pygame.display.update()
  1418.                         purchasingStage = 1
  1419.                         drawGUI(turn, menu)
  1420.                         drawPieceChoices()
  1421.                 if event.button == 1:
  1422.                     if pauseButton.collidepoint(getMousePos()): ######### Paus
  1423.                         timePauseStart = time.time()
  1424.                         while True:
  1425.                             drawPauseMenu()
  1426.                             pygame.display.update()
  1427.                             breakOut = 0
  1428.                             for event in pygame.event.get():
  1429.                                 if event.type == pygame.QUIT:
  1430.                                     running = terminate()
  1431.                                     return
  1432.                                 if event.type == MOUSEBUTTONDOWN:
  1433.                                     if event.button == 1:
  1434.                                         if unpauseButton.collidepoint(getMousePos()):
  1435.                                             timePause+= time.time()-timePauseStart
  1436.                                             drawBoard()
  1437.                                             purchasingStage = 1
  1438.                                             drawGUI(turn, menu)
  1439.                                             drawPieceChoices()
  1440.                                             pygame.display.update()
  1441.                                             breakOut = 1
  1442.                             if breakOut == 1:
  1443.                                 break
  1444.                     if purchasingStage == 1:
  1445.                         piece = pieceChoiceChoice(getMousePos())
  1446.                         if piece == "O" or piece == "R":
  1447.                             pieceVal = 3
  1448.                         elif piece == "V":
  1449.                             pieceVal = 5
  1450.                         elif piece == "L" and queens:
  1451.                             pieceVal = 9
  1452.                         if turn == "V" and piece != 0:
  1453.                             if pieceVal*pawnValue <= scoreWhite:
  1454.                                 purchasingStage = 2
  1455.                                 drawGUI(turn, menu)
  1456.                                 if piece == "O":
  1457.                                     windowSurface.blit(pieceChoiceImageBishop,pieceChoiceButton)
  1458.                                     pygame.display.update()
  1459.                                 if piece == "R":
  1460.                                     windowSurface.blit(pieceChoiceImageKnight,pieceChoiceButton)
  1461.                                     pygame.display.update()
  1462.                                 if piece == "V":
  1463.                                     windowSurface.blit(pieceChoiceImageRook,pieceChoiceButton)
  1464.                                     pygame.display.update()
  1465.                                 if piece == "L":
  1466.                                     windowSurface.blit(pieceChoiceImageQueen,pieceChoiceButton)
  1467.                                     pygame.display.update()
  1468.                         elif piece != 0:
  1469.                             if pieceVal*pawnValue <= scoreBlack:
  1470.                                 purchasingStage = 2
  1471.                                 drawGUI(turn, menu)
  1472.                                 if piece == "O":
  1473.                                     windowSurface.blit(pieceChoiceImageBishop,pieceChoiceButton)
  1474.                                     pygame.display.update()
  1475.                                 if piece == "R":
  1476.                                     windowSurface.blit(pieceChoiceImageKnight,pieceChoiceButton)
  1477.                                     pygame.display.update()
  1478.                                 if piece == "V":
  1479.                                     windowSurface.blit(pieceChoiceImageRook,pieceChoiceButton)
  1480.                                     pygame.display.update()
  1481.                                 if piece == "L":
  1482.                                     windowSurface.blit(pieceChoiceImageQueen,pieceChoiceButton)
  1483.                                     pygame.display.update()
  1484.                     else:
  1485.                         square = getSquare(getMousePos())
  1486.                         if square:
  1487.                             if boardOwner[square[0]][square[1]] == turn and (placing == "M" or placing == "P"):
  1488.                                 if boardType[square[0]][square[1]] != "K":
  1489.                                     boardType[square[0]][square[1]] = piece
  1490.                                     if turn == "V":
  1491.                                         scoreWhite -= pieceVal*pawnValue
  1492.                                         purchasingStage = 1
  1493.                                         timeLastTemp = (time.time()-timeStart)-timePause
  1494.                                         timeStart = time.time()
  1495.                                         timePause = 0
  1496.                                         #menu = "game" ################################# Hiljem minna "questions" menüüsse
  1497.                                         answer = startQuestions()
  1498.                                         return
  1499.                                     else:
  1500.                                         scoreBlack -= pieceVal*pawnValue
  1501.                                         purchasingStage = 1
  1502.                                         timeLastTemp = (time.time()-timeStart)-timePause
  1503.                                         timeStart = time.time()
  1504.                                         timePause = 0
  1505.                                         answer = startQuestions()
  1506.                                         return
  1507.                             if placing == "M" or placing == "T":
  1508.                                 if square[1] == 0 and turn == "V":
  1509.                                     if boardType[square[0]][square[1]] == " ":
  1510.                                         boardType[square[0]][square[1]] = piece
  1511.                                         boardOwner[square[0]][square[1]] = turn
  1512.                                         scoreWhite -= pieceVal*pawnValue
  1513.                                         purchasingStage = 1
  1514.                                         timeLastTemp = (time.time()-timeStart)-timePause
  1515.                                         timeStart = time.time()
  1516.                                         timePause = 0
  1517.                                         answer = startQuestions()
  1518.                                         return
  1519.                                 elif square[1] == 7 and turn == "M":
  1520.                                     if boardType[square[0]][square[1]] == " ":
  1521.                                         boardType[square[0]][square[1]] = piece
  1522.                                         boardOwner[square[0]][square[1]] = turn
  1523.                                         scoreBlack -= pieceVal*pawnValue
  1524.                                         purchasingStage = 1
  1525.                                         timeLastTemp = (time.time()-timeStart)-timePause
  1526.                                         timeStart = time.time()
  1527.                                         timePause = 0
  1528.                                         answer = startQuestions()
  1529.                                         return
  1530.  
  1531.                            
  1532.                        
  1533.             elif event.type == KEYDOWN:
  1534.                 if event.key == K_ESCAPE:
  1535.                     if purchasingStage == 2:
  1536.                         purchasingStage = 1
  1537.                         drawGUI(turn, menu)
  1538.                         drawPieceChoices()
  1539.                         pygame.display.update()
  1540.                     else:
  1541.                         timeLastTemp = (time.time()-timeStart)-timePause
  1542.                         timeStart = time.time()
  1543.                         timePause = 0
  1544.                         #menu = "game"  #################### Muuta "questions"-iks
  1545.                         answer = startQuestions()
  1546.                         return
  1547.  
  1548. def blankTimer():
  1549.     windowSurface.blit(blankTimerImage,blankTimerButton)
  1550.  
  1551. def drawTimerRed(time):
  1552.     if purchasing:
  1553.         blankTimer()
  1554.         timerText = scoreFont.render(str(round((time),1)),True,TIMERRED)
  1555.         timerTextRect = pygame.Rect(0,0,2*S,S)
  1556.         timerTextRect.top = 6*S + 2*s
  1557.         timerTextRect.left = WINDOWHEIGHT+2*S+2*s
  1558.         windowSurface.blit(timerText, timerTextRect)
  1559.  
  1560. def drawTimer(time): ########## Joonista aeg
  1561.     if purchasing:
  1562.         blankTimer()
  1563.         timerText = scoreFont.render(str(round((time),1)),True,BLACK)
  1564.         timerTextRect = pygame.Rect(0,0,2*S,S)
  1565.         timerTextRect.top = 6*S + 2*s
  1566.         timerTextRect.left = WINDOWHEIGHT+2*S+2*s
  1567.         windowSurface.blit(timerText, timerTextRect)
  1568.  
  1569. def startQuestions():
  1570.     global menu, turn, question, timeLast, timeStartQuestions, timeStart
  1571.     if timeLast == 0:
  1572.         turn = "M"
  1573.         turnChangeWait()
  1574.         timeStart = time.time()
  1575.         timeLast = timeLastTemp
  1576.         menu = "game"
  1577.        
  1578.         drawBoard()
  1579.         drawGUI(turn, menu)
  1580.         return 0
  1581.     menu = "questions"
  1582.     answer, question = getQuestion()
  1583.     drawBoard()
  1584.     drawGUI(turn, menu)
  1585.     drawQuestion(question)
  1586.     timeStartQuestions = time.time()
  1587.     return answer
  1588.  
  1589. def getQuestion():
  1590.     n1 = random.randint(100,999)
  1591.     n2 = random.randint(100,999)
  1592.     sign = random.randint(0,1)
  1593.     if sign == 1:
  1594.         answer = n1+n2
  1595.         question = str(n1)+ " + "+str(n2) + " = "
  1596.     else:
  1597.         if n1>=n2:
  1598.             answer = n1-n2
  1599.             question = str(n1)+ " - "+str(n2) + " = "
  1600.         else:
  1601.             answer = n2-n1
  1602.             question = str(n2)+ " - "+str(n1) + " = "
  1603.     return answer, question
  1604.  
  1605. def drawQuestion(question):
  1606.     global questionsRect
  1607.     questionsText = questionsFont.render(question, True,BLACK)
  1608.     questionsRect = pygame.Rect(questionsText.get_rect())
  1609.     questionsRect.centery = 1.5*S
  1610.     questionsRect.left = WINDOWHEIGHT+2*s
  1611.     windowSurface.blit(questionsText,questionsRect)
  1612.  
  1613.  
  1614. #timeOver, scoreWhite, scoreBlack = questionsStage(timeLast,turn,scoreWhite,scoreBlack,answer)
  1615. def questionsStage(timeLast, turn, scoreWhite, scoreBlack, answer):
  1616.     global question
  1617.     timeOver = 0
  1618.     playerInput = ""
  1619.     while True:
  1620.         playerInputText = questionsFont.render(playerInput,True,BLACK)
  1621.         playerInputRect = playerInputText.get_rect()
  1622.         playerInputRect.centery = 1.5*S
  1623.         playerInputRect.left = questionsRect.right
  1624.         clearQuestionsText()
  1625.         drawQuestion(question)
  1626.         windowSurface.blit(playerInputText,playerInputRect)
  1627.         if timeLast-(time.time()-timeStartQuestions) <=0:
  1628.             drawTimerRed(timeLast-(time.time()-timeStartQuestions))
  1629.         else:
  1630.             drawTimer(timeLast-(time.time()-timeStartQuestions))
  1631.         pygame.display.update()
  1632.         for event in pygame.event.get():
  1633.             if event.type == QUIT:
  1634.                     pygame.quit()
  1635.                     sys.exit()
  1636.             elif event.type == KEYDOWN:
  1637.                 if event.key == K_BACKSPACE:
  1638.                     if len(playerInput) != 0:
  1639.                         playerInput = playerInput[:(len(playerInput)-1)]
  1640.                 else:
  1641.                     if chr(event.key) in NUMBERS:
  1642.                         if len(playerInput)<MAXALLOWEDINPUT:
  1643.                             playerInput+=chr(event.key)
  1644.                     elif event.key == K_RETURN:
  1645.                         if len(playerInput)!= 0 and int(playerInput) == answer:
  1646.                             if turn == "V":
  1647.                                 scoreWhite+=1
  1648.                             else:
  1649.                                 scoreBlack+=1
  1650.                         else:
  1651.                             if turn == "V":
  1652.                                 scoreWhite-=1
  1653.                             else:
  1654.                                 scoreBlack-=1
  1655.                         drawScore(scoreWhite,scoreBlack)
  1656.                         if time.time()- timeStartQuestions < timeLast:############Lisada pausi jaoks -timePause kui see võimalus sisse kodeerida
  1657.                             answer, question = getQuestion()
  1658.                             playerInput = ""
  1659.                             clearQuestionsText()
  1660.                             drawQuestion(question)
  1661.                         else:
  1662.                             timeOver = (time.time()-timeStartQuestions)-timeLast
  1663.                             return timeOver,scoreWhite,scoreBlack
  1664.                
  1665. def drawTurnChangeText(timeWaitStart):
  1666.     clearInstructionsText()
  1667.     if turn == "V":
  1668.         turnName = "Valge"
  1669.     else:
  1670.         turnName = "Musta"
  1671.     turnChangeText = instructionsFont.render((turnName+" käik algab: "+str(int(TURNCHANGETIME-(time.time()-timeWaitStart-0.0000001)))),True,BLACK)
  1672.     turnChangeTextRect = turnChangeText.get_rect()
  1673.     turnChangeTextRect.centery = 2*S+5*s
  1674.     turnChangeTextRect.left = WINDOWHEIGHT+2*s
  1675.     windowSurface.blit(turnChangeText,turnChangeTextRect)
  1676.  
  1677. def turnChangePauseMenu():
  1678.     drawPauseMenu()
  1679.     pygame.display.update()
  1680.     while True:
  1681.         for event in pygame.event.get():
  1682.             if event.type == QUIT:
  1683.                 pygame.quit()
  1684.                 sys.exit()
  1685.             if event.type == MOUSEBUTTONDOWN:
  1686.                 if event.button == 1:
  1687.                     if unpauseButton.collidepoint(getMousePos()):
  1688.                         timeWaitStart = time.time()
  1689.                         drawBoard()
  1690.                         drawGUI(turn, menu)
  1691.                         return timeWaitStart
  1692.  
  1693.  
  1694. def turnChangeWait():
  1695.     timeWaitStart = time.time()
  1696.     while True:
  1697.         if time.time()-timeWaitStart>TURNCHANGETIME:
  1698.             return
  1699.         drawTurnChangeText(timeWaitStart)
  1700.         pygame.display.update()
  1701.         for event in pygame.event.get():
  1702.             if event.type == QUIT:
  1703.                 pygame.quit()
  1704.                 sys.exit()
  1705.             if event.type == MOUSEBUTTONDOWN:
  1706.                 if pauseButton.collidepoint(getMousePos()):
  1707.                     drawPauseMenu()
  1708.                     timeWaitStart = turnChangePauseMenu()
  1709.                        
  1710.            
  1711. def drawGameEndScreen(turn): ############################################ Mängulõpuekraan, selle käik - kes võidab!!!
  1712.     windowSurface.fill(BLACK)
  1713.     windowSurface.blit(endGameContinueImage,endGameContinueButton)
  1714.     if turn == "V":
  1715.         windowSurface.blit(whiteWinImage, winnerRect)
  1716.     else:
  1717.         windowSurface.blit(blackWinImage, winnerRect)
  1718.  
  1719.  
  1720.  
  1721. printMode, purchasing, queens, placing, check, pawnValue = readSettings()
  1722. #printMode = "K" #Keskmine suurus
  1723. #purchasing = True #Nuppude ostmine on sees
  1724. #queens = True #Lippe saab osta
  1725. #placing = "M"
  1726. #check = True
  1727. #questionsBanned = [0]
  1728. #pawnValue = 1
  1729. options = {"printMode":printMode,"purchasing":purchasing,"queens":queens,"placing":placing,"check":check,"pawnValue":pawnValue}
  1730.  
  1731. if printMode == "K":
  1732.     WINDOWWIDTH = 1200
  1733.     WINDOWHEIGHT = 800
  1734. elif printMode == "S":
  1735.     WINDOWWIDTH = 1440
  1736.     WINDOWHEIGHT = 960
  1737. else:
  1738.     WINDOWWIDTH = 960
  1739.     WINDOWHEIGHT = 640
  1740. windowSurface = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT), 0, 32)
  1741. pygame.display.set_caption('Smartchess 1.0')
  1742. BLACK = (0, 0, 0)
  1743. WHITE = (255, 255, 255)
  1744. RED = (255, 0, 0)
  1745. GREEN = (0, 128, 0)
  1746. BLUE = (0, 0, 255)
  1747. TIMERRED = (210,67,67)
  1748. TURNCHANGETIME = 4
  1749.  
  1750.  
  1751. NUMBERS = "0123456789"
  1752.  
  1753. MAXALLOWEDINPUT = 4
  1754.  
  1755. #LEFTOVERSPACE = WINDOWWIDTH-WINDOWHEIGHT
  1756. #basicFont = pygame.font.SysFont(None, 48)
  1757. #settingsFont = pygame.font.SysFont(None,32)
  1758.  
  1759. #S = WINDOWHEIGHT//8
  1760. #s = S//10
  1761.  
  1762.  
  1763. #startPos = 0
  1764. #turn = "V"
  1765. #check = True
  1766. running = True
  1767. #y = True
  1768. #kingSideCastle = []
  1769. #queenSideCastle = []
  1770. #whiteKingPos = (4,0)
  1771. #blackKingPos = (4,7)
  1772.  
  1773.  
  1774. menu = "main" ##main/options/game/pause/purchasing/questions/gameend
  1775.  
  1776.  
  1777. reloadSettings()
  1778. resetBoard()
  1779.  
  1780. while running:
  1781.     pygame.display.update()
  1782.     if menu == "main":
  1783.         drawMainMenu()
  1784.         for event in pygame.event.get():
  1785.             if event.type == QUIT:
  1786.                 running = terminate()
  1787.             elif event.type == MOUSEBUTTONDOWN:
  1788.                 if event.button == 1:
  1789.                     if startGameButton.collidepoint(getMousePos()):
  1790.                         menu = "game"
  1791.                         timeStart = time.time()
  1792.                         drawBoard()
  1793.                         drawGUI(turn, menu)
  1794.                        
  1795.                     elif optionsButton.collidepoint(getMousePos()):
  1796.                         optionsTemp = dict(options) #Teeb listist koopia
  1797.                         menu = "options"
  1798.  
  1799.     elif menu == "gameend":############################# Mängulõpu ekraan
  1800.         drawGameEndScreen(turn)
  1801.         for event in pygame.event.get():
  1802.             if event.type == QUIT:
  1803.                 running = terminate()
  1804.             if event.type == MOUSEBUTTONDOWN:
  1805.                 if endGameContinueButton.collidepoint(getMousePos()):
  1806.                     menu = "main"
  1807.                     resetBoard()
  1808.             if event.type == KEYDOWN:
  1809.                 if event.key == K_ESCAPE:
  1810.                     menu = "main"
  1811.                     resetBoard()
  1812.     elif menu == "options":
  1813.         drawOptionsMenu(optionsTemp)
  1814.         for event in pygame.event.get():
  1815.             if event.type == QUIT:
  1816.                 running = terminate()
  1817.             if event.type == MOUSEBUTTONDOWN:
  1818.                 if event.button == 1:
  1819.                     if goBackButton.collidepoint(getMousePos()):
  1820.                         menu = "main"
  1821.                     elif saveButton.collidepoint(getMousePos()):
  1822.                         options = optionsSave(optionsTemp)
  1823.                         purchasing = options["purchasing"]
  1824.                         queens = options["queens"]
  1825.                         placing = options["placing"]
  1826.                         check = options["check"]
  1827.                         pawnValue = options["pawnValue"]
  1828.                         saveSettingsDocument()
  1829.                         if printMode != options["printMode"]:
  1830.                             printMode = options["printMode"]
  1831.                             reloadSettings()
  1832.                        
  1833.                     else:
  1834.                         optionsTemp = changeOptions(getMousePos(),optionsTemp)
  1835.     elif menu == "pause":
  1836.         drawPauseMenu()
  1837.         for event in pygame.event.get():
  1838.             if event.type == MOUSEBUTTONDOWN:
  1839.                 if event.button == 1:
  1840.                     if unpauseButton.collidepoint(getMousePos()):
  1841.                         menu = "game"
  1842.                         timePause += (time.time()-timePauseStart)
  1843.                         drawBoard()
  1844.                         drawGUI(turn, menu)
  1845.     elif menu == "game":
  1846.         #print(time.time()-timeStart-timePause)
  1847.         for event in pygame.event.get():
  1848.             if event.type == pygame.QUIT:
  1849.                 running = terminate()
  1850.             if event.type == MOUSEBUTTONDOWN:
  1851.                 if event.button == 1:
  1852.                     turn, startPos, y, running = getMove(turn, startPos, y, running)
  1853.                     drawGUI(turn, menu)
  1854.                     if pauseButton.collidepoint(getMousePos()):
  1855.                         timePauseStart = time.time()
  1856.                         menu = "pause"
  1857.                         y = True
  1858.                     elif surrenderButton.collidepoint(getMousePos()):
  1859.                         if surrenderQuery(turn): #Küsib, kas ollakse kindel
  1860.                             menu = "gameend"
  1861.                             turn = turnChange(turn)
  1862.                             drawGameEndScreen(turn)
  1863.                         else:
  1864.                             drawBoard()
  1865.                             drawGUI(turn, menu)
  1866.                             if y == False:
  1867.                                 y = True
  1868.                                 drawSquare((startPos[0],startPos[1]),0)
  1869.                            
  1870.                 if event.button == 3:
  1871.                     if y == False:
  1872.                         y = True
  1873.                         drawSquare((startPos[0],startPos[1]),0)
  1874.                         drawGUI(turn, menu)
  1875.             if event.type == KEYDOWN:
  1876.                 if event.key == K_ESCAPE:
  1877.                     if y == False:
  1878.                         y = True
  1879.                         drawSquare((startPos[0],startPos[1]),0)
  1880.                         drawGUI(turn, menu)
  1881.     elif menu == "purchasing":
  1882.         getPurchasingOrder()
  1883.     elif menu == "questions":
  1884.         timeOver, scoreWhite, scoreBlack = questionsStage(timeLast,turn,scoreWhite,scoreBlack,answer)
  1885.         timeLast = timeLastTemp + timeOver
  1886.         turn = turnChange(turn)
  1887.         turnChangeWait()
  1888.         timeStart = time.time()
  1889.         timePause = 0
  1890.         timeOver = 0
  1891.         menu = "game"
  1892.         drawBoard()
  1893.         drawGUI(turn,menu)
  1894.     if purchasing and (menu == "game" or menu == "purchasing"):
  1895.         drawTimer(time.time()-timeStart-timePause) ############## Eraldi funktsioon aja joonistamiseks
  1896.        
  1897.  
  1898.  
  1899.  
  1900. pygame.quit()
  1901. #sys.exit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement