Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame,random
- pygame.init()
- # draw our window
- window = pygame.display.set_mode((500,540),pygame.NOFRAME)
- pygame.display.set_caption("Tic Tac TOE")
- MANUAL_CURSOR = pygame.image.load('nw.png').convert_alpha()
- MANUAL_CURSOR2 = pygame.image.load('nOW.png').convert_alpha()
- bg = pygame.image.load("mai.png")
- fps = 40
- clock = pygame.time.Clock()
- class button():
- def __init__(self, color, x,y,width,height, text=''):
- self.color = color
- self.x = x
- self.y = y
- self.width = width
- self.height = height
- self.rect = pygame.Rect(x,y,height,width)
- self.text = text
- self.over = False
- def draw(self,window,outline=None):
- #Call this method to draw the button on the screen
- if outline:
- pygame.draw.rect(window, outline, (self.x-2,self.y-2,self.width+4,self.height+4),0)
- pygame.draw.rect(window, self.color, (self.x,self.y,self.width,self.height),0)
- if self.text != '':
- font = pygame.font.SysFont('comicsans', 60)
- text = font.render(self.text, 1, (0,0,0))
- window.blit(text, (self.x + (self.width/2 - text.get_width()/2), self.y + (self.height/2 - text.get_height()/2)))
- def isOver(self, pos):
- #Pos is the mouse position or a tuple of (x,y) coordinates
- if pos[0] > self.x and pos[0] < self.x + self.width:
- if pos[1] > self.y and pos[1] < self.y + self.height:
- return True
- return False
- def playSoundIfMouseIsOver(self, pos, sound):
- if self.isOver(pos):
- if not self.over:
- beepsound.play()
- self.over = True
- else:
- self.over = False
- def getResult( self ):
- return self.text
- def winner( b1, b2, b3, b4, b5, b6, b7, b8, b9 ):
- """ Given the buttons 1-9 in order from top-left to bottom right
- return whether 'x' or 'o' has won the game, or None and which
- line/row/vertical the win was made on """
- winner = ( None, None )
- # make a grid of the board-state for iteration
- board = [ [ b1.getResult(), b2.getResult(), b3.getResult() ],
- [ b4.getResult(), b5.getResult(), b6.getResult() ],
- [ b7.getResult(), b8.getResult(), b9.getResult() ] ]
- # check the horizontals
- for row in range( 3 ):
- if ( board[row][0] != '' and
- board[row][0] == board[row][1] and board[row][0] == board[row][2] ):
- winner = ( board[row][0], 'h'+str( row ) )
- break
- # check the verticals
- for col in range( 3 ):
- if ( board[0][col] != '' and
- board[0][col] == board[1][col] and board[0][col] == board[2][col] ):
- winner = ( board[col][0], 'v'+str( col ) )
- break
- # diagonals
- if ( board[1][1] != '' ):
- if ( board[0][0] == board[1][1] and board[2][2] == board[1][1] ):
- winner = ( board[1][1], 'd1' )
- elif ( board[0][2] == board[1][1] and board[2][0] == board[1][1] ):
- winner = ( board[1][1], 'd2' )
- return winner
- class Partic:
- def __init__(self,x,y,height,width,color):
- self.x = x
- self.y = y
- self.height = height
- self.width = width
- self.color = color
- self.partilight = pygame.image.load("noW.png")
- self.rect = pygame.Rect(x,y,height,width)
- def draw(self):
- self.rect.topleft = (self.x,self.y)
- pygame.draw.rect(window,self.color,self.rect)
- window.blit(self.partilight,self.rect)
- class Parti:
- def __init__(self,x,y,height,width,color):
- self.x = x
- self.y = y
- self.height = height
- self.width = width
- self.color = color
- self.partilight = pygame.image.load("nw.png")
- self.rect = pygame.Rect(x,y,height,width)
- def draw(self):
- self.rect.topleft = (self.x,self.y)
- pygame.draw.rect(window,self.color,self.rect)
- window.blit(self.partilight,self.rect)
- class line:
- def __init__(self,x,y,height,width,color):
- self.x = x
- self.y = y
- self.height = height
- self.width = width
- self.color = color
- self.partilight = pygame.image.load("ps1.png")
- self.rect = pygame.Rect(x,y,height,width)
- def draw(self):
- self.rect.topleft = (self.x,self.y)
- pygame.draw.rect(window,self.color,self.rect)
- window.blit(self.partilight,self.rect)
- class lin:
- def __init__(self,x,y,height,width,color):
- self.x = x
- self.y = y
- self.height = height
- self.width = width
- self.color = color
- self.partilight = pygame.image.load("ps2.png")
- self.rect = pygame.Rect(x,y,height,width)
- def draw(self):
- self.rect.topleft = (self.x,self.y)
- pygame.draw.rect(window,self.color,self.rect)
- window.blit(self.partilight,self.rect)
- class liner:
- def __init__(self,x,y,height,width,color):
- self.x = x
- self.y = y
- self.height = height
- self.width = width
- self.color = color
- self.partilight = pygame.image.load("ps3.png")
- self.rect = pygame.Rect(x,y,height,width)
- def draw(self):
- self.rect.topleft = (self.x,self.y)
- pygame.draw.rect(window,self.color,self.rect)
- window.blit(self.partilight,self.rect)
- class lower:
- def __init__(self,x,y,height,width,color):
- self.x = x
- self.y = y
- self.height = height
- self.width = width
- self.color = color
- self.partilight = pygame.image.load("sh1.png")
- self.rect = pygame.Rect(x,y,height,width)
- def draw(self):
- self.rect.topleft = (self.x,self.y)
- pygame.draw.rect(window,self.color,self.rect)
- window.blit(self.partilight,self.rect)
- class lowe:
- def __init__(self,x,y,height,width,color):
- self.x = x
- self.y = y
- self.height = height
- self.width = width
- self.color = color
- self.partilight = pygame.image.load("sh2.png")
- self.rect = pygame.Rect(x,y,height,width)
- def draw(self):
- self.rect.topleft = (self.x,self.y)
- pygame.draw.rect(window,self.color,self.rect)
- window.blit(self.partilight,self.rect)
- class low:
- def __init__(self,x,y,height,width,color):
- self.x = x
- self.y = y
- self.height = height
- self.width = width
- self.color = color
- self.partilight = pygame.image.load("sh3.png")
- self.rect = pygame.Rect(x,y,height,width)
- def draw(self):
- self.rect.topleft = (self.x,self.y)
- pygame.draw.rect(window,self.color,self.rect)
- window.blit(self.partilight,self.rect)
- class winner:
- def __init__(self,x,y,height,width,color):
- self.x = x
- self.y = y
- self.height = height
- self.width = width
- self.color = color
- self.partilight = pygame.image.load("nh1.png")
- self.rect = pygame.Rect(x,y,height,width)
- def draw(self):
- self.rect.topleft = (self.x,self.y)
- pygame.draw.rect(window,self.color,self.rect)
- window.blit(self.partilight,self.rect)
- class win:
- def __init__(self,x,y,height,width,color):
- self.x = x
- self.y = y
- self.height = height
- self.width = width
- self.color = color
- self.partilight = pygame.image.load("nh2.png")
- self.rect = pygame.Rect(x,y,height,width)
- def draw(self):
- self.rect.topleft = (self.x,self.y)
- pygame.draw.rect(window,self.color,self.rect)
- window.blit(self.partilight,self.rect)
- white = (250,250,250)
- greenbutton2 = button((0,255,0),190,215,100,100, '2')
- greenbutton3 = button((0,255,0),335,215,100,100, '3')
- greenbutton4 = button((0,255,0),71,215,100,100, '4')
- greenbutton5 = button((0,255,0),71,350,100,100, '5')
- greenbutton6 = button((0,255,0),190,350,100,100, '6')
- greenbutton7 = button((0,255,0),335,350,100,100, '7')
- greenbutton8 = button((0,255,0),70,90,100,100, '8')
- greenbutton9 = button((0,255,0),190,90,100,100, '9')
- greenbutton10 = button((0,255,0),335,90,100,100, '10')
- font = pygame.font.Font("fos.ttf", 60)
- score = 1
- cointext = font.render("" + str(score), True, (255,255,255))
- coinrect = cointext.get_rect()
- coinrect.center = ((100,50))
- lines = []
- liness = []
- linesss = []
- linessss = []
- partics = []
- parts = []
- lnes = []
- pos = pygame.mouse.get_pos()
- def redraw():
- window.fill((174, 214, 241))
- window.blit(bg,(0,0))
- greenbutton2.draw(window)
- greenbutton3.draw(window)
- greenbutton4.draw(window)
- greenbutton5.draw(window)
- greenbutton6.draw(window)
- greenbutton7.draw(window)
- greenbutton8.draw(window)
- greenbutton9.draw(window)
- greenbutton10.draw(window)
- for partic in partics:
- partic.draw()
- for parti in parts:
- parti.draw()
- pos = pygame.mouse.get_pos()
- if score >= 2:
- window.blit(MANUAL_CURSOR, MANUAL_CURSOR.get_rect(center = pygame.mouse.get_pos()))
- pygame.mouse.set_visible(False)
- if score >= 3:
- window.blit(MANUAL_CURSOR2, MANUAL_CURSOR2.get_rect(center = pygame.mouse.get_pos()))
- if score >= 4:
- window.blit(MANUAL_CURSOR, MANUAL_CURSOR.get_rect(center = pygame.mouse.get_pos()))
- pygame.mouse.set_visible(False)
- if score >= 5:
- window.blit(MANUAL_CURSOR2, MANUAL_CURSOR2.get_rect(center = pygame.mouse.get_pos()))
- if score >= 6:
- window.blit(MANUAL_CURSOR, MANUAL_CURSOR.get_rect(center = pygame.mouse.get_pos()))
- pygame.mouse.set_visible(False)
- if score >= 7:
- window.blit(MANUAL_CURSOR2, MANUAL_CURSOR2.get_rect(center = pygame.mouse.get_pos()))
- if score >= 8:
- window.blit(MANUAL_CURSOR, MANUAL_CURSOR.get_rect(center = pygame.mouse.get_pos()))
- pygame.mouse.set_visible(False)
- if score >= 9:
- window.blit(MANUAL_CURSOR2, MANUAL_CURSOR2.get_rect(center = pygame.mouse.get_pos()))
- if score >= 10:
- window.blit(MANUAL_CURSOR, MANUAL_CURSOR.get_rect(center = pygame.mouse.get_pos()))
- pygame.mouse.set_visible(False)
- window.blit(cointext,coinrect)
- for line in lines:
- line.draw()
- green = (105,200,100)
- def turns():
- if score == 2:
- if greenbutton2.isOver(pos):
- partics.append(Partic(190,215,100,100,white))
- if score == 2:
- if greenbutton3.isOver(pos):
- partics.append(Partic(335,215,100,100,white))
- if score == 2:
- if greenbutton4.isOver(pos):
- partics.append(Partic(71,215,100,100,white))
- if score == 2:
- if greenbutton5.isOver(pos):
- partics.append(Partic(71,350,100,100,white))
- if score == 2:
- if greenbutton6.isOver(pos):
- partics.append(Partic(190,350,100,100,white))
- if score == 2:
- if greenbutton7.isOver(pos):
- partics.append(Partic(335,350,100,100,white))
- if score == 2:
- if greenbutton8.isOver(pos):
- partics.append(Partic(70,90,100,100,white))
- if score == 2:
- if greenbutton9.isOver(pos):
- partics.append(Partic(190,90,100,100,white))
- if score == 2:
- if greenbutton10.isOver(pos):
- partics.append(Partic(335,90,100,100,white))
- #===================================================================================
- if score == 3:
- if greenbutton2.isOver(pos):
- parts.append(Parti(190,215,100,100,white))
- if score == 3:
- if greenbutton3.isOver(pos):
- parts.append(Parti(335,215,100,100,white))
- if score == 3:
- if greenbutton4.isOver(pos):
- parts.append(Parti(71,215,100,100,white))
- if score == 3:
- if greenbutton5.isOver(pos):
- parts.append(Parti(71,350,100,100,white))
- if score == 3:
- if greenbutton6.isOver(pos):
- parts.append(Parti(190,350,100,100,white))
- if score == 3:
- if greenbutton7.isOver(pos):
- parts.append(Parti(335,350,100,100,white))
- if score == 3:
- if greenbutton8.isOver(pos):
- parts.append(Parti(70,90,100,100,white))
- if score == 3:
- if greenbutton9.isOver(pos):
- parts.append(Parti(190,90,100,100,white))
- if score == 3:
- if greenbutton10.isOver(pos):
- parts.append(Parti(335,90,100,100,white))
- # -------------------------------------------------------------------------------
- if score == 4:
- if greenbutton2.isOver(pos):
- partics.append(Partic(190,215,100,100,white))
- if score == 4:
- if greenbutton3.isOver(pos):
- partics.append(Partic(335,215,100,100,white))
- if score == 4:
- if greenbutton4.isOver(pos):
- partics.append(Partic(71,215,100,100,white))
- if score == 4:
- if greenbutton5.isOver(pos):
- partics.append(Partic(71,350,100,100,white))
- if score == 4:
- if greenbutton6.isOver(pos):
- partics.append(Partic(190,350,100,100,white))
- if score == 4:
- if greenbutton7.isOver(pos):
- partics.append(Partic(335,350,100,100,white))
- if score == 4:
- if greenbutton8.isOver(pos):
- partics.append(Partic(70,90,100,100,white))
- if score == 4:
- if greenbutton9.isOver(pos):
- partics.append(Partic(190,90,100,100,white))
- if score == 4:
- if greenbutton10.isOver(pos):
- partics.append(Partic(335,90,100,100,white))
- #===================================================================================
- if score == 5:
- if greenbutton2.isOver(pos):
- parts.append(Parti(190,215,100,100,white))
- if score == 5:
- if greenbutton3.isOver(pos):
- parts.append(Parti(335,215,100,100,white))
- if score == 5:
- if greenbutton4.isOver(pos):
- parts.append(Parti(71,215,100,100,white))
- if score == 5:
- if greenbutton5.isOver(pos):
- parts.append(Parti(71,350,100,100,white))
- if score == 5:
- if greenbutton6.isOver(pos):
- parts.append(Parti(190,350,100,100,white))
- if score == 5:
- if greenbutton7.isOver(pos):
- parts.append(Parti(335,350,100,100,white))
- if score == 5:
- if greenbutton8.isOver(pos):
- parts.append(Parti(70,90,100,100,white))
- if score == 5:
- if greenbutton9.isOver(pos):
- parts.append(Parti(190,90,100,100,white))
- if score == 5:
- if greenbutton10.isOver(pos):
- parts.append(Parti(335,90,100,100,white))
- # -------------------------------------------------------------------------------
- # -------------------------------------------------------------------------------
- if score == 6:
- if greenbutton2.isOver(pos):
- partics.append(Partic(190,215,100,100,white))
- if score == 6:
- if greenbutton3.isOver(pos):
- partics.append(Partic(335,215,100,100,white))
- if score == 6:
- if greenbutton4.isOver(pos):
- partics.append(Partic(71,215,100,100,white))
- if score == 6:
- if greenbutton5.isOver(pos):
- partics.append(Partic(71,350,100,100,white))
- if score == 6:
- if greenbutton6.isOver(pos):
- partics.append(Partic(190,350,100,100,white))
- if score == 6:
- if greenbutton7.isOver(pos):
- partics.append(Partic(335,350,100,100,white))
- if score == 6:
- if greenbutton8.isOver(pos):
- partics.append(Partic(70,90,100,100,white))
- if score == 6:
- if greenbutton9.isOver(pos):
- partics.append(Partic(190,90,100,100,white))
- if score == 6:
- if greenbutton10.isOver(pos):
- partics.append(Partic(335,90,100,100,white))
- #===================================================================================
- #===================================================================================
- if score == 7:
- if greenbutton2.isOver(pos):
- parts.append(Parti(190,215,100,100,white))
- if score == 7:
- if greenbutton3.isOver(pos):
- parts.append(Parti(335,215,100,100,white))
- if score == 7:
- if greenbutton4.isOver(pos):
- parts.append(Parti(71,215,100,100,white))
- if score == 7:
- if greenbutton5.isOver(pos):
- parts.append(Parti(71,350,100,100,white))
- if score == 7:
- if greenbutton6.isOver(pos):
- parts.append(Parti(190,350,100,100,white))
- if score == 7:
- if greenbutton7.isOver(pos):
- parts.append(Parti(335,350,100,100,white))
- if score == 7:
- if greenbutton8.isOver(pos):
- parts.append(Parti(70,90,100,100,white))
- if score == 7:
- if greenbutton9.isOver(pos):
- parts.append(Parti(190,90,100,100,white))
- if score == 7:
- if greenbutton10.isOver(pos):
- parts.append(Parti(335,90,100,100,white))
- # -------------------------------------------------------------------------------
- # -------------------------------------------------------------------------------
- if score == 8:
- if greenbutton2.isOver(pos):
- partics.append(Partic(190,215,100,100,white))
- if score == 8:
- if greenbutton3.isOver(pos):
- partics.append(Partic(335,215,100,100,white))
- if score == 8:
- if greenbutton4.isOver(pos):
- partics.append(Partic(71,215,100,100,white))
- if score == 8:
- if greenbutton5.isOver(pos):
- partics.append(Partic(71,350,100,100,white))
- if score == 8:
- if greenbutton6.isOver(pos):
- partics.append(Partic(190,350,100,100,white))
- if score == 8:
- if greenbutton7.isOver(pos):
- partics.append(Partic(335,350,100,100,white))
- if score == 8:
- if greenbutton8.isOver(pos):
- partics.append(Partic(70,90,100,100,white))
- if score == 8:
- if greenbutton9.isOver(pos):
- partics.append(Partic(190,90,100,100,white))
- if score == 8:
- if greenbutton10.isOver(pos):
- partics.append(Partic(335,90,100,100,white))
- #===================================================================================
- #===================================================================================
- if score == 9:
- if greenbutton2.isOver(pos):
- parts.append(Parti(190,215,100,100,white))
- if score == 9:
- if greenbutton3.isOver(pos):
- parts.append(Parti(335,215,100,100,white))
- if score == 9:
- if greenbutton4.isOver(pos):
- parts.append(Parti(71,215,100,100,white))
- if score == 9:
- if greenbutton5.isOver(pos):
- parts.append(Parti(71,350,100,100,white))
- if score == 9:
- if greenbutton6.isOver(pos):
- parts.append(Parti(190,350,100,100,white))
- if score == 9:
- if greenbutton7.isOver(pos):
- parts.append(Parti(335,350,100,100,white))
- if score == 9:
- if greenbutton8.isOver(pos):
- parts.append(Parti(70,90,100,100,white))
- if score == 9:
- if greenbutton9.isOver(pos):
- parts.append(Parti(190,90,100,100,white))
- if score == 9:
- if greenbutton10.isOver(pos):
- parts.append(Parti(335,90,100,100,white))
- # -------------------------------------------------------------------------------
- # -------------------------------------------------------------------------------
- if score == 10:
- if greenbutton2.isOver(pos):
- partics.append(Partic(190,215,100,100,white))
- if score == 10:
- if greenbutton3.isOver(pos):
- partics.append(Partic(335,215,100,100,white))
- if score == 8:
- if greenbutton4.isOver(pos):
- partics.append(Partic(71,215,100,100,white))
- if score == 10:
- if greenbutton5.isOver(pos):
- partics.append(Partic(71,350,100,100,white))
- if score == 10:
- if greenbutton6.isOver(pos):
- partics.append(Partic(190,350,100,100,white))
- if score == 10:
- if greenbutton7.isOver(pos):
- partics.append(Partic(335,350,100,100,white))
- if score == 10:
- if greenbutton8.isOver(pos):
- partics.append(Partic(70,90,100,100,white))
- if score == 10:
- if greenbutton9.isOver(pos):
- partics.append(Partic(190,90,100,100,white))
- if score == 10:
- if greenbutton10.isOver(pos):
- partics.append(Partic(335,90,100,100,white))
- for line in lines:
- line.draw()
- #===================================================================================
- # our main loop
- runninggame = True
- while runninggame:
- clock.tick(fps)
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- runninggame = False
- if event.type == pygame.MOUSEBUTTONDOWN:
- pos = pygame.mouse.get_pos()
- if greenbutton2.isOver(pos) or greenbutton3.isOver(pos) or greenbutton4.isOver(pos) or greenbutton5.isOver(pos) or greenbutton6.isOver(pos) or greenbutton7.isOver(pos) or greenbutton8.isOver(pos) or greenbutton9.isOver(pos) or greenbutton10.isOver(pos):
- score += 1
- cointext = font.render("" + str(score), True, (255,255,255))
- coinrect.center = ((100,50))
- turns()
- player_wins, row = winner( greenbutton8, greenbutton9, greenbutton10,
- greenbutton4, greenbutton2, greenbutton3,
- greenbutton5, greenbutton6, greenbutton7 )
- if ( player_wins != None ):
- print( "Player "+ player_wins + " has won on " + row )
- redraw()
- pygame.display.update()
- pygame.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement