Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,111 @@
|
|||
# Set the number of cells of the board here 9, 16, 25 etc
|
||||
num_grid_cells = 16
|
||||
piece_color = color(255, 175, 0)
|
||||
background_color = color(235, 231, 178)
|
||||
piece_shadow_dark = color(206, 141, 0)
|
||||
piece_shadow_light = color(255, 214, 126)
|
||||
|
||||
def setup():
|
||||
global piece, piece_number, row_length, piece_side_length
|
||||
size(400, 400) # Window size width and height must be egual
|
||||
background(200, 50, 0)
|
||||
row_length = int(sqrt(num_grid_cells))
|
||||
piece_side_length = width / row_length
|
||||
textSize(piece_side_length / 2.7)
|
||||
textAlign(CENTER)
|
||||
# Setting the x and y values for each cell on grid
|
||||
xy_val = []
|
||||
t = 0
|
||||
for i in range(0, num_grid_cells, row_length):
|
||||
for j in range(row_length):
|
||||
xy_val.append((j * piece_side_length,
|
||||
t * piece_side_length))
|
||||
t += 1
|
||||
piece = [] # Puzzle piece objects
|
||||
placed = [False] * num_grid_cells # to help placing the pieces randomly
|
||||
piece_number = 0
|
||||
# Placing pieces randomly in grid
|
||||
while (piece_number < num_grid_cells):
|
||||
p = int(random(0, num_grid_cells))
|
||||
# Once placed will be set to True to avoid adding again at this location
|
||||
if not placed[p]:
|
||||
# Creating the piece objects list
|
||||
piece.append(PuzzlePiece(piece_number, xy_val[p][0], xy_val[p][1]))
|
||||
placed[p] = True
|
||||
piece[piece_number].design() # Draw newly create piece object
|
||||
piece_number += 1
|
||||
|
||||
def draw():
|
||||
# Search all piece object indexes and verify which one is mouse pressed
|
||||
for i in range(num_grid_cells):
|
||||
if (mousePressed and
|
||||
piece[i].x <= mouseX <= piece[i].x + piece_side_length and
|
||||
piece[i].y <= mouseY <= piece[i].y + piece_side_length and
|
||||
piece[i].piece_number != 15):
|
||||
if (pieceMove(piece[num_grid_cells - 1].x, piece[num_grid_cells - 1].y, piece[i].x, piece[i].y)):
|
||||
# Remember x and y value of final piece index (white piece)
|
||||
temp_x = int(piece[num_grid_cells - 1].x)
|
||||
temp_y = int(piece[num_grid_cells - 1].y)
|
||||
# Store clicked x and y value in final index of piece list
|
||||
piece[num_grid_cells - 1].set_pos(piece[i].x, piece[i].y)
|
||||
# Store temp x and y value (the last/previous final index
|
||||
# values) in current clicked piece
|
||||
piece[i].set_pos(temp_x, temp_y)
|
||||
# draw the final index piece index (only final piece index is
|
||||
# painted white)
|
||||
piece[num_grid_cells - 1].design()
|
||||
piece[i].design() # Draw a numbered piece of current index
|
||||
|
||||
def pieceMove(final_index_piece_x, final_index_piece_y, current_index_x, current_index_y):
|
||||
# If both x's from clicked and white piece have same value meaning in same horizontal column
|
||||
# AND current clicked y value is equal to white piece y value - piece side lenght OR
|
||||
# current clicked y value + piece side lenght is egual to white piece y
|
||||
if (current_index_x == final_index_piece_x and (current_index_y == final_index_piece_y - piece_side_length or
|
||||
(current_index_y == final_index_piece_y + piece_side_length))):
|
||||
return True
|
||||
# If both y's from clicked and white piece have same value meaning in same vertical column AND current clicked x value
|
||||
# is equal to white piece x value - piece side lenght OR current clicked x value + piece side lenght is
|
||||
# egual to white piece x
|
||||
elif (current_index_y == final_index_piece_y and (current_index_x == final_index_piece_x - piece_side_length or
|
||||
(current_index_x == final_index_piece_x + piece_side_length))):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
class PuzzlePiece:
|
||||
|
||||
def __init__(self, pn, xp, yp):
|
||||
self.piece_number = pn
|
||||
self.x = xp
|
||||
self.y = yp
|
||||
|
||||
def set_pos(self, xp, yp):
|
||||
self.x = xp
|
||||
self.y = yp
|
||||
|
||||
def design(self):
|
||||
noStroke()
|
||||
fill(piece_color)
|
||||
if (self.piece_number == num_grid_cells - 1):
|
||||
fill(background_color)
|
||||
rect(self.x + 1, self.y + 1,
|
||||
piece_side_length - 1, piece_side_length - 1)
|
||||
if (self.piece_number != num_grid_cells - 1):
|
||||
fill(0) # Black text shadow
|
||||
text(self.piece_number + 1, self.x + piece_side_length / 2 + 2,
|
||||
self.y + piece_side_length / 2 + textAscent() / 2)
|
||||
fill(255)
|
||||
text(self.piece_number + 1, self.x + piece_side_length / 2,
|
||||
self.y + piece_side_length / 2 + textAscent() / 2)
|
||||
stroke(piece_shadow_dark)
|
||||
line(self.x + piece_side_length - 1, self.y + 1, self.x +
|
||||
piece_side_length - 1, self.y + piece_side_length - 1) # Right side shadow
|
||||
line(self.x + 2, self.y + piece_side_length, self.x +
|
||||
piece_side_length - 1, self.y + piece_side_length) # Bottom side shadow
|
||||
stroke(piece_shadow_light)
|
||||
# Left bright
|
||||
line(self.x + 2, self.y - 1, self.x + 2,
|
||||
self.y + piece_side_length)
|
||||
# Upper bright
|
||||
line(self.x + 2, self.y + 1, self.x +
|
||||
piece_side_length - 1, self.y + 1)
|
||||
Loading…
Add table
Add a link
Reference in a new issue