Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame, sys, time
- from pygame.locals import *
- import random
- pygame.init()
- def getNewBoardType():
- boardType = [[" "] * 8 for i in range(8)]
- for x in range(8):
- boardType[x][1] = "E"
- boardType[x][6] = "E"
- typeOrder = ["V", "R", "O", "L", "K", "O", "R", "V"]
- for x in range(8):
- boardType[x][0] = typeOrder[x]
- boardType[x][7] = typeOrder[x]
- return boardType
- def getNewBoardOwner():
- boardOwner = [[" "] * 8 for i in range(8)]
- for x in range(8):
- boardOwner[x][1] = "V"
- boardOwner[x][0] = "V"
- boardOwner[x][6] = "M"
- boardOwner[x][7] = "M"
- return boardOwner
- boardType = getNewBoardType()
- boardOwner = getNewBoardOwner()
- def checkCheck(X,boardType,boardOwner):
- Y = X[0] + 1
- while Y < 8:
- if boardOwner[Y][X[1]] == turn:
- break
- elif boardOwner[Y][X[1]] != " ":
- if boardType[Y][X[1]] == "V" or boardType[Y][X[1]] == "L": #paremal
- return True
- else:
- break
- Y += 1
- Y = X[0] - 1
- while Y > -1:
- if boardOwner[Y][X[1]] == turn:
- break
- elif boardOwner[Y][X[1]] != " ":
- if boardType[Y][X[1]] == "V" or boardType[Y][X[1]] == "L": #vasakul
- return True
- else:
- break
- Y -= 1
- Y = X[1] + 1
- while Y < 8:
- if boardOwner[X[0]][Y] == turn:
- break
- elif boardOwner[X[0]][Y] != " ":
- if boardType[X[0]][Y] == "V" or boardType[X[0]][Y] == "L": #üles
- return True
- else:
- break
- Y += 1
- Y = X[1] - 1
- while Y > -1:
- if boardOwner[X[0]][Y] == turn:
- break
- elif boardOwner[X[0]][Y] != " ":
- if boardType[X[0]][Y] == "V" or boardType[X[0]][Y] == "L": # alla
- return True
- else:
- break
- Y -= 1
- Y = X[0] + 1
- Z = X[1] + 1
- while Y < 8 and Z < 8:
- if boardOwner[Y][Z] == turn:
- break
- elif boardOwner[Y][Z] != " ":
- if boardType[Y][Z] == "O" or boardType[Y][Z] == "L": #Asimuut 45
- return True
- else:
- break
- Y += 1
- Z += 1
- Y = X[0] - 1
- Z = X[1] - 1
- while Y > -1 and Z > -1:
- if boardOwner[Y][Z] == turn:
- break
- elif boardOwner[Y][Z] != " ":
- if boardType[Y][Z] == "O" or boardType[Y][Z] == "L": #asimuut 225
- return True
- else:
- break
- Y -= 1
- Z -= 1
- Y = X[0] + 1
- Z = X[1] - 1
- while Y < 8 and Z > -1:
- if boardOwner[Y][Z] == turn:
- break
- elif boardOwner[Y][Z] != " ":
- if boardType[Y][Z] == "O" or boardType[Y][Z] == "L": #asimuut 135
- return True
- else:
- break
- Y += 1
- Z -= 1
- Y = X[0] - 1
- Z = X[1] + 1
- while Z < 8 and Y > -1:
- if boardOwner[Y][Z] == turn:
- break
- elif boardOwner[Y][Z] != " ":
- if boardType[Y][Z] == "O" or boardType[Y][Z] == "L": #asimuut 315
- return True
- else:
- break
- Y -= 1
- Z += 1
- #Ratsud
- if X[0]+2 < 8: #Paremal
- if X[1]+1 < 8:
- if boardType[X[0]+2][X[1]+1] == "R":
- if boardOwner[X[0]+2][X[1]+1] != turn:
- return True
- if X[1]-1 > -1:
- if boardType[X[0]+2][X[1]-1] == "R":
- if boardOwner[X[0]+2][X[1]-1] != turn:
- return True
- if X[0]-2 > -1: #Vasakul
- if X[1]+1 < 8:
- if boardType[X[0]-2][X[1]+1] == "R":
- if boardOwner[X[0]-2][X[1]+1] != turn:
- return True
- if X[1]-1 > -1:
- if boardType[X[0]-2][X[1]-1] == "R":
- if boardOwner[X[0]-2][X[1]-1] != turn:
- return True
- if X[1]+2 < 8: #Üleval
- if X[0]+1 < 8:
- if boardType[X[0]+1][X[1]+2] == "R":
- if boardOwner[X[0]+1][X[1]+2] != turn:
- return True
- if X[0]-1 > -1:
- if boardType[X[0]-1][X[1]+2] == "R":
- if boardOwner[X[0]-1][X[1]+2] != turn:
- return True
- if X[1]-2 > -1: #All
- if X[0]+1 < 8:
- if boardType[X[0]+1][X[1]-2] == "R":
- if boardOwner[X[0]+1][X[1]-2] != turn:
- return True
- if X[0]-1 > -1:
- if boardType[X[0]-1][X[1]-2] == "R":
- if boardOwner[X[0]-1][X[1]-2] != turn:
- return True
- if turn == "V":
- if X[1]+1 < 8:
- if X[0]+1 < 8:
- if boardType[X[0]+1][X[1]+1] == "E" and boardOwner[X[0]+1][X[1]+1] != turn:
- return True
- if X[0]-1 > -1:
- if boardType[X[0]-1][X[1]+1] == "E" and boardOwner[X[0]-1][X[1]+1] != turn:
- return True
- else:
- if X[1]-1 > -1:
- if X[0]+1 < 8:
- if boardType[X[0]+1][X[1]-1] == "E" and boardOwner[X[0]+1][X[1]-1] != turn:
- return True
- if X[0]-1 > -1:
- if boardType[X[0]-1][X[1]-1] == "E" and boardOwner[X[0]-1][X[1]-1] != turn:
- return True
- if X[0]-1 > -1 and (boardOwner[X[0]-1][X[1]] != turn) and (boardType[X[0]-1][X[1]] == "K"):
- return True
- if X[0]+1 < 8 and (boardOwner[X[0]+1][X[1]] != turn) and (boardType[X[0]+1][X[1]] == "K"):
- return True
- if X[1]+1 < 8:
- for i in range(3):
- if X[0]-1+i < 8 and X[0]-1+i > - 1:
- if boardOwner[X[0]-1+i][X[1]+1] != turn and boardType[X[0]-1+i][X[1]+1] == "K":
- return True
- if X[1]-1 > -1:
- for i in range(3):
- if X[0]-1+i < 8 and X[0]-1+i > - 1:
- if boardOwner[X[0]-1+i][X[1]-1] != turn and boardType[X[0]-1+i][X[1]-1] == "K":
- return True
- def checkValidity(turn, startPos, endPos):
- validMoves = []
- startx = startPos[0]
- starty = startPos[1]
- endx = endPos[0]
- endy = endPos[1]
- if boardType[startx][starty] == "E": #Lisab validMoves listi kõik võimalikud käigud etturi poolt.
- if turn == "V":
- if boardType[startx][starty+1] == " ":
- validMoves.append((startx,starty+1))
- if startx+1 < 8 and boardOwner[startx+1][starty+1] == "M":
- validMoves.append((startx+1,startPos[1]+1))
- if startx-1 > -1 and boardOwner[startx-1][starty+1] == "M":
- validMoves.append((startx-1,starty+1))
- if starty == 1 and boardType[startx][starty+2] == " ":
- validMoves.append((startx,3))
- if turn == "M":
- if boardType[startx][starty-1] == " ":
- validMoves.append((startx,starty-1))
- if startx+1 < 8 and boardOwner[startx+1][starty-1] == "V":
- validMoves.append((startx+1,starty-1))
- if startx-1 > -1 and boardOwner[startx-1][starty-1] == "V":
- validMoves.append((startx-1,starty-1))
- if starty == 6 and boardType[startx][starty-2] == " ":
- validMoves.append((startx,4))
- if boardType[startx][starty] == "K":
- if startx-1 > -1 and (boardOwner[startx-1][starty] != turn):
- validMoves.append((startx-1,starty))
- if startx+1 < 8 and (boardOwner[startx+1][starty] != turn):
- validMoves.append((startx+1,starty))
- if starty+1 < 8:
- for i in range(3):
- if startx-1+i < 8 and startx-1+i > - 1:
- if boardOwner[startx-1+i][starty+1] != turn:
- validMoves.append((startx-1+i,starty+1))
- if starty-1 > -1:
- for i in range(3):
- if startx-1+i < 8 and startx-1+i > - 1:
- if boardOwner[startx-1+i][starty-1] != turn:
- validMoves.append((startx-1+i,starty-1))
- if boardType[startx][starty] == "R":
- if starty+2 < 8:
- if startx-1 > -1:
- if boardOwner[startx-1][starty+2] != turn:
- validMoves.append((startx-1,starty+2))
- if startx+1 < 8:
- if boardOwner[startx+1][starty+2] != turn:
- validMoves.append((startx+1,starty+2))
- if starty-2 > -1:
- if startx-1 > -1:
- if boardOwner[startx-1][starty-2] != turn:
- validMoves.append((startx-1,starty-2))
- if startx+1 < 8:
- if boardOwner[startx+1][starty-2] != turn:
- validMoves.append((startx+1,starty-2))
- if startx+2 < 8:
- if starty-1 > -1:
- if boardOwner[startx+2][starty-1] != turn:
- validMoves.append((startx+2,starty-1))
- if starty+1 < 8:
- if boardOwner[startx+2][starty+1] != turn:
- validMoves.append((startx+2,starty+1))
- if startx-2 > -1 :
- if starty-1 > -1:
- if boardOwner[startx-2][starty-1] != turn:
- validMoves.append((startx-2,starty-1))
- if starty+1 < 8:
- if boardOwner[startx-2][starty+1] != turn:
- validMoves.append((startx-2,starty+1))
- if boardType[startx][starty] == "V" or boardType[startx][starty] == "L":
- for moveLength in range(1,8):
- if starty+moveLength < 8: #1. Üles
- nextTileNumber = (startx, (starty+moveLength))
- nextTileOwner = boardOwner[startx][starty+moveLength]
- if nextTileOwner != turn:
- if nextTileOwner == " ":
- validMoves.append(nextTileNumber)
- else:
- validMoves.append(nextTileNumber)
- break
- else:
- break
- for moveLength in range(1,8):
- if startx+moveLength < 8: #2. Paremale
- nextTileNumber = (startx+moveLength, starty)
- nextTileOwner = boardOwner[startx+moveLength][starty]
- if nextTileOwner != turn:
- if nextTileOwner == " ":
- validMoves.append(nextTileNumber)
- else:
- validMoves.append(nextTileNumber)
- break
- else:
- break
- for moveLength in range(1,8):
- if starty-moveLength > (-1): #3. Alla
- nextTileNumber = (startx, starty-moveLength)
- nextTileOwner = boardOwner[startx][starty-moveLength]
- if nextTileOwner != turn:
- if nextTileOwner == " ":
- validMoves.append(nextTileNumber)
- else:
- validMoves.append(nextTileNumber)
- break
- else:
- break
- for moveLength in range(1,8):
- if startx-moveLength > (-1): #4. Vasakule
- nextTileNumber = (startx-moveLength, starty)
- nextTileOwner = boardOwner[startx-moveLength][starty]
- if nextTileOwner != turn:
- if nextTileOwner == " ":
- validMoves.append(nextTileNumber)
- else:
- validMoves.append(nextTileNumber)
- break
- else:
- break
- if boardType[startx][starty] == "O" or boardType[startx][starty] == "L":
- for moveLength in range(1,8): #1. asimuut 45
- if startx+moveLength < 8 and starty+moveLength < 8:
- nextTileNumber = (startx+moveLength, starty+moveLength)
- nextTileOwner = boardOwner[startx+moveLength][starty+moveLength]
- if nextTileOwner != turn:
- if nextTileOwner == " ":
- validMoves.append(nextTileNumber)
- else:
- validMoves.append(nextTileNumber)
- break
- else:
- break
- for moveLength in range(1,8): #2. asimuut 135
- if startx+moveLength < 8 and starty-moveLength > (-1):
- nextTileNumber = (startx+moveLength, starty-moveLength)
- nextTileOwner = boardOwner[startx+moveLength][starty-moveLength]
- if nextTileOwner != turn:
- if nextTileOwner == " ":
- validMoves.append(nextTileNumber)
- else:
- validMoves.append(nextTileNumber)
- break
- else:
- break
- for moveLength in range(1,8): #1. asimuut 225
- if startx-moveLength > (-1) and starty-moveLength > (-1):
- nextTileNumber = (startx-moveLength, starty-moveLength)
- nextTileOwner = boardOwner[startx-moveLength][starty-moveLength]
- if nextTileOwner != turn:
- if nextTileOwner == " ":
- validMoves.append(nextTileNumber)
- else:
- validMoves.append(nextTileNumber)
- break
- else:
- break
- for moveLength in range(1,8): #1. asimuut 315
- if startx+moveLength > (-1) and starty+moveLength < 8:
- nextTileNumber = (startx-moveLength, starty+moveLength)
- nextTileOwner = boardOwner[startx-moveLength][starty+moveLength]
- if nextTileOwner != turn:
- if nextTileOwner == " ":
- validMoves.append(nextTileNumber)
- else:
- validMoves.append(nextTileNumber)
- break
- else:
- break
- if check == True:
- boardTypeTemp = [[" "] * 8 for i in range(8)]
- boardOwnerTemp = [[" "] * 8 for i in range(8)]
- for i in range(8):
- for y in range(8):
- boardTypeTemp[i][y]=(boardType[i][y])
- boardOwnerTemp[i][y]=(boardOwner[i][y])
- boardTypeTemp[endPos[0]][endPos[1]] = boardType[startPos[0]][startPos[1]]
- boardOwnerTemp[endPos[0]][endPos[1]] = turn
- boardTypeTemp[startPos[0]][startPos[1]] = " "
- boardOwnerTemp[startPos[0]][startPos[1]] = " "
- if boardType[startx][starty] == "K":
- if checkCheck((endPos[0],endPos[1]),boardTypeTemp,boardOwnerTemp):
- #print("Tuli! Te ei saa sinna käia.")
- return False
- elif turn == "V":
- if checkCheck(whiteKingPos,boardTypeTemp,boardOwnerTemp):
- #print("Tuli! Te ei saa sinna käia.")
- return False
- else:
- if checkCheck(blackKingPos,boardTypeTemp,boardOwnerTemp):
- #print("Tuli! Te ei saa sinna käia.")
- return False
- if boardType[startx][starty] == "K": ################ Vangerdus
- if turn == "V":
- if (endx, endy) == (6, 0) and "V" not in kingSideCastle:
- if boardType[5][0] == " " and not checkCheck((5,0),boardType,boardOwner) and boardType[6][0] == " " and not checkCheck((6,0),boardType,boardOwner):
- return "whiteKingSide"
- elif (endx, endy) == (2, 0) and "V" not in queenSideCastle:
- 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] == " ":
- return "whiteQueenSide"
- else:
- if (endx, endy) == (6, 7) and "M" not in kingSideCastle:
- if boardType[5][7] == " " and not checkCheck((5,7),boardType,boardOwner) and boardType[6][7] == " " and not checkCheck((6,7),boardType,boardOwner):
- return "blackKingSide"
- elif (endx, endy) == (2, 7) and "M" not in queenSideCastle:
- 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] == " ":
- return "blackQueenSide"
- if (endx, endy) in validMoves:
- return True
- else:
- #print("Te ei saa sinna käia.")
- return False
- def drawPieceChoices():
- windowSurface.blit(pieceChoiceImage,pieceChoiceButton)
- def pieceChoiceChoice(mousePos):
- if rookButton.collidepoint(mousePos):
- return "V"
- elif queenButton.collidepoint(mousePos):
- return "L"
- elif bishopButton.collidepoint(mousePos):
- return "O"
- elif knightButton.collidepoint(mousePos):
- return "R"
- else:
- return False
- def blankPieceChoice():
- windowSurface.blit(pieceChoiceBlankImage,pieceChoiceButton)
- def clearInstructionsText():
- windowSurface.blit(pieceChoiceBlankImage,instructionsButton)
- def clearQuestionsText():
- windowSurface.blit(pieceChoiceBlankImage,questionsButton)
- def drawUpgradingText():
- clearInstructionsText()
- upgradingText = instructionsFont.render("Valige etturi asemele uus nupp",True,BLACK)
- upgradingTextRect = upgradingText.get_rect()
- upgradingTextRect.centery = 2*S+5*s
- upgradingTextRect.left = WINDOWHEIGHT+2*s
- windowSurface.blit(upgradingText,upgradingTextRect)
- def pieceChoice(turn):
- global running
- drawPieceChoices()
- drawTimer(time.time()-timeStart-timePause)
- pygame.display.update()
- for event in pygame.event.get():
- if event.type == QUIT:
- running = terminate()
- pygame.quit()
- sys.exit()
- elif event.type == MOUSEBUTTONDOWN:
- if event.button == 1:
- piece = pieceChoiceChoice(pygame.mouse.get_pos())
- if piece:
- blankPieceChoice()
- return piece
- def pawnUpgrade(endpos):
- piece = 0
- while True:
- if piece!="V" and piece!="O" and piece!="R" and piece!="L":
- drawUpgradingText()
- piece = pieceChoice(turn)
- else:
- break
- boardType[endpos[0]][endpos[1]] = piece
- drawSquare((endpos[0],endpos[1]),0)
- def changeBoard(turn, startPos, endPos):
- global whiteKingPos,blackKingPos,kingSideCastle,queenSideCastle
- if boardType[endPos[0]][endPos[1]] == "K":
- #if turn == "V":
- #print("Valge võit.")
- #else:
- #print("Musta võit.")
- return False
- boardType[endPos[0]][endPos[1]] = boardType[startPos[0]][startPos[1]]
- boardOwner[endPos[0]][endPos[1]] = turn
- boardType[startPos[0]][startPos[1]] = " "
- boardOwner[startPos[0]][startPos[1]] = " "
- drawSquare(startPos,0)
- drawSquare(endPos,0)
- ################################### Vankri liikumine
- if boardType[endPos[0]][endPos[1]] == "V":
- if startPos == (0,0):
- queenSideCastle.append("V")
- elif startPos == (0,7):
- queenSideCastle.append("M")
- elif startPos == (7,0):
- kingSideCastle.append("V")
- elif startPos == (7,7):
- kingSideCastle.append("M")
- if turn == "V": #Etturite ülendamine mängulaua lõppu jõudes
- if boardType[endPos[0]][endPos[1]] == "E" and endPos[1] == 7:
- pawnUpgrade(endPos)
- else:
- if boardType[endPos[0]][endPos[1]] == "E" and endPos[1] == 0:
- pawnUpgrade(endPos)
- if boardType[endPos[0]][endPos[1]] == "K": #Kuninga liikumine
- if turn == "V":
- kingSideCastle.append("V")
- queenSideCastle.append("V")
- whiteKingPos = (endPos[0],endPos[1])
- else:
- kingSideCastle.append("M")
- queenSideCastle.append("M")
- blackKingPos = (endPos[0],endPos[1])
- return True
- def castle(x): ########## Vangerdamise laua muutmine
- global boardOwner,boardType,blackKingPos,whiteKingPos
- if x == "whiteKingSide":
- boardType[5][0] = "V"
- boardOwner[5][0] = "V"
- boardType[7][0] = " "
- boardOwner[7][0] = " "
- boardType[6][0] = "K"
- boardOwner[6][0] = "V"
- boardType[4][0] = " "
- boardOwner[4][0] = " "
- kingSideCastle.append("V")
- queenSideCastle.append("V")
- whiteKingPos = (6,0)
- elif x == "blackKingSide":
- boardType[5][7] = "V"
- boardOwner[5][7] = "M"
- boardType[7][7] = " "
- boardOwner[7][7] = " "
- boardType[6][7] = "K"
- boardOwner[6][7] = "M"
- boardType[4][7] = " "
- boardOwner[4][7] = " "
- kingSideCastle.append("M")
- queenSideCastle.append("M")
- blackKingPos = (6,7)
- elif x == "whiteQueenSide":
- boardType[3][0] = "V"
- boardOwner[3][0] = "V"
- boardType[0][0] = " "
- boardOwner[0][0] = " "
- boardType[2][0] = "K"
- boardOwner[2][0] = "V"
- boardType[4][0] = " "
- boardOwner[4][0] = " "
- kingSideCastle.append("V")
- queenSideCastle.append("V")
- whiteKingPos = (2,0)
- elif x == "blackQueenSide":
- boardType[3][7] = "V"
- boardOwner[3][7] = "M"
- boardType[0][7] = " "
- boardOwner[0][7] = " "
- boardType[2][7] = "K"
- boardOwner[2][7] = "M"
- boardType[4][7] = " "
- boardOwner[4][7] = " "
- kingSideCastle.append("M")
- queenSideCastle.append("M")
- blackKingPos = (2,7)
- return boardType,boardOwner,blackKingPos,whiteKingPos
- def drawSquare(pos,H):
- centerX = pos[0]*S + S//2
- centerY = (7-pos[1])*S + S//2
- if pos[1] % 2 == 0:
- color2 = (255,204,153)
- else:
- color2 = (102,51,0)
- if pos[0] % 2 == 0:
- if color2 == (255,204,153):
- color2 = (102,51,0)
- else:
- color2 = (255,204,153)
- if H == 1:
- color2 = (153,255,51)
- pygame.draw.rect(windowSurface,color2,(pos[0]*S,(7-pos[1])*S,S,S))
- if boardOwner[pos[0]][pos[1]] == "V":
- color = WHITE
- color3=BLACK
- elif boardOwner[pos[0]][pos[1]] == "M":
- color = BLACK
- color3=WHITE
- if boardType[pos[0]][pos[1]] == "E":
- 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)))
- 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)
- pygame.draw.circle(windowSurface,color,(centerX,centerY-1),s*2)
- pygame.draw.circle(windowSurface,color3,(centerX,centerY-1),s*2,s//2)
- pygame.draw.lines(windowSurface,color3,False,[(centerX-2*s,centerY+3*s),(centerX+2*s,centerY+3*s)],s//2)
- elif boardType[pos[0]][pos[1]] == "V":
- 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)))
- 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)
- pygame.draw.lines(windowSurface,color3,False,[(centerX-3*s,centerY+2*s),(centerX+3*s,centerY+2*s)],s//2)
- pygame.draw.lines(windowSurface,color3,False,[(centerX-2*s,centerY-3*s),(centerX+2*s,centerY-3*s)],s//2)
- pygame.draw.lines(windowSurface,color3,False,[(centerX-s,centerY-2*s),(centerX+s,centerY-2*s)],s//2)
- pygame.draw.lines(windowSurface,color3,False,[(centerX-s,centerY+s),(centerX+s,centerY+s)],s//2)
- elif boardType[pos[0]][pos[1]] == "R":
- 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)))
- 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)
- pygame.draw.lines(windowSurface,color3,False,[(centerX-3*s,centerY+3*s),(centerX+2*s,centerY+3*s)],s//2)
- pygame.draw.lines(windowSurface,color3,False,[(centerX-2*s,centerY+2*s),(centerX+s,centerY+2*s)],s//2)
- elif boardType[pos[0]][pos[1]] == "O":
- 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)))
- 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)
- pygame.draw.lines(windowSurface,color3,False,[(centerX-2*s,centerY+3*s),(centerX+2*s,centerY+3*s)],s//2)
- pygame.draw.lines(windowSurface,color3,False,[(centerX-s,centerY+2*s),(centerX+s,centerY+2*s)],s//2)
- pygame.draw.lines(windowSurface,color3,False,[(centerX,centerY-3*s),(centerX,centerY-s)],s//2)
- pygame.draw.lines(windowSurface,color3,False,[(centerX-s,centerY-2*s),(centerX+s,centerY-2*s)],s//2)
- elif boardType[pos[0]][pos[1]] == "K":
- 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)))
- 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)
- 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)
- 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)
- pygame.draw.circle(windowSurface,color,(centerX-3*s,centerY+s),s)
- pygame.draw.circle(windowSurface,color3,(centerX-3*s,centerY+s),s,s//2)
- pygame.draw.circle(windowSurface,color,(centerX+3*s,centerY+s),s)
- pygame.draw.circle(windowSurface,color3,(centerX+3*s,centerY+s),s,s//2)
- elif boardType[pos[0]][pos[1]] == "L":
- 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)))
- 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)
- def drawBoard():
- windowSurface.fill(BLACK)
- for x in range(8):
- for y in range(8):
- drawSquare((x,y),0)
- def mouseConvert(x):
- return (x[0]//S,7-x[1]//S)
- def turnChange(turn):
- if turn == "M":
- turn = "V"
- else:
- turn = "M"
- return turn
- def getMove(turn, startPos, y, running):
- global boardOwner,boardType
- global menu, purchasingStage
- if y == True:
- startPos = mouseConvert(pygame.mouse.get_pos())
- if startPos[0]>7:
- return turn, startPos, y, running
- if boardOwner[startPos[0]][startPos[1]] == turn:
- drawSquare((startPos[0],startPos[1]),1)
- pygame.display.update()
- y = False
- return turn, startPos, y, running
- else:
- endPos = mouseConvert(pygame.mouse.get_pos())
- if endPos[0]>7:
- return turn, startPos, y, running
- temp = checkValidity(turn, startPos, endPos)
- if temp != True and temp != False:
- boardType,boardOwner,blackKingPos,whiteKingPos = castle(temp)
- if turn == "V":
- for i in range(8):
- drawSquare((i,0),0)
- else:
- for i in range(8):
- drawSquare((i,7),0)
- if purchasing:
- menu = "purchasing"
- purchasingStage = 1
- drawGUI(turn, menu)
- else:
- turn = turnChange(turn)
- y = True
- return turn, startPos, y, running
- elif temp == True:
- if not changeBoard(turn,startPos,endPos): ###### Lisada midagi mängu lõpu kohta
- menu = "gameend"
- drawGameEndScreen(turn)
- return turn, startPos, y, running
- if purchasing:
- menu = "purchasing"
- purchasingStage = 1
- drawGUI(turn, menu)
- else:
- turn = turnChange(turn)
- y = True
- return turn, startPos, y, running
- return turn, startPos, y, running
- return turn, startPos, y, running
- def getMousePos():
- pos = pygame.mouse.get_pos()
- return pos
- def terminate():
- #pygame.quit()
- #sys.exit()
- return False
- def drawPauseMenu():
- windowSurface.fill(BLACK)
- windowSurface.blit(unpauseImage, unpauseButton)
- def drawScore(scoreWhite, scoreBlack):
- windowSurface.blit(scoreDisplayImage,scoreDisplayButton)
- scoreWhiteText = scoreFont.render("V:" + str(scoreWhite),True,BLACK)
- scoreBlackText = scoreFont.render("M:" + str(scoreBlack),True,BLACK)
- scoreWhiteTextRect = scoreWhiteText.get_rect()
- scoreBlackTextRect = scoreBlackText.get_rect()
- scoreWhiteTextRect.centery = 7*S+5*s
- scoreWhiteTextRect.left = WINDOWHEIGHT+2*s
- windowSurface.blit(scoreWhiteText,scoreWhiteTextRect)
- scoreBlackTextRect.centery = 7*S+5*s
- scoreBlackTextRect.left = WINDOWHEIGHT+2*s+2*S
- windowSurface.blit(scoreBlackText,scoreBlackTextRect)
- def drawGUI(turn, menu):
- windowSurface.blit(pauseImage,pauseButton)
- windowSurface.blit(surrenderImage, surrenderButton)
- windowSurface.blit(scoreDisplayImage,scoreDisplayButton)
- scoreWhiteText = scoreFont.render("V:" + str(scoreWhite),True,BLACK)
- scoreBlackText = scoreFont.render("M:" + str(scoreBlack),True,BLACK)
- scoreWhiteTextRect = scoreWhiteText.get_rect()
- scoreBlackTextRect = scoreBlackText.get_rect()
- scoreWhiteTextRect.centery = 7*S+5*s
- scoreWhiteTextRect.left = WINDOWHEIGHT+2*s
- windowSurface.blit(scoreWhiteText,scoreWhiteTextRect)
- scoreBlackTextRect.centery = 7*S+5*s
- scoreBlackTextRect.left = WINDOWHEIGHT+2*s+2*S
- windowSurface.blit(scoreBlackText,scoreBlackTextRect)
- windowSurface.blit(pieceChoiceBlankImage,instructionsButton)
- blankPieceChoice()
- if turn == "V":
- windowSurface.blit(whiteTurnImage,turnButton)
- else:
- windowSurface.blit(blackTurnImage,turnButton)
- if menu == "purchasing":
- windowSurface.blit(stagePurchasingImage,stageRect)
- elif menu == "questions":
- windowSurface.blit(stageQuestionsImage,stageRect)
- else:
- windowSurface.blit(stageMovingImage,stageRect)
- checkCheckTurnStart(turn)
- if checkTurnStart and check:
- windowSurface.blit(checkTimeDisplayImageOn,checkTimeDisplayButton)
- else:
- windowSurface.blit(checkTimeDisplayImageOff,checkTimeDisplayButton)
- if menu == "game":
- if y == True:
- instructionsText = instructionsFont.render("Valige nupp",True,BLACK)
- elif y == False:
- instructionsText = instructionsFont.render("Valige sihtpunkt",True,BLACK)
- elif menu == "purchasing":
- if purchasingStage == 1:
- instructionsText = instructionsFont.render("Valige nupp, mida soovite osta",True,BLACK)
- elif purchasingStage == 2:
- instructionsText = instructionsFont.render("Valige sihtpunkt teie nupule",True,BLACK)
- elif menu == "questions":
- instructionsText = instructionsFont.render("Lahendage tehteid!", True,BLACK)
- else:
- instructionsText = instructionsFont.render("", True,BLACK) ## Et suvalisi erroreid ei tekiks
- instructionsTextRect = instructionsText.get_rect()
- instructionsTextRect.centery = 2*S+5*s
- instructionsTextRect.left = WINDOWHEIGHT+2*s
- windowSurface.blit(instructionsText,instructionsTextRect)
- def drawMainMenu():
- windowSurface.fill(BLACK)
- windowSurface.blit(startGameImage,startGameButton)
- windowSurface.blit(optionsImage,optionsButton)
- pygame.display.update()
- def drawOptionsMenu(optionsTemp):
- printMode = optionsTemp["printMode"]
- purchasing = optionsTemp["purchasing"]
- queens = optionsTemp["queens"]
- placing = optionsTemp["placing"]
- check = optionsTemp["check"]
- pawnValue = optionsTemp["pawnValue"]
- if options["printMode"] == "V":
- windowSurface.fill(BLACK)
- windowSurface.blit(goBackImage,goBackButton)
- windowSurface.blit(saveImage, saveButton)
- text = basicFont.render("Kuvamise suurus:",True,WHITE,BLACK)
- textRect = text.get_rect()
- textRect.topleft = (50,120)
- windowSurface.blit(text,textRect)
- windowSurface.blit(nextArrowImage,printModeButton)
- windowSurface.blit(backArrowImage,printModeButtonBack)
- if printMode == "K":
- settingsText = settingsFont.render("Keskmine (1200x800)",True,WHITE,BLACK)
- elif printMode == "S":
- settingsText = settingsFont.render("Suur (1440x960)",True,WHITE,BLACK)
- else:
- settingsText = settingsFont.render("Väike (960x640)",True,WHITE,BLACK)
- settingsTextRect = settingsText.get_rect()
- settingsTextRect.centerx = 450
- settingsTextRect.centery = 132.5
- windowSurface.blit(settingsText,settingsTextRect)
- text = basicFont.render("Nuppude ostmine:",True,WHITE,BLACK)
- textRect.top = 145
- windowSurface.blit(text,textRect)
- windowSurface.blit(nextArrowImage,purchasingButton)
- windowSurface.blit(backArrowImage,purchasingButtonBack)
- if purchasing:
- settingsText = settingsFont.render("Sees",True,WHITE,BLACK)
- else:
- settingsText = settingsFont.render("Väljas",True,WHITE,BLACK)
- settingsTextRect = settingsText.get_rect()
- settingsTextRect.centerx = 450
- settingsTextRect.centery = 157.5
- windowSurface.blit(settingsText,settingsTextRect)
- text = basicFont.render("Lippude ostmine:",True,WHITE,BLACK)
- textRect.top = 170
- windowSurface.blit(text,textRect)
- windowSurface.blit(nextArrowImage,queensButton)
- windowSurface.blit(backArrowImage,queensButtonBack)
- if not purchasing:
- settingsText = settingsFont.render("-",True,WHITE,BLACK)
- elif queens:
- settingsText = settingsFont.render("Sees",True,WHITE,BLACK)
- else:
- settingsText = settingsFont.render("Väljas",True,WHITE,BLACK)
- settingsTextRect = settingsText.get_rect()
- settingsTextRect.centerx = 450
- settingsTextRect.centery = 182.5
- windowSurface.blit(settingsText,settingsTextRect)
- text = basicFont.render("Nuppude asetamine:",True,WHITE,BLACK)
- textRect.top = 195
- windowSurface.blit(text,textRect)
- windowSurface.blit(nextArrowImage,placingButton)
- windowSurface.blit(backArrowImage,placingButtonBack)
- if not purchasing:
- settingsText = settingsFont.render("-",True,WHITE,BLACK)
- elif placing == "M":
- settingsText = settingsFont.render("Mõlemad",True,WHITE,BLACK)
- elif placing == "T":
- settingsText = settingsFont.render("Tagumine rida",True,WHITE,BLACK)
- elif placing == "P":
- settingsText = settingsFont.render("Nuppude ülendamine",True,WHITE,BLACK)
- settingsTextRect = settingsText.get_rect()
- settingsTextRect.centerx = 450
- settingsTextRect.centery = 207.5
- windowSurface.blit(settingsText,settingsTextRect)
- text = basicFont.render("Tuli:",True,WHITE,BLACK)
- textRect.top = 220
- windowSurface.blit(text,textRect)
- windowSurface.blit(nextArrowImage,checkButton)
- windowSurface.blit(backArrowImage,checkButtonBack)
- if check:
- settingsText = settingsFont.render("Sees",True,WHITE,BLACK)
- else:
- settingsText = settingsFont.render("Väljas",True,WHITE,BLACK)
- settingsTextRect = settingsText.get_rect()
- settingsTextRect.centerx = 450
- settingsTextRect.centery = 232.5
- windowSurface.blit(settingsText,settingsTextRect)
- text = basicFont.render("Etturi väärtus:",True,WHITE,BLACK)
- textRect.top = 245
- windowSurface.blit(text,textRect)
- windowSurface.blit(nextArrowImage,pawnValueButton)
- windowSurface.blit(backArrowImage,pawnValueButtonBack)
- settingsText = settingsFont.render(str(pawnValue),True,WHITE,BLACK)
- settingsTextRect = settingsText.get_rect()
- settingsTextRect.centerx = 450
- settingsTextRect.centery = 257.5
- windowSurface.blit(settingsText,settingsTextRect)
- if options["printMode"] == "K" or options["printMode"] == "S": ###########
- windowSurface.fill(BLACK)
- windowSurface.blit(goBackImage,goBackButton)
- windowSurface.blit(saveImage, saveButton)
- text = basicFont.render("Kuvamise suurus:",True,WHITE,BLACK)
- textRect = text.get_rect()
- textRect.topleft = (100,250)
- windowSurface.blit(text,textRect)
- windowSurface.blit(nextArrowImage,printModeButton)
- windowSurface.blit(backArrowImage,printModeButtonBack)
- if printMode == "K":
- settingsText = settingsFont.render("Keskmine (1200x800)",True,WHITE,BLACK)
- elif printMode == "S":
- settingsText = settingsFont.render("Suur (1440x960)",True,WHITE,BLACK)
- else:
- settingsText = settingsFont.render("Väike (960x640)",True,WHITE,BLACK)
- settingsTextRect = settingsText.get_rect()
- settingsTextRect.centerx = 900
- settingsTextRect.centery = 265
- windowSurface.blit(settingsText,settingsTextRect)
- text = basicFont.render("Nuppude ostmine:",True,WHITE,BLACK)
- textRect.top = 300
- windowSurface.blit(text,textRect)
- windowSurface.blit(nextArrowImage,purchasingButton)
- windowSurface.blit(backArrowImage,purchasingButtonBack)
- if purchasing:
- settingsText = settingsFont.render("Sees",True,WHITE,BLACK)
- else:
- settingsText = settingsFont.render("Väljas",True,WHITE,BLACK)
- settingsTextRect = settingsText.get_rect()
- settingsTextRect.centerx = 900
- settingsTextRect.centery = 315
- windowSurface.blit(settingsText,settingsTextRect)
- text = basicFont.render("Lippude ostmine:",True,WHITE,BLACK)
- textRect.top = 350
- windowSurface.blit(text,textRect)
- windowSurface.blit(nextArrowImage,queensButton)
- windowSurface.blit(backArrowImage,queensButtonBack)
- if not purchasing:
- settingsText = settingsFont.render("-",True,WHITE,BLACK)
- elif queens:
- settingsText = settingsFont.render("Sees",True,WHITE,BLACK)
- else:
- settingsText = settingsFont.render("Väljas",True,WHITE,BLACK)
- settingsTextRect = settingsText.get_rect()
- settingsTextRect.centerx = 900
- settingsTextRect.centery = 365
- windowSurface.blit(settingsText,settingsTextRect)
- text = basicFont.render("Nuppude asetamine:",True,WHITE,BLACK)
- textRect.top = 400
- windowSurface.blit(text,textRect)
- windowSurface.blit(nextArrowImage,placingButton)
- windowSurface.blit(backArrowImage,placingButtonBack)
- if not purchasing:
- settingsText = settingsFont.render("-",True,WHITE,BLACK)
- elif placing == "M":
- settingsText = settingsFont.render("Mõlemad",True,WHITE,BLACK)
- elif placing == "T":
- settingsText = settingsFont.render("Tagumine rida",True,WHITE,BLACK)
- elif placing == "P":
- settingsText = settingsFont.render("Nuppude ülendamine",True,WHITE,BLACK)
- settingsTextRect = settingsText.get_rect()
- settingsTextRect.centerx = 900
- settingsTextRect.centery = 415
- windowSurface.blit(settingsText,settingsTextRect)
- text = basicFont.render("Tuli:",True,WHITE,BLACK)
- textRect.top = 450
- windowSurface.blit(text,textRect)
- windowSurface.blit(nextArrowImage,checkButton)
- windowSurface.blit(backArrowImage,checkButtonBack)
- if check:
- settingsText = settingsFont.render("Sees",True,WHITE,BLACK)
- else:
- settingsText = settingsFont.render("Väljas",True,WHITE,BLACK)
- settingsTextRect = settingsText.get_rect()
- settingsTextRect.centerx = 900
- settingsTextRect.centery = 465
- windowSurface.blit(settingsText,settingsTextRect)
- text = basicFont.render("Etturi väärtus:",True,WHITE,BLACK)
- textRect.top = 500
- windowSurface.blit(text,textRect)
- windowSurface.blit(nextArrowImage,pawnValueButton)
- windowSurface.blit(backArrowImage,pawnValueButtonBack)
- settingsText = settingsFont.render(str(pawnValue),True,WHITE,BLACK)
- settingsTextRect = settingsText.get_rect()
- settingsTextRect.centerx = 900
- settingsTextRect.centery = 515
- windowSurface.blit(settingsText,settingsTextRect)
- def optionsSave(optionsTemp):
- options = optionsTemp
- printMode = options["printMode"]
- purchasing = options["purchasing"]
- queens = options["queens"]
- placing = options["placing"]
- check = options["check"]
- pawnValue = options["pawnValue"]
- global basicFont, settingsFont
- if printMode == "V":
- basicFont = pygame.font.SysFont(None, 32)
- settingsFont = pygame.font.SysFont(None,24)
- else:
- basicFont = pygame.font.SysFont(None, 48)
- settingsFont = pygame.font.SysFont(None,32)
- return options
- def changeOptions(mousePos, optionsTemp):
- printMode = optionsTemp["printMode"]
- purchasing = optionsTemp["purchasing"]
- queens = optionsTemp["queens"]
- placing = optionsTemp["placing"]
- check = optionsTemp["check"]
- pawnValue = optionsTemp["pawnValue"]
- if printModeButton.collidepoint(mousePos):
- if printMode == "K":
- printMode = "S"
- elif printMode == "S":
- printMode = "V"
- else:
- printMode = "K"
- elif printModeButtonBack.collidepoint(mousePos):
- if printMode == "K":
- printMode = "V"
- elif printMode == "S":
- printMode = "K"
- else:
- printMode = "S"
- elif purchasingButton.collidepoint(mousePos) or purchasingButtonBack.collidepoint(mousePos):
- purchasing = not purchasing
- elif queensButton.collidepoint(mousePos) or queensButtonBack.collidepoint(mousePos):
- if purchasing:
- queens = not queens
- elif placingButton.collidepoint(mousePos) and purchasing:
- if placing == "M":
- placing = "P"
- elif placing == "P":
- placing = "T"
- else:
- placing = "M"
- elif placingButtonBack.collidepoint(mousePos):
- if placing == "M":
- placing = "T"
- elif placing == "P":
- placing = "M"
- else:
- placing = "P"
- elif checkButton.collidepoint(mousePos) or checkButtonBack.collidepoint(mousePos):
- check = not check
- elif pawnValueButton.collidepoint(mousePos):
- if pawnValue < 10:
- pawnValue +=1
- else:
- pawnValue = 1
- elif pawnValueButtonBack.collidepoint(mousePos):
- if pawnValue > 1:
- pawnValue -= 1
- else:
- pawnValue = 10
- optionsTemp = {"printMode":printMode,"purchasing":purchasing,"queens":queens,"placing":placing,"check":check,"pawnValue":pawnValue}
- return optionsTemp
- def surrenderQuery(turn):
- global running
- windowSurface.blit(confirmationQuestionImage,confirmationQuestionButton)
- windowSurface.blit(confirmationYesImage,confirmationYesButton)
- windowSurface.blit(confirmationNoImage,confirmationNoButton)
- pygame.display.update()
- while True:
- drawTimer(time.time()-timeStart-timePause)
- pygame.display.update()
- for event in pygame.event.get():
- if event.type == QUIT:
- running = terminate()
- return
- if event.type == MOUSEBUTTONDOWN:
- if event.button == 1:
- if confirmationYesButton.collidepoint(getMousePos()):
- return True
- elif confirmationNoButton.collidepoint(getMousePos()):
- return False
- def resetBoard():
- global y, turn, boardType, boardOwner
- global scoreWhite,scoreBlack
- scoreWhite=scoreBlack=0
- boardType = getNewBoardType()
- boardOwner = getNewBoardOwner()
- turn = "V"
- y = True
- global startPos,kingSideCastle,queenSideCastle,whiteKingPos,blackKingPos
- startPos = 0
- kingSideCastle = []
- queenSideCastle = []
- whiteKingPos = (4,0)
- blackKingPos = (4,7)
- global timeLast, turnStart, pauseStart, currentTime, timePause
- timeLast = turnStart = pauseStart = currentTime = timePause = 0
- def stringToBool(string):
- if string == "True":
- return True
- return False
- def readSettings():
- f = open("settings.txt","r")
- settings = []
- settingsType = []
- for line in f:
- settingType, text, setting = line.split()
- settings.append(setting)
- settingsType.append(settingType)
- for x in range(len(settingsType)):
- settingType = settingsType[x]
- if settingType == "printMode":
- printMode = str(settings[x])
- if settingType == "purchasing":
- purchasing = stringToBool(settings[x])
- if settingType == "queens":
- queens = stringToBool(settings[x])
- if settingType == "placing":
- placing = str(settings[x])
- if settingType == "check":
- check = stringToBool(settings[x])
- if settingType == "pawnValue":
- pawnValue = int(settings[x])
- f.close()
- return printMode, purchasing, queens, placing, check, pawnValue
- def saveSettingsDocument():
- f = open("settings.txt", "w")
- f.write("printMode = " + str(options["printMode"]) +"\n")
- f.write("purchasing = " + str(options["purchasing"])+"\n")
- f.write("queens = " + str(options["queens"])+"\n")
- f.write("placing = " + str(options["placing"])+"\n")
- f.write("check = " + str(options["check"])+"\n")
- f.write("pawnValue = " + str(options["pawnValue"])+"\n")
- f.close()
- ##GUI
- def reloadSettings():
- global WINDOWWIDTH, WINDOWHEIGHT, S, s, LEFTOVERSPACE
- global basicFont, settingsFont, scoreFont, instructionsFont, questionsFont
- global checkTurnStart
- global scoreWhite, scoreBlack, timeWhite, timeBlack
- scoreWhite = 0
- timeWhite = 0
- scoreBlack = 0
- timeBlack = 0
- checkTurnStart = False
- if printMode == "K":
- WINDOWWIDTH = 1200
- WINDOWHEIGHT = 800
- questionsFont = pygame.font.SysFont(None,64)
- basicFont = pygame.font.SysFont(None,48)
- settingsFont = pygame.font.SysFont(None,32)
- scoreFont = pygame.font.SysFont(None,96)
- instructionsFont = pygame.font.SysFont(None,32)
- elif printMode == "S":
- WINDOWWIDTH = 1440
- WINDOWHEIGHT = 960
- questionsFont = pygame.font.SysFont(None,96)
- basicFont = pygame.font.SysFont(None,48)
- settingsFont = pygame.font.SysFont(None,32)
- scoreFont = pygame.font.SysFont(None,128)
- instructionsFont = pygame.font.SysFont(None,32)
- else:
- WINDOWWIDTH = 960
- WINDOWHEIGHT = 640
- questionsFont = pygame.font.SysFont(None,42)
- basicFont = pygame.font.SysFont(None,32)
- settingsFont = pygame.font.SysFont(None,24)
- scoreFont = pygame.font.SysFont(None,64)
- instructionsFont = pygame.font.SysFont(None,24)
- windowSurface = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT), 0, 32)
- LEFTOVERSPACE = WINDOWWIDTH-WINDOWHEIGHT
- S = WINDOWHEIGHT//8
- s = S//10
- global unpauseImage, unpauseButton, pauseImageBase, pauseImage, pauseButton, surrenderImageBase,surrenderImage
- global surrenderButton, whiteTurnImageBase, whiteTurnImage, blackTurnImageBase, blackTurnImage,turnButton
- global pieceChoiceButton, pieceChoiceImageBase, pieceChoiceImage, pieceChoiceBlankImageBase, pieceChoiceBlankImage
- global stageMovingImageBase, stageMovingImage, stagePurchasingImageBase, stagePurchasingImage, stageQuestionsImageBase, stageQuestionsImage, stageRect
- ###main menüü pildid
- global startGameImage, optionsImage, startGameButton, optionsButton
- ## Options menüü
- global goBackImage, goBackButton, saveImage, saveButton, nextArrowImageBase, nextArrowImage
- global printModeButton, purchasingButton, queensButton, placingButton, checkButton, pawnValueButton
- global backArrowImageBase, backArrowImage, printModeButtonBack, purchasingButtonBack,queensButtonBack,placingButtonBack,checkButtonBack,pawnValueButtonBack
- ## Surrender
- global confirmationQuestionImage, confirmationYesImage, confirmationNoImage, confirmationQuestionButton, confirmationYesButton, confirmationNoButton
- #Ostmine/Upgrade'imine
- global bishopButton, knightButton, rookButton, queenButton
- global checkTimeDisplayImageOnBase, checkTimeDisplayImageOn, checkTimeDisplayImageOffBase, checkTimeDisplayImageOff, checkTimeDisplayButton
- global scoreDisplayImage, scoreDisplayButton
- global instructionsButton
- global pieceChoiceImageBishop, pieceChoiceImageRook, pieceChoiceImageKnight, pieceChoiceImageQueen
- global questionsButton
- global endGameContinueButton, endGameContinueImage, whiteWinImage, blackWinImage, winnerRect
- endGameContinueImageBase = pygame.image.load("endGameContinueImage.png")
- endGameContinueImage = pygame.transform.scale(endGameContinueImageBase, (4*S,S))
- endGameContinueButton = pygame.Rect(0,0,4*S,S)
- endGameContinueButton.centerx = WINDOWWIDTH//2
- endGameContinueButton.centery = WINDOWHEIGHT//2
- whiteWinImageBase = pygame.image.load("whiteWinImage.png")
- whiteWinImage = pygame.transform.scale(whiteWinImageBase, (4*S,S))
- blackWinImageBase = pygame.image.load("blackWinImage.png")
- blackWinImage = pygame.transform.scale(blackWinImageBase, (4*S,S))
- winnerRect = pygame.Rect(0,0,4*S,S)
- winnerRect.bottom = endGameContinueButton.top
- winnerRect.left = endGameContinueButton.left
- pieceChoiceImageBishopBase = pygame.image.load("pieceChoiceImageBishop.png")
- pieceChoiceImageBishop = pygame.transform.scale(pieceChoiceImageBishopBase, (4*S,S))
- pieceChoiceImageKnightBase = pygame.image.load("pieceChoiceImageKnight.png")
- pieceChoiceImageKnight = pygame.transform.scale(pieceChoiceImageKnightBase, (4*S,S))
- pieceChoiceImageRookBase = pygame.image.load("pieceChoiceImageRook.png")
- pieceChoiceImageRook = pygame.transform.scale(pieceChoiceImageRookBase, (4*S,S))
- pieceChoiceImageQueenBase = pygame.image.load("pieceChoiceImageQueen.png")
- pieceChoiceImageQueen = pygame.transform.scale(pieceChoiceImageQueenBase, (4*S,S))
- questionsButton = pygame.Rect(WINDOWHEIGHT,S,4*S,S)
- instructionsButton = pygame.Rect(WINDOWHEIGHT,2*S,4*S,S)
- unpauseImage = pygame.image.load("unpauseButton.png")
- unpauseButton = pygame.Rect (WINDOWWIDTH//2-150, WINDOWHEIGHT//2-50, 300, 100)
- pauseImageBase = pygame.image.load("pauseButton.png")
- pauseImage = pygame.transform.scale(pauseImageBase,(S,S))
- pauseButton = pygame.Rect (WINDOWHEIGHT,0,S,S)
- surrenderImageBase = pygame.image.load("surrenderButton.png")
- surrenderImage = pygame.transform.scale(surrenderImageBase,(S,S))
- surrenderButton = pygame.Rect (WINDOWHEIGHT+S,0,S,S)
- whiteTurnImageBase = pygame.image.load("whiteTurnImage.png")
- whiteTurnImage = pygame.transform.scale(whiteTurnImageBase,(2*S,S))
- blackTurnImageBase = pygame.image.load("blackTurnImage.png")
- blackTurnImage = pygame.transform.scale(blackTurnImageBase,(2*S,S))
- turnButton = pygame.Rect (WINDOWHEIGHT+S+S,0,S+S,S)
- scoreDisplayImageBase = pygame.image.load("ScoreDisplayImage.png")
- scoreDisplayImage = pygame.transform.scale(scoreDisplayImageBase,(4*S,S))
- scoreDisplayButton = pygame.Rect(WINDOWHEIGHT,7*S,4*S,S)
- checkTimeDisplayImageOnBase = pygame.image.load("checkTimeDisplayImageOn.png")
- checkTimeDisplayImageOn = pygame.transform.scale(checkTimeDisplayImageOnBase,(4*S,S))
- checkTimeDisplayImageOffBase = pygame.image.load("checkTimeDisplayImageOff.png")
- checkTimeDisplayImageOff = pygame.transform.scale(checkTimeDisplayImageOffBase,(4*S,S))
- checkTimeDisplayButton = pygame.Rect(WINDOWHEIGHT,6*S,4*S,S)
- pieceChoiceButton = pygame.Rect(WINDOWHEIGHT,S,4*S,S)
- pieceChoiceImageBase = pygame.image.load("pieceChoiceImage.png")
- pieceChoiceImage = pygame.transform.scale(pieceChoiceImageBase, (4*S, S))
- pieceChoiceBlankImageBase = pygame.image.load("pieceChoiceBlankImage.png")
- pieceChoiceBlankImage = pygame.transform.scale(pieceChoiceBlankImageBase, (4*S, S))
- stageMovingImageBase = pygame.image.load("stageMovingImage.png")
- stageMovingImage = pygame.transform.scale(stageMovingImageBase,(4*S,3*S))
- stagePurchasingImageBase = pygame.image.load("stagePurchasingImage.png")
- stagePurchasingImage = pygame.transform.scale(stagePurchasingImageBase,(4*S,3*S))
- stageQuestionsImageBase = pygame.image.load("stageQuestionsImage.png")
- stageQuestionsImage = pygame.transform.scale(stageQuestionsImageBase,(4*S,3*S))
- stageRect = pygame.Rect(WINDOWHEIGHT,3*S,LEFTOVERSPACE,3*S)
- global blankTimerImage, blankTimerButton
- blankTimerImageBase = pygame.image.load("blankTimerImage.png")
- blankTimerImage = pygame.transform.scale(blankTimerImageBase, (2*S,S))
- blankTimerButton = pygame.Rect(WINDOWHEIGHT+2*S,6*S,2*S,S)
- ###main menüü pildid
- startGameImage = pygame.image.load("startGameImage.png")
- optionsImage = pygame.image.load("optionsImage.png")
- startGameButton = pygame.Rect(WINDOWWIDTH//2-200,WINDOWHEIGHT//2-100-50-20,400,100)
- optionsButton = pygame.Rect(WINDOWWIDTH//2-200,WINDOWHEIGHT//2-100+50+20,400,100)
- ## Options menüü
- if printMode == "S" or printMode == "K":
- goBackImage = pygame.image.load("goBackImage.png")
- goBackButton = pygame.Rect(100,100,400,100)
- saveImage = pygame.image.load("saveImage.png")
- saveButton = pygame.Rect(700,100,400,100)
- nextArrowImageBase = pygame.image.load("nextArrowImage.png")
- nextArrowImage = pygame.transform.scale(nextArrowImageBase,(30,30))
- printModeButton = pygame.Rect(1100,250,30,30)
- purchasingButton = pygame.Rect(1100,300,30,30)
- queensButton = pygame.Rect(1100,350,30,30)
- placingButton = pygame.Rect(1100,400,30,30)
- checkButton = pygame.Rect(1100,450,30,30)
- pawnValueButton = pygame.Rect(1100,500,30,30)
- backArrowImageBase = pygame.image.load("backArrowImage.png")
- backArrowImage = pygame.transform.scale(backArrowImageBase,(30,30))
- printModeButtonBack = pygame.Rect(670,250,30,30)
- purchasingButtonBack = pygame.Rect(670,300,30,30)
- queensButtonBack = pygame.Rect(670,350,30,30)
- placingButtonBack = pygame.Rect(670,400,30,30)
- checkButtonBack = pygame.Rect(670,450,30,30)
- pawnValueButtonBack = pygame.Rect(670,500,30,30)
- else:
- goBackImageBase = pygame.image.load("goBackImage.png")
- goBackImage = pygame.transform.scale(goBackImageBase,(200,50))
- goBackButton = pygame.Rect(50,50,200,50)
- saveImageBase = pygame.image.load("saveImage.png")
- saveImage = pygame.transform.scale(saveImageBase,(200,50))
- saveButton = pygame.Rect(350,50,200,50)
- nextArrowImageBase = pygame.image.load("nextArrowImage.png")
- nextArrowImage = pygame.transform.scale(nextArrowImageBase,(15,15))
- printModeButton = pygame.Rect(550,125,15,15)
- purchasingButton = pygame.Rect(550,150,15,15)
- queensButton = pygame.Rect(550,175,15,15)
- placingButton = pygame.Rect(550,200,15,15)
- checkButton = pygame.Rect(550,225,15,15)
- pawnValueButton = pygame.Rect(550,250,15,15)
- backArrowImageBase = pygame.image.load("backArrowImage.png")
- backArrowImage = pygame.transform.scale(backArrowImageBase,(15,15))
- printModeButtonBack = pygame.Rect(335,125,15,15)
- purchasingButtonBack = pygame.Rect(335,150,15,15)
- queensButtonBack = pygame.Rect(335,175,15,15)
- placingButtonBack = pygame.Rect(335,200,15,15)
- checkButtonBack = pygame.Rect(335,225,15,15)
- pawnValueButtonBack = pygame.Rect(335,250,15,15)
- ## Surrender
- confirmationQuestionImage = pygame.image.load("confirmationQuestionImage.png")
- confirmationYesImage = pygame.image.load("confirmationYesImage.png")
- confirmationNoImage = pygame.image.load("confirmationNoImage.png")
- confirmationQuestionButton = pygame.Rect(WINDOWWIDTH//2-300,WINDOWHEIGHT//2-100,600,100)
- confirmationYesButton = pygame.Rect(WINDOWWIDTH//2-300,WINDOWHEIGHT//2-100+100,300,100)
- confirmationNoButton = pygame.Rect(WINDOWWIDTH//2-300+300,WINDOWHEIGHT//2-100+100,300,100)
- #Ostmine/Upgrade'imine
- bishopButton = pygame.Rect(WINDOWHEIGHT,S,S,S)
- knightButton = pygame.Rect(WINDOWHEIGHT+S,S,S,S)
- rookButton = pygame.Rect(WINDOWHEIGHT+2*S,S,S,S)
- queenButton = pygame.Rect(WINDOWHEIGHT+3*S,S,S,S)
- def findKing(turn):
- for y in range(8):
- for x in range(8):
- if boardType[x][y] == "K":
- if boardOwner[x][y] == turn:
- return (x,y)
- def checkCheckTurnStart(turn):
- global checkTurnStart
- if checkCheck(findKing(turn),boardType,boardOwner):
- checkTurnStart = True
- else:
- checkTurnStart = False
- def countTime(timeStart):
- timeCurrent = time.time() - timeStart
- return timeCurrent
- def getSquare(mousePos):
- x = mousePos[0]//S
- y = 7-mousePos[1]//S
- if x <= 7 and x >=0 and y <=8 and y>=0:
- return (x,y)
- else:
- return False
- def getPurchasingOrder():
- global purchasingStage, turn, menu, running, scoreWhite, scoreBlack
- global timeStart, timePause
- global timeLastTemp
- global answer
- drawPieceChoices()
- pygame.display.update()
- piece = 0
- while True:
- drawTimer(time.time()-timeStart-timePause) ############## Eraldi funktsioon aja joonistamiseks
- pygame.display.update()
- #print(time.time()-timeStart-timePause)
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- running = terminate()
- return
- if event.type == MOUSEBUTTONDOWN:
- if event.button == 3:
- if purchasingStage == 2:
- pygame.display.update()
- purchasingStage = 1
- drawGUI(turn, menu)
- drawPieceChoices()
- if event.button == 1:
- if pauseButton.collidepoint(getMousePos()): ######### Paus
- timePauseStart = time.time()
- while True:
- drawPauseMenu()
- pygame.display.update()
- breakOut = 0
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- running = terminate()
- return
- if event.type == MOUSEBUTTONDOWN:
- if event.button == 1:
- if unpauseButton.collidepoint(getMousePos()):
- timePause+= time.time()-timePauseStart
- drawBoard()
- purchasingStage = 1
- drawGUI(turn, menu)
- drawPieceChoices()
- pygame.display.update()
- breakOut = 1
- if breakOut == 1:
- break
- if purchasingStage == 1:
- piece = pieceChoiceChoice(getMousePos())
- if piece == "O" or piece == "R":
- pieceVal = 3
- elif piece == "V":
- pieceVal = 5
- elif piece == "L" and queens:
- pieceVal = 9
- if turn == "V" and piece != 0:
- if pieceVal*pawnValue <= scoreWhite:
- purchasingStage = 2
- drawGUI(turn, menu)
- if piece == "O":
- windowSurface.blit(pieceChoiceImageBishop,pieceChoiceButton)
- pygame.display.update()
- if piece == "R":
- windowSurface.blit(pieceChoiceImageKnight,pieceChoiceButton)
- pygame.display.update()
- if piece == "V":
- windowSurface.blit(pieceChoiceImageRook,pieceChoiceButton)
- pygame.display.update()
- if piece == "L":
- windowSurface.blit(pieceChoiceImageQueen,pieceChoiceButton)
- pygame.display.update()
- elif piece != 0:
- if pieceVal*pawnValue <= scoreBlack:
- purchasingStage = 2
- drawGUI(turn, menu)
- if piece == "O":
- windowSurface.blit(pieceChoiceImageBishop,pieceChoiceButton)
- pygame.display.update()
- if piece == "R":
- windowSurface.blit(pieceChoiceImageKnight,pieceChoiceButton)
- pygame.display.update()
- if piece == "V":
- windowSurface.blit(pieceChoiceImageRook,pieceChoiceButton)
- pygame.display.update()
- if piece == "L":
- windowSurface.blit(pieceChoiceImageQueen,pieceChoiceButton)
- pygame.display.update()
- else:
- square = getSquare(getMousePos())
- if square:
- if boardOwner[square[0]][square[1]] == turn and (placing == "M" or placing == "P"):
- if boardType[square[0]][square[1]] != "K":
- boardType[square[0]][square[1]] = piece
- if turn == "V":
- scoreWhite -= pieceVal*pawnValue
- purchasingStage = 1
- timeLastTemp = (time.time()-timeStart)-timePause
- timeStart = time.time()
- timePause = 0
- #menu = "game" ################################# Hiljem minna "questions" menüüsse
- answer = startQuestions()
- return
- else:
- scoreBlack -= pieceVal*pawnValue
- purchasingStage = 1
- timeLastTemp = (time.time()-timeStart)-timePause
- timeStart = time.time()
- timePause = 0
- answer = startQuestions()
- return
- if placing == "M" or placing == "T":
- if square[1] == 0 and turn == "V":
- if boardType[square[0]][square[1]] == " ":
- boardType[square[0]][square[1]] = piece
- boardOwner[square[0]][square[1]] = turn
- scoreWhite -= pieceVal*pawnValue
- purchasingStage = 1
- timeLastTemp = (time.time()-timeStart)-timePause
- timeStart = time.time()
- timePause = 0
- answer = startQuestions()
- return
- elif square[1] == 7 and turn == "M":
- if boardType[square[0]][square[1]] == " ":
- boardType[square[0]][square[1]] = piece
- boardOwner[square[0]][square[1]] = turn
- scoreBlack -= pieceVal*pawnValue
- purchasingStage = 1
- timeLastTemp = (time.time()-timeStart)-timePause
- timeStart = time.time()
- timePause = 0
- answer = startQuestions()
- return
- elif event.type == KEYDOWN:
- if event.key == K_ESCAPE:
- if purchasingStage == 2:
- purchasingStage = 1
- drawGUI(turn, menu)
- drawPieceChoices()
- pygame.display.update()
- else:
- timeLastTemp = (time.time()-timeStart)-timePause
- timeStart = time.time()
- timePause = 0
- #menu = "game" #################### Muuta "questions"-iks
- answer = startQuestions()
- return
- def blankTimer():
- windowSurface.blit(blankTimerImage,blankTimerButton)
- def drawTimerRed(time):
- if purchasing:
- blankTimer()
- timerText = scoreFont.render(str(round((time),1)),True,TIMERRED)
- timerTextRect = pygame.Rect(0,0,2*S,S)
- timerTextRect.top = 6*S + 2*s
- timerTextRect.left = WINDOWHEIGHT+2*S+2*s
- windowSurface.blit(timerText, timerTextRect)
- def drawTimer(time): ########## Joonista aeg
- if purchasing:
- blankTimer()
- timerText = scoreFont.render(str(round((time),1)),True,BLACK)
- timerTextRect = pygame.Rect(0,0,2*S,S)
- timerTextRect.top = 6*S + 2*s
- timerTextRect.left = WINDOWHEIGHT+2*S+2*s
- windowSurface.blit(timerText, timerTextRect)
- def startQuestions():
- global menu, turn, question, timeLast, timeStartQuestions, timeStart
- if timeLast == 0:
- turn = "M"
- turnChangeWait()
- timeStart = time.time()
- timeLast = timeLastTemp
- menu = "game"
- drawBoard()
- drawGUI(turn, menu)
- return 0
- menu = "questions"
- answer, question = getQuestion()
- drawBoard()
- drawGUI(turn, menu)
- drawQuestion(question)
- timeStartQuestions = time.time()
- return answer
- def getQuestion():
- n1 = random.randint(100,999)
- n2 = random.randint(100,999)
- sign = random.randint(0,1)
- if sign == 1:
- answer = n1+n2
- question = str(n1)+ " + "+str(n2) + " = "
- else:
- if n1>=n2:
- answer = n1-n2
- question = str(n1)+ " - "+str(n2) + " = "
- else:
- answer = n2-n1
- question = str(n2)+ " - "+str(n1) + " = "
- return answer, question
- def drawQuestion(question):
- global questionsRect
- questionsText = questionsFont.render(question, True,BLACK)
- questionsRect = pygame.Rect(questionsText.get_rect())
- questionsRect.centery = 1.5*S
- questionsRect.left = WINDOWHEIGHT+2*s
- windowSurface.blit(questionsText,questionsRect)
- #timeOver, scoreWhite, scoreBlack = questionsStage(timeLast,turn,scoreWhite,scoreBlack,answer)
- def questionsStage(timeLast, turn, scoreWhite, scoreBlack, answer):
- global question
- timeOver = 0
- playerInput = ""
- while True:
- playerInputText = questionsFont.render(playerInput,True,BLACK)
- playerInputRect = playerInputText.get_rect()
- playerInputRect.centery = 1.5*S
- playerInputRect.left = questionsRect.right
- clearQuestionsText()
- drawQuestion(question)
- windowSurface.blit(playerInputText,playerInputRect)
- if timeLast-(time.time()-timeStartQuestions) <=0:
- drawTimerRed(timeLast-(time.time()-timeStartQuestions))
- else:
- drawTimer(timeLast-(time.time()-timeStartQuestions))
- pygame.display.update()
- for event in pygame.event.get():
- if event.type == QUIT:
- pygame.quit()
- sys.exit()
- elif event.type == KEYDOWN:
- if event.key == K_BACKSPACE:
- if len(playerInput) != 0:
- playerInput = playerInput[:(len(playerInput)-1)]
- else:
- if chr(event.key) in NUMBERS:
- if len(playerInput)<MAXALLOWEDINPUT:
- playerInput+=chr(event.key)
- elif event.key == K_RETURN:
- if len(playerInput)!= 0 and int(playerInput) == answer:
- if turn == "V":
- scoreWhite+=1
- else:
- scoreBlack+=1
- else:
- if turn == "V":
- scoreWhite-=1
- else:
- scoreBlack-=1
- drawScore(scoreWhite,scoreBlack)
- if time.time()- timeStartQuestions < timeLast:############Lisada pausi jaoks -timePause kui see võimalus sisse kodeerida
- answer, question = getQuestion()
- playerInput = ""
- clearQuestionsText()
- drawQuestion(question)
- else:
- timeOver = (time.time()-timeStartQuestions)-timeLast
- return timeOver,scoreWhite,scoreBlack
- def drawTurnChangeText(timeWaitStart):
- clearInstructionsText()
- if turn == "V":
- turnName = "Valge"
- else:
- turnName = "Musta"
- turnChangeText = instructionsFont.render((turnName+" käik algab: "+str(int(TURNCHANGETIME-(time.time()-timeWaitStart-0.0000001)))),True,BLACK)
- turnChangeTextRect = turnChangeText.get_rect()
- turnChangeTextRect.centery = 2*S+5*s
- turnChangeTextRect.left = WINDOWHEIGHT+2*s
- windowSurface.blit(turnChangeText,turnChangeTextRect)
- def turnChangePauseMenu():
- drawPauseMenu()
- pygame.display.update()
- while True:
- for event in pygame.event.get():
- if event.type == QUIT:
- pygame.quit()
- sys.exit()
- if event.type == MOUSEBUTTONDOWN:
- if event.button == 1:
- if unpauseButton.collidepoint(getMousePos()):
- timeWaitStart = time.time()
- drawBoard()
- drawGUI(turn, menu)
- return timeWaitStart
- def turnChangeWait():
- timeWaitStart = time.time()
- while True:
- if time.time()-timeWaitStart>TURNCHANGETIME:
- return
- drawTurnChangeText(timeWaitStart)
- pygame.display.update()
- for event in pygame.event.get():
- if event.type == QUIT:
- pygame.quit()
- sys.exit()
- if event.type == MOUSEBUTTONDOWN:
- if pauseButton.collidepoint(getMousePos()):
- drawPauseMenu()
- timeWaitStart = turnChangePauseMenu()
- def drawGameEndScreen(turn): ############################################ Mängulõpuekraan, selle käik - kes võidab!!!
- windowSurface.fill(BLACK)
- windowSurface.blit(endGameContinueImage,endGameContinueButton)
- if turn == "V":
- windowSurface.blit(whiteWinImage, winnerRect)
- else:
- windowSurface.blit(blackWinImage, winnerRect)
- printMode, purchasing, queens, placing, check, pawnValue = readSettings()
- #printMode = "K" #Keskmine suurus
- #purchasing = True #Nuppude ostmine on sees
- #queens = True #Lippe saab osta
- #placing = "M"
- #check = True
- #questionsBanned = [0]
- #pawnValue = 1
- options = {"printMode":printMode,"purchasing":purchasing,"queens":queens,"placing":placing,"check":check,"pawnValue":pawnValue}
- if printMode == "K":
- WINDOWWIDTH = 1200
- WINDOWHEIGHT = 800
- elif printMode == "S":
- WINDOWWIDTH = 1440
- WINDOWHEIGHT = 960
- else:
- WINDOWWIDTH = 960
- WINDOWHEIGHT = 640
- windowSurface = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT), 0, 32)
- pygame.display.set_caption('Smartchess 1.0')
- BLACK = (0, 0, 0)
- WHITE = (255, 255, 255)
- RED = (255, 0, 0)
- GREEN = (0, 128, 0)
- BLUE = (0, 0, 255)
- TIMERRED = (210,67,67)
- TURNCHANGETIME = 4
- NUMBERS = "0123456789"
- MAXALLOWEDINPUT = 4
- #LEFTOVERSPACE = WINDOWWIDTH-WINDOWHEIGHT
- #basicFont = pygame.font.SysFont(None, 48)
- #settingsFont = pygame.font.SysFont(None,32)
- #S = WINDOWHEIGHT//8
- #s = S//10
- #startPos = 0
- #turn = "V"
- #check = True
- running = True
- #y = True
- #kingSideCastle = []
- #queenSideCastle = []
- #whiteKingPos = (4,0)
- #blackKingPos = (4,7)
- menu = "main" ##main/options/game/pause/purchasing/questions/gameend
- reloadSettings()
- resetBoard()
- while running:
- pygame.display.update()
- if menu == "main":
- drawMainMenu()
- for event in pygame.event.get():
- if event.type == QUIT:
- running = terminate()
- elif event.type == MOUSEBUTTONDOWN:
- if event.button == 1:
- if startGameButton.collidepoint(getMousePos()):
- menu = "game"
- timeStart = time.time()
- drawBoard()
- drawGUI(turn, menu)
- elif optionsButton.collidepoint(getMousePos()):
- optionsTemp = dict(options) #Teeb listist koopia
- menu = "options"
- elif menu == "gameend":############################# Mängulõpu ekraan
- drawGameEndScreen(turn)
- for event in pygame.event.get():
- if event.type == QUIT:
- running = terminate()
- if event.type == MOUSEBUTTONDOWN:
- if endGameContinueButton.collidepoint(getMousePos()):
- menu = "main"
- resetBoard()
- if event.type == KEYDOWN:
- if event.key == K_ESCAPE:
- menu = "main"
- resetBoard()
- elif menu == "options":
- drawOptionsMenu(optionsTemp)
- for event in pygame.event.get():
- if event.type == QUIT:
- running = terminate()
- if event.type == MOUSEBUTTONDOWN:
- if event.button == 1:
- if goBackButton.collidepoint(getMousePos()):
- menu = "main"
- elif saveButton.collidepoint(getMousePos()):
- options = optionsSave(optionsTemp)
- purchasing = options["purchasing"]
- queens = options["queens"]
- placing = options["placing"]
- check = options["check"]
- pawnValue = options["pawnValue"]
- saveSettingsDocument()
- if printMode != options["printMode"]:
- printMode = options["printMode"]
- reloadSettings()
- else:
- optionsTemp = changeOptions(getMousePos(),optionsTemp)
- elif menu == "pause":
- drawPauseMenu()
- for event in pygame.event.get():
- if event.type == MOUSEBUTTONDOWN:
- if event.button == 1:
- if unpauseButton.collidepoint(getMousePos()):
- menu = "game"
- timePause += (time.time()-timePauseStart)
- drawBoard()
- drawGUI(turn, menu)
- elif menu == "game":
- #print(time.time()-timeStart-timePause)
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- running = terminate()
- if event.type == MOUSEBUTTONDOWN:
- if event.button == 1:
- turn, startPos, y, running = getMove(turn, startPos, y, running)
- drawGUI(turn, menu)
- if pauseButton.collidepoint(getMousePos()):
- timePauseStart = time.time()
- menu = "pause"
- y = True
- elif surrenderButton.collidepoint(getMousePos()):
- if surrenderQuery(turn): #Küsib, kas ollakse kindel
- menu = "gameend"
- turn = turnChange(turn)
- drawGameEndScreen(turn)
- else:
- drawBoard()
- drawGUI(turn, menu)
- if y == False:
- y = True
- drawSquare((startPos[0],startPos[1]),0)
- if event.button == 3:
- if y == False:
- y = True
- drawSquare((startPos[0],startPos[1]),0)
- drawGUI(turn, menu)
- if event.type == KEYDOWN:
- if event.key == K_ESCAPE:
- if y == False:
- y = True
- drawSquare((startPos[0],startPos[1]),0)
- drawGUI(turn, menu)
- elif menu == "purchasing":
- getPurchasingOrder()
- elif menu == "questions":
- timeOver, scoreWhite, scoreBlack = questionsStage(timeLast,turn,scoreWhite,scoreBlack,answer)
- timeLast = timeLastTemp + timeOver
- turn = turnChange(turn)
- turnChangeWait()
- timeStart = time.time()
- timePause = 0
- timeOver = 0
- menu = "game"
- drawBoard()
- drawGUI(turn,menu)
- if purchasing and (menu == "game" or menu == "purchasing"):
- drawTimer(time.time()-timeStart-timePause) ############## Eraldi funktsioon aja joonistamiseks
- pygame.quit()
- #sys.exit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement