def selected(self, pos, *tools): if self.rect.collidepoint(pos) and self.select is False: for tool in tools: tool.select = False tool.unselect() self.surf = pygame.image.load( openfile("assets/icons/eraser_selected.png")).convert_alpha() self.select = True elif self.rect.collidepoint(pos) and self.select is True: self.surf = pygame.image.load( openfile("assets/icons/eraser.png")).convert_alpha() self.select = False
def display_themes(_index): themes = display_themes_util() font_theme = pygame.font.Font(openfile('assets/fonts/koliko-Regular.ttf'), 60) try: _theme = themes[_index] screen.blit(font_theme.render(_theme[0], True, (255, 255, 255)), ((480 - font_theme.size(_theme[0])[0]) // 2, 395)) screen.blit( pygame.transform.scale(pygame.image.load(openfile(_theme[1])), (int(120 * 0.75), int(200 * 0.75))), (195, 189)) except IndexError: pass
def gen_profile_data(user): img = Image.new('RGBA', (480, 640), (0, 0, 0, 0)) draw = ImageDraw.Draw(img) font_level = ImageFont.truetype(openfile("assets/fonts/koliko-Regular.ttf"), 18) font_score = ImageFont.truetype(openfile("assets/fonts/koliko-Regular.ttf"), 26) font_name = ImageFont.truetype(openfile("assets/fonts/koliko-Regular.ttf"), 35) bg = Image.open(openfile('assets/menu/stats.png')) img.paste(bg, (0, 0), mask=bg) level = Image.open(openfile('assets/menu/banner.png')) if user[0]["profile_pic"] is True: main = Image.open(openfile('assets/menu/main_menu_bk.png')) mask = Image.new('L', (35, 35), 0) small = Image.open(openfile(f"data/small{user[0]['extention']}")) draw_m = ImageDraw.Draw(mask) draw_m.ellipse((0, 0) + (35, 35), fill=255) small = ImageOps.fit(small, mask.size, centering=(0.5, 0.5)) small.putalpha(mask) main.paste(small, (14, 17), mask=small) main.save(openfile('assets/menu/main_menu.png')) mask = Image.new('L', (89, 89), 0) large = Image.open(openfile(f"data/large{user[0]['extention']}")) draw_m = ImageDraw.Draw(mask) draw_m.ellipse((0, 0) + (89, 89), fill=255) large = ImageOps.fit(large, mask.size, centering=(0.5, 0.5)) large.putalpha(mask) img.paste(large, (195, 128), mask=large) img.paste(level, (218, 210), mask=level) draw.text(((258 - font_level.getsize(str(user[0]['level']))[0]) / 2 + (230 / 2), -420 + 640), str(user[0]['level']), font=font_level, fill=(255, 255, 255)) draw.text(((411 - font_level.getsize(str(user[0]['username']))[0]) / 2 + (65 / 2), 640 - 394), str(user[0]['username']), font=font_score, fill=(0, 0, 0)) draw.text(((246 - font_level.getsize(str(user[0]['high_score']))[0]) / 2 + (101 / 2), 640 - 331), str(user[0]['high_score']), font=font_name, fill=(0, 0, 0)) draw.text(((392 - font_level.getsize(str(user[0]['last_score']))[0]) / 2 + (246 / 2), 640 - 331), str(user[0]['last_score']), font=font_name, fill=(0, 0, 0)) name = f"menu_{datetime.datetime.now().strftime('%H%M%S%d%m%Y')}" img.save(openfile(f"assets/menu/{name}.png")) return f"assets/menu/{name}.png"
def __init__(self): self.surf = pygame.image.load( openfile("assets/icons/hand.png")).convert_alpha() self.rect = self.surf.get_rect(top=3 * 32) self.initial = [0, 0] self.new_pos = [0, 0] self.select = False
def __init__(self): self.surf = pygame.image.load( openfile("assets/icons/marquee.png")).convert_alpha() self.rect = self.surf.get_rect(top=2 * 32) self.initial = [0, 0] self.rect_select = [0, 0, 0, 0] self.diff = [0, 0] self.select = False self.selection = [0, 0, 0, 0]
def gen_profile_photos(path): extention = os.path.splitext(path)[1] shutil.copy(path, openfile(f"data/photo{extention}")) small = Image.open(openfile(f"data/photo{extention}")) small = small.resize((35, 35), Image.ANTIALIAS) small.save(openfile(openfile(f"data/small{extention}")), quality=200) large = Image.open(openfile(f"data/photo{extention}")) large = large.resize((89, 89), Image.ANTIALIAS) large.save(openfile(openfile(f"data/large{extention}")), quality=200)
def display_themes_util(): available_themes = os.listdir(openfile('assets/textures/')) available_themes_ = [ available_themes[i].split('_') for i in range(0, len(available_themes)) ] themes = [] for _index, _theme in enumerate(available_themes_): __theme__ = "" for __theme in _theme: __theme__ += __theme.capitalize() + " " themes.append([ __theme__.strip(), 'assets/textures/' + available_themes[_index] + '/pack.png', 'assets/textures/' + available_themes[_index] ]) return themes
from cryptography.fernet import Fernet from scripts import openfile with open(openfile('data/56f3db44e25e3057caa2b78751fa212c'), 'rb') as file: key = Fernet(file.read()) def encrypt(): with open(openfile('data/users.json'), 'rb') as f: encrypted = f.read() with open(openfile('data/users.json'), 'wb') as f: f.write(key.encrypt(encrypted)) def decrypt(): with open(openfile('data/users.json'), 'rb') as f: encrypted = f.read() with open(openfile('data/users.json'), 'wb') as f: f.write(key.decrypt(encrypted)) def generate_key(): global key with open(openfile('data/56f3db44e25e3057caa2b78751fa212c'), 'wb') as f: key = Fernet.generate_key() f.write(key)
import time import scripts.tetris.board as board import math from itertools import permutations from scripts import users pygame.init() pygame.mixer.init() user = users.load_user() # pygame.mixer.music.load(openfile("assets/music/Tetris.mp3")) # pygame.mixer.music.set_volume(0.25) # pygame.mixer.music.play(loops=-1) path = openfile(f"assets/textures/{user[0]['theme']}") CURRENT = None gap = 40 font = pygame.font.Font(openfile('assets/fonts/Square.ttf'), 40) ROWS, COLS = 20, 10 WIDTH, HEIGHT = (gap * 10) + (gap * 5 + 10), gap * 20 os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % ((1920 - WIDTH) // 2, (1080 - HEIGHT) // 2) running = True clock = pygame.time.Clock() TETRIMINOS = [] choices = list(permutations(range(0, 7))) next_piece_surf = pygame.Surface((gap * 5 + 10, HEIGHT)) state = board.Board(gap, path, ROWS, COLS) HELD = None line = 0
import random import os import tkinter from tkinter.filedialog import askopenfile from scripts import users, openfile, show_stats pygame.font.init() pygame.init() os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % ((1920 - 480) // 2, (1080 - 640) // 2) screen = pygame.display.set_mode((480, 640), pygame.NOFRAME) user = users.load_user() THEME_SELECTOR = pygame.image.load(openfile('assets/menu/theme_selector.png')) PROFILE_CREATE = pygame.image.load(openfile('assets/menu/create_profile.png')) MAIN = pygame.image.load(openfile("assets/menu/main_menu.png")) current_page = 0 pygame.display.set_caption('Play Tetris!') img = MAIN date_font = pygame.font.Font(openfile('assets/fonts/koliko-Regular.ttf'), 19) token = -1 running = True solo = pygame.rect.Rect([108, 251, 263, 91]) multiplayer = pygame.Rect([108, 376, 263, 90]) theme_creator = pygame.Rect([108, 500, 263, 91]) theme_select = pygame.Rect([105, 494, 275, 70]) theme = pygame.Rect([287, 12, 49, 50]) profile = pygame.Rect([10, 16, 175, 35])
def save_user(user): with open(openfile('data/users.json'), 'w') as f: json.dump(user, f, indent=6) encrypt.encrypt()
def unselect(self): if self.select is False: self.surf = pygame.image.load( openfile("assets/icons/pencil.png")).convert_alpha()
def __init__(self): self.surf = pygame.image.load( openfile("assets/icons/pencil_selected.png")).convert_alpha() self.rect = self.surf.get_rect() self.select = True
def textbox(_text): font = pygame.font.Font(openfile('assets/fonts/koliko-Regular.ttf'), 25) screen.blit(font.render(_text, True, (0, 0, 0)), (94, 290))
def generate_key(): global key with open(openfile('data/56f3db44e25e3057caa2b78751fa212c'), 'wb') as f: key = Fernet.generate_key() f.write(key)
def select_(self): if self.select is True: self.surf = pygame.image.load( openfile("assets/icons/pencil_selected.png")).convert_alpha()
def encrypt(): with open(openfile('data/users.json'), 'rb') as f: encrypted = f.read() with open(openfile('data/users.json'), 'wb') as f: f.write(key.encrypt(encrypted))
def __init__(self): self.surf = pygame.image.load( openfile("assets/icons/eraser.png")).convert_alpha() self.rect = self.surf.get_rect(top=32) self.select = False
def load_user(): encrypt.decrypt() with open((openfile('data/users.json')), 'r+') as f: user = json.load(f) encrypt.encrypt() return user
from itertools import permutations from random import choice import pygame from scripts.multiplayer import board, tetriminos from scripts import openfile from scripts import users from scripts.multiplayer import network pygame.init() pygame.mixer.init() user = users.load_user() pygame.mixer.music.load(openfile("assets/music/Tetris.mp3")) pygame.mixer.music.set_volume(0.25) pygame.mixer.music.play(loops=-1) path = openfile(f"assets/textures/{user[0]['theme']}") CURRENT = None gap = 40 font = pygame.font.Font(openfile('assets/fonts/Square.ttf'), 40) ROWS, COLS = 20, 10 WIDTH, HEIGHT = (gap * 10) + (gap * 5 + 10), gap * 20 os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % ((1920 - WIDTH) // 2, (1080 - HEIGHT) // 2) running = True clock = pygame.time.Clock() TETRIMINOS = []