136 lines
4.5 KiB
Python
136 lines
4.5 KiB
Python
|
import math
|
||
|
from fast_and_trash import *
|
||
|
import pygame
|
||
|
|
||
|
|
||
|
class Mouse:
|
||
|
|
||
|
points = 0
|
||
|
|
||
|
def __init__(self, mouse_pos):
|
||
|
self.mouse_pos = mouse_pos
|
||
|
|
||
|
def update(self, Win_size, Default_size):
|
||
|
self.mouse_pos = pygame.mouse.get_pos()
|
||
|
self.mouse_pos = [round(self.mouse_pos[0] * (Default_size[0] / Win_size[0])),
|
||
|
round(self.mouse_pos[1] * (Default_size[1] / Win_size[1]))]
|
||
|
|
||
|
def in_circle(self, circle_cords, radius):
|
||
|
if distance_indicator(self.mouse_pos, circle_cords) < radius:
|
||
|
return True
|
||
|
else:
|
||
|
return False
|
||
|
|
||
|
def check_availability(self, color_name, radius, game, scroll):
|
||
|
scrolled_pos = [self.mouse_pos[0] + scroll.scroll[0],
|
||
|
self.mouse_pos[1] + scroll.scroll[1]]
|
||
|
|
||
|
collided = []
|
||
|
for circle in game.circles:
|
||
|
dist = distance_indicator(circle.center, scrolled_pos)
|
||
|
|
||
|
if dist < (radius + circle.radius):
|
||
|
if dist < radius or dist < circle.radius:
|
||
|
return False
|
||
|
collided.append(circle)
|
||
|
|
||
|
if collided:
|
||
|
|
||
|
# if u try placing red circle
|
||
|
if color_name == "red":
|
||
|
for circle in collided:
|
||
|
if circle.color == "purple":
|
||
|
return False
|
||
|
|
||
|
return True
|
||
|
|
||
|
# if u try placing blue circle
|
||
|
if color_name == "blue":
|
||
|
usable = False
|
||
|
|
||
|
for circle in collided:
|
||
|
if circle.color not in ["black", "smaragd", "red"]:
|
||
|
return False
|
||
|
else:
|
||
|
usable = True
|
||
|
|
||
|
if usable:
|
||
|
return True
|
||
|
else:
|
||
|
return False
|
||
|
|
||
|
# if u try placing green circle
|
||
|
if color_name == "green":
|
||
|
usable = [False, False]
|
||
|
|
||
|
for circle in collided:
|
||
|
if circle.color not in ["black", "smaragd", "red", "blue"]:
|
||
|
return False
|
||
|
elif circle.color in ["black", "smaragd"]:
|
||
|
usable = [True, True]
|
||
|
elif circle.color == "red":
|
||
|
usable[0] = True
|
||
|
else:
|
||
|
usable[1] = True
|
||
|
|
||
|
if usable[0] and usable[1]:
|
||
|
return True
|
||
|
else:
|
||
|
return False
|
||
|
|
||
|
# if u try placing yellow circle
|
||
|
if color_name == "yellow":
|
||
|
usable = [False, False]
|
||
|
for circle in collided:
|
||
|
if circle.color not in ["red", "green", "black", "smaragd"]:
|
||
|
return False
|
||
|
elif circle.color in ["black", "smaragd"]:
|
||
|
usable = [True, True]
|
||
|
elif circle.color == "red":
|
||
|
usable[0] = True
|
||
|
else:
|
||
|
usable[1] = True
|
||
|
|
||
|
if usable[0] and usable[1]:
|
||
|
return True
|
||
|
else:
|
||
|
return False
|
||
|
|
||
|
# if u try placing purple circle
|
||
|
if color_name == "purple":
|
||
|
usable = [False, False, False, False]
|
||
|
for circle in collided:
|
||
|
if circle.color not in ["red", "blue", "green", "yellow", "black", "smaragd"]:
|
||
|
return False
|
||
|
elif circle.color in ["black", "smaragd"]:
|
||
|
usable = [True, True, True, True]
|
||
|
elif circle.color == "red":
|
||
|
usable[0] = True
|
||
|
elif circle.color == "blue":
|
||
|
usable[1] = True
|
||
|
elif circle.color == "green":
|
||
|
usable[2] = True
|
||
|
else:
|
||
|
usable[3] = True
|
||
|
|
||
|
if usable[0] and usable[1] and usable[2] and usable[3]:
|
||
|
return True
|
||
|
else:
|
||
|
return False
|
||
|
|
||
|
# if u try placing smaragd circle
|
||
|
if color_name == "smaragd":
|
||
|
usable = False
|
||
|
for circle in collided:
|
||
|
if circle.color not in ["purple", "black"]:
|
||
|
return False
|
||
|
else:
|
||
|
usable = True
|
||
|
|
||
|
if usable:
|
||
|
return True
|
||
|
else:
|
||
|
return False
|
||
|
else:
|
||
|
return False
|