All pastes #339619 Raw Edit

Stuff

public text v1 · immutable
·published 2007-02-04 05:56 UTC
rendered paste body
import pygame
from pygame.locals import *


#makes the tic tac toe board
def initBoard(ttt):
	
	background = pygame.Surface(ttt.get_size())
	background = background.convert()
	background.fill((255, 255, 255))
	
	#verticle lines
	pygame.draw.line (background, (0,0,0), (100, 0), (100, 300), 2)
	pygame.draw.line (background, (0,0,0), (200, 0), (200, 300), 2)
	#horizontal lines
	pygame.draw.line (background, (0,0,0), (0, 100), (300, 100), 2)
	pygame.draw.line (background, (0,0,0), (0, 200), (300, 200), 2) 
	
	return background

#Draws the board onto the screen
def showBoard(ttt, board):
	#redraws the board (board) on the screen (ttt)
	
	ttt.blit(board, (0,0))
	pygame.display.flip()
	
#determines the mouse cordinates and translates into the board's row and columb	
def boardPos(mouseX, MouseY):
	#determine the row the user clicked
	if (mouseY < 100):
		row = 0
	elif (mouseY < 200):
		row = 1
	else:
		row = 2
	#determine the column the user clicked
	if (mouseX < 100):
		row = 0
	elif (mouseX < 200):
		row = 1
	else:
		row = 2
	#return the row and column
	return (row, col)
	
#determine where the user clicked on the board and draw X or O	
def clickBoard (board):
	global grid, XO
	(mouseX, mouseY) = pygame.mouse.get_pos()
	(row, col) = boardPos(mouseX, mouseY)
	#make sure this space isnt used
	if ((grid[row][col] == "X") or (grid[row][col] == "O")):
		return
	#draw an X or O
	drawMove(board,row,col,XO)
	#toggle other player's move
	if (XO == "X"):
		XO = "O"
	else:
		XO = "X"	

#determines where the curser is and draws an x or an o when left clicked
def drawMove(board, boardRow, boardCol, Piece):
	#determine the center of the space
	centerX = boardCol * 100 + 50
	centerY = boardRow * 100 + 50
	#draw the peice
	if (Peice == "O"):
		pygame.draw.circle(board, (0,0,0), (centerX, centerY), 44, 2)
	else:
		pygame.draw.line(board, (0,0,0), (centerX - 22, centerY - 22), \
			
			(centerX + 22, centerY +22), 2)
		pygame.draw.line(board, (0,0,0), (centerX + 22, centerY - 22), \
			(centerX - 22, centerY + 22), 2)
	#mark the board space as used
	grid[boardRow][boardCol] = Peice

#tracks which spaces have been used and who's turn it is
XO = "X"
#declares an empty grid
grid = [[None, None, None],
        [None, None, None], 
        [None, None, None]]
	
def gameWon(board):

        # determine if anyone has won the game

        # --------------------------------

        # board : the game board surface

        
	global grid, winner

     

        # check for winning rows

        for row in range (0, 3):

            if ((grid [row][0] == grid[row][1] == grid[row][2]) and \

               (grid [row][0] is not None)):

                # this row won

                winner = grid[row][0]

                pygame.draw.line (board, (250,0,0), (0, (row + 1)*100 - 50), \

                                  (300, (row + 1)*100 - 50), 2)

                break

     

        # check for winning columns

        for col in range (0, 3):

            if (grid[0][col] == grid[1][col] == grid[2][col]) and \
               (grid[0][col] is not None):

                # this column won

                winner = grid[0][col]

                pygame.draw.line (board, (250,0,0), ((col + 1)* 100 - 50, 0), \

                                  ((col + 1)* 100 - 50, 300), 2)

                break

     

        # check for diagonal winners

        if (grid[0][0] == grid[1][1] == grid[2][2]) and \
           (grid[0][0] is not None):

            # game won diagonally left to right

            winner = grid[0][0]

            pygame.draw.line (board, (250,0,0), (50, 50), (250, 250), 2)

     

        if (grid[0][2] == grid[1][1] == grid[2][0]) and \
           (grid[0][2] is not None):

            # game won diagonally right to left

            winner = grid[0][2]

            pygame.draw.line (board, (250,0,0), (250, 50), (50, 250), 2) 
	
pygame.init()

ttt = pygame.display.set_mode((300, 325))

pygame.display.set_caption = ('Tic Tac Toe')

running = 1

board = initBoard(ttt)

while(running ==1):
	
	for event in pygame.event.get():
		
		if event.type is QUIT:
			running = 0
		
		elif event.type is MOUSEBUTTONDOWN:
			clickBoard(board)
	#checks if game has a winner
	gameWon(board)			
	#updates the display
	showBoard(ttt, board)
############################################
#Traceback (most recent call last):
#  File "/home/surgy/pygame learning scripts/tictactoe.py", line 179, in ?
#    clickBoard(board)
#  File "/home/surgy/pygame learning scripts/tictactoe.py", line 51, in clickBoard
#    (row, col) = boardPos(mouseX, mouseY)
#  File "/home/surgy/pygame learning scripts/tictactoe.py", line 31, in boardPos
#    if (mouseY < 100):
#NameError: global name 'mouseY' is not defined