Computer Programing
Wednesday, November 19, 2014
code - Mastermind_game
author__ = 'hayleyfouratt'
from graphics import *
from random import randint
g_window_width = 360
g_window_height = 700
leftmost_x = 50
palette_y = g_window_height - 50
circle_radius = 20
circle_diameter = 2 * circle_radius
h_circle_spacing = 5
v_circle_spacing = 10
exit_x = 10 + circle_radius
exit_y = 30
state_x = g_window_width - circle_radius
state_y = exit_y
circle_width = 1
secret_code_x = exit_x
#exit_x = g_window_width - circle_radius
secret_code_y = exit_y
guess_y = palette_y - 100
guess_x = leftmost_x + circle_radius + h_circle_spacing
feedback_circle_radius = 5
feedback_x = leftmost_x + 5 * circle_radius * 2 + 4 * h_circle_spacing + feedback_circle_radius
feedback_y = 540
feedback_h_spacing = 20
feedback_v_spacing = 20
secret_code_x = guess_x
secret_code_y = 150
palette_colors = ("green", "orange", "dark blue", "yellow", "dark red", "light blue")
num_palette_colors = len(palette_colors)
center_x = 100
center_y = 150
def create_circle(center_x, center_y, radius):
center = Point(center_x, center_y)
circle = Circle(center, radius)
return circle
def create_exit_circle(center_x, center_y, radius):
exit_circle = create_circle(center_x, center_y, radius)
exit_circle.setFill('red')
return exit_circle
def create_state_circle(center_x, center_y, radius):
state_circle = create_circle(center_x, center_y, radius)
state_circle.setFill('white')
return state_circle
def color_palette():
color_palette[0]('green')
color_palette[1]('orange')
color_palette[2]('dark blue')
color_palette[3]('yellow')
color_palette[4]('dark red')
color_palette[5]('light blue')
return
def palette_circles(left_circle_center_x, left_circle_center_y, radius, palette_colors):
palette_circle = []
x = left_circle_center_x
for i in range(num_palette_colors):
circle = create_circle(x, left_circle_center_y, radius)
circle.setFill(palette_colors[i])
palette_circle.append(circle)
x += circle_diameter + h_circle_spacing
return palette_circle
def skel_circle(left_circle_center_x, left_circle_center_y, radius):
skel = []
x = left_circle_center_x
for i in range(4):
circle = create_circle(x, left_circle_center_y, radius)
circle.setFill('white')
skel.append(circle)
x += circle_diameter + h_circle_spacing
return skel
def secret_code_colors(color_palette):
secret_colors = []
for i in range(4):
secret_colors.append(palette_colors[randint(0, num_palette_colors-1)])
return secret_colors
def secret_code_circles(left_circle_center_x, left_circle_center_y, radius, secret_code):
secret_circles = []
x = left_circle_center_x
for i in range(4):
circle = create_circle(x, left_circle_center_y, radius)
circle.setFill(secret_code[i])
secret_circles.append(circle)
x += circle_diameter + h_circle_spacing
return secret_circles
def create_and_display_final_text(final_text_x, final_text_y, text_to_use):
anchor_point = Point(final_text_x, final_text_y)
text = Text(anchor_point, text_to_use)
text.setSize(22)
text.setStyle("bold")
return text
def find_clicked_circle(click_point, list_of_circles):
for i in range (len(list_of_circles)):
if is_click_in_circle(click_point,list_of_circles[i]):
return i
def is_click_in_circle(click_point, circle):
center_x = circle.getCenter().getX()
center_y = circle.getCenter().getY()
radius = circle_radius
if center_x - radius < click_point.getX() < center_x + circle_radius and\
center_y - radius < click_point.getY() < center_y + circle_radius:
return True
else:
return False
def move_circles_up(circles, dy):
for i in range(len(circles)):
circles[i].move(0, -dy)
def guess_is_right(guess_colors, secret_code_colors):
if len(guess_colors) == len(secret_code_colors):
for i in range(len(guess_colors)):
if secret_code_colors[i] != guess_colors[i]:
return False
return True
return False
def create_feedback_skel():
feedback_skel = []
x = feedback_x
for i in range(2):
circle = create_circle(x, feedback_y, feedback_circle_radius)
circle.setFill('white')
feedback_skel.append(circle)
x += (feedback_circle_radius * 2) + feedback_h_spacing
x = feedback_x
for i in range(2):
circle = create_circle(x, feedback_y + feedback_h_spacing, feedback_circle_radius)
circle.setFill('white')
feedback_skel.append(circle)
x += (feedback_circle_radius * 2) + feedback_v_spacing
return feedback_skel
def create_feedback_circles(secret_code_colors, guess_code_colors, feedback_skel_circles):
feedback_circles = []
guess_color_used = [False, False, False, False]
secret_color_used = [False, False, False, False]
feedback_idx = 0
for i in range(4):
if secret_code_colors[i] == guess_code_colors[i]:
guess_color_used[i] = secret_color_used[i] = True
c = feedback_skel_circles[feedback_idx].clone()
feedback_idx += 1
c.setFill('red')
feedback_circles.append(c)
for i in range(4):
if not guess_color_used[i]:
for j in range(4):
if not secret_color_used[j] and secret_code_colors[j] == guess_code_colors[i]:
c = feedback_skel_circles[feedback_idx].clone()
c.setFill('white')
feedback_circles.append(c)
feedback_idx += 1
secret_color_used[j] = True
break
return feedback_circles
def main():
win = GraphWin('Animation', 380, 700, autoflush=False)
#win = GraphWin('Animation', 700, 700, autoflush=False)
count = 0
center_x = 100
center_y = 100
left_circle_center_x = 100
left_circle_center_y = 100
#create_circle(Point(center_x, center_y), circle_radius)
#create_circle.draw(win)
exit_circle = create_exit_circle(exit_x, exit_y, circle_radius)
exit_circle.draw(win)
state_circle = create_state_circle(state_x, state_y, circle_radius)
state_circle.draw(win)
palette_circle = palette_circles(leftmost_x, palette_y, circle_radius, palette_colors)
for i in range(len(palette_circle)):
palette_circle[i].draw(win)
skel_circles = skel_circle(guess_x, guess_y, circle_radius)
for i in range(len(skel_circles)):
skel_circles[i].draw(win)
secret_colors = secret_code_colors(palette_colors)
secret_circles = secret_code_circles(secret_code_x, secret_code_y, circle_radius, secret_colors)
for i in range(len(secret_circles)):
secret_circles[i].draw(win)
feedback_skel = create_feedback_skel()
for i in range(8):
guess_colors = [None, None, None, None]
for j in range(4):
click_point = win.getMouse()
if is_click_in_circle(click_point, exit_circle):
win.close()
return
if find_clicked_circle(click_point, palette_circle) is not None:
idx = find_clicked_circle(click_point, palette_circle)
state_circle.setFill(palette_colors[idx])
click_point = win.getMouse()
if find_clicked_circle(click_point, skel_circles) is not None:
idx2 = find_clicked_circle(click_point, skel_circles)
guess_colors[idx2] = palette_colors[idx]
circle = skel_circles[idx2].clone()
circle.setFill(palette_colors[idx])
circle.draw(win)
state_circle.setFill('white')
feedback_circles = create_feedback_circles(secret_colors, guess_colors, feedback_skel)
for k in range(len(feedback_circles)):
feedback_circles[k].draw(win)
move_circles_up(skel_circles, circle_diameter + v_circle_spacing)
move_circles_up(feedback_skel, circle_diameter + v_circle_spacing)
if guess_is_right:
text = create_and_display_final_text(180, exit_y + 60, "You Win")
print(text)
else:
text = create_and_display_final_text(180, exit_y + 60, "You Lose")
print(text)
text.draw(win)
mouse_click = win.getMouse()
win.getMouse()
win.close()
main()
function - create_rectangle
def draw_rectangle(top_left_x, top_left_y, width, height, color):
point = Point(top_left_x, top_left_y)
point2 = Point(top_left_x + width, top_left_y + height)
rectangle = Rectangle(point, point2)
rectangle.draw(window)
rectangle.setOutline('red')
rectangle.setFill(color)
function - create_circle
def main():
radius = 20
diameter = 2 * radius
v_distance_between_ball_centers = 100
bottom_ball_initial_y = 500
x_ball_center = 250
win = GraphWin('Animation', 600, 600, autoflush=False)
c1_center = Point(x_ball_center, bottom_ball_initial_y)
c1 = Circle(c1_center, radius)
c1.setFill('blue')
c1.draw(win)
function - matrix/array
def create_matrix(square_size):
array = []
for i in range(square_size):
array.append([])
for j in range(square_size):
array[i].append(0)
return array
Subscribe to:
Posts (Atom)