Advertisement
Guest User

Jigsaw Game

a guest
May 7th, 2019
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 23.46 KB | None | 0 0
  1. import pygame
  2. import random
  3. import datetime
  4. import requests
  5. import time
  6. import json
  7. from random import randint
  8. from tkinter import *
  9. import os
  10. import sqlite3
  11. # from piece import Piece
  12.  
  13. pygame.init()
  14. pygame.font.init()
  15.  
  16. global size_info
  17. size_info = pygame.display.Info()
  18.  
  19. ##########################################################################################################
  20.  
  21. def register():
  22.     global register_screen
  23.     register_screen = Toplevel(main_screen)
  24.     register_screen.title("Register")
  25.     register_screen.geometry("300x250")
  26.  
  27.     global username
  28.     global password
  29.     global username_entry
  30.     global password_entry
  31.     username = StringVar()
  32.     password = StringVar()
  33.  
  34.     Label(register_screen, text="Please enter details below", bg="white").pack()
  35.     Label(register_screen, text="").pack()
  36.     username_label = Label(register_screen, text="Username * ")
  37.     username_label.pack()
  38.     username_entry = Entry(register_screen, textvariable=username)
  39.     username_entry.pack()
  40.     password_label = Label(register_screen, text="Password * ")
  41.     password_label.pack()
  42.     password_entry = Entry(register_screen, textvariable=password, show='*')
  43.     password_entry.pack()
  44.     Label(register_screen, text="").pack()
  45.     Button(register_screen, text="Register", width=10, height=1, bg="white", command=register_user).pack()
  46.  
  47.  
  48.  
  49. def login():
  50.     global login_screen
  51.     login_screen = Toplevel(main_screen)
  52.     login_screen.title("Login")
  53.     login_screen.geometry("300x250")
  54.     Label(login_screen, text="Please enter details below to login").pack()
  55.     Label(login_screen, text="").pack()
  56.  
  57.     global username_verify
  58.     global password_verify
  59.  
  60.     username_verify = StringVar()
  61.     password_verify = StringVar()
  62.  
  63.     global username_login_entry
  64.     global password_login_entry
  65.  
  66.     Label(login_screen, text="Username * ").pack()
  67.     username_login_entry = Entry(login_screen, textvariable=username_verify)
  68.     username_login_entry.pack()
  69.     Label(login_screen, text="").pack()
  70.     Label(login_screen, text="Password * ").pack()
  71.     password_login_entry = Entry(login_screen, textvariable=password_verify, show='*')
  72.     password_login_entry.pack()
  73.     Label(login_screen, text="").pack()
  74.     Button(login_screen, text="Login", width=10, height=1, command=login_verify).pack()
  75.  
  76.  
  77. # Implementing event on register button
  78.  
  79. def register_user():
  80.     username_info = username.get()
  81.     password_info = password.get()
  82.     sql = "INSERT into Users(Username, Password, Stage, StagesCompleted) VALUES (?, ?, ?, ?)"
  83.     with sqlite3.connect("JigsawDB.db") as db:
  84.         cursor = db.cursor()
  85.         try:
  86.             cursor.execute(sql, (username_info, password_info, 1, 0))
  87.             username_entry.delete(0, END)
  88.             password_entry.delete(0, END)
  89.  
  90.             Label(register_screen, text="Registration Success", fg="green", font=("Ariel Black", 11)).pack()
  91.             register_sucess()
  92.         except sqlite3.IntegrityError:
  93.             print("Username Already In Use")
  94.             username_taken()
  95. # Implementing event on login button
  96.  
  97.  
  98. def login_verify():
  99.     global username1
  100.     username1 = username_verify.get()
  101.     password1 = password_verify.get()
  102.     username_login_entry.delete(0, END)
  103.     password_login_entry.delete(0, END)
  104.  
  105.     with sqlite3.connect("JigsawDB.db") as db:
  106.         cursor = db.cursor()
  107.         cursor.execute("SELECT Username, Password from Users where Username = ?", (username1,))
  108.         data = cursor.fetchall()
  109.     if data:
  110.         if data[0][1] == password1:
  111.             login_sucess()
  112.         else:
  113.             password_not_recognised()
  114.     else:
  115.         user_not_found()
  116.  
  117.  
  118. # Designing popup for login success
  119.  
  120. def login_sucess():
  121.     global login_success_screen
  122.     login_success_screen = Toplevel(login_screen)
  123.     login_success_screen.title("Success")
  124.     login_success_screen.geometry("150x100")
  125.     Label(login_success_screen, text="Login Success").pack()
  126.     Button(login_success_screen, text="OK", command=delete_login_success).pack()
  127.  
  128.  
  129. def register_sucess():
  130.     global register_success_screen
  131.     register_success_screen = Toplevel(main_screen)
  132.     register_success_screen.title("Success")
  133.     register_success_screen.geometry("150x100")
  134.     Label(register_success_screen, text="Registration Successful").pack()
  135.     Button(register_success_screen, text="OK", command=delete_register_success).pack()
  136.  
  137. # Designing popup for login invalid password
  138.  
  139.  
  140. def password_not_recognised():
  141.     global password_not_recog_screen
  142.     password_not_recog_screen = Toplevel(main_screen)
  143.     password_not_recog_screen.geometry("150x100")
  144.     Label(password_not_recog_screen, text="Invalid Password ").pack()
  145.     Button(password_not_recog_screen, text="OK", command=delete_password_not_recognised).pack()
  146.  
  147.  
  148. # Designing popup for user not found
  149.  
  150. def user_not_found():
  151.     global user_not_found_screen
  152.     user_not_found_screen = Toplevel(login_screen)
  153.     user_not_found_screen.geometry("150x100")
  154.     Label(user_not_found_screen, text="User Not Found").pack()
  155.     Button(user_not_found_screen, text="OK", command=delete_user_not_found_screen).pack()
  156.  
  157.  
  158. def back_to_start():
  159.     main_screen.destroy()
  160.     main_account_screen()
  161.  
  162.  
  163. def username_taken():
  164.     global user_taken_screen
  165.     user_taken_screen = Toplevel(register_screen)
  166.     user_taken_screen.geometry("150x100")
  167.     Label(user_taken_screen, text="Username Already In Use").pack()
  168.     Button(user_taken_screen, text="OK", command=back_to_start).pack()
  169.  
  170. # Deleting popups
  171.  
  172.  
  173. def delete_login_success():
  174.     login_success_screen.destroy()
  175.     login_screen.destroy()
  176.     main_screen.destroy()
  177.     main_screen.quit()
  178.     print("Sending to MENU")
  179.     menu()
  180.  
  181.  
  182. def delete_register_success():
  183.     register_success_screen.destroy()
  184.     register_screen.destroy()
  185.  
  186.  
  187. def delete_password_not_recognised():
  188.     password_not_recog_screen.destroy()
  189.  
  190.  
  191. def delete_user_not_found_screen():
  192.     user_not_found_screen.destroy()
  193.  
  194.  
  195. # Designing Main(first) window
  196.  
  197. def main_account_screen():
  198.     global main_screen
  199.     main_screen = Tk()
  200.     main_screen.geometry("300x250")
  201.     main_screen.title("Account Login")
  202.     Label(text="Select Your Choice", bg="light blue", width="300", height="2", font=("Ariel Black", 13)).pack()
  203.     Label(text="").pack()
  204.     Button(text="Login", height="3", width="30", command=login).pack()
  205.     Label(text="").pack()
  206.     Button(text="Register", height="3", width="30", command=register).pack()
  207.  
  208.     main_screen.mainloop()
  209.  
  210. ####################################################################################################################
  211.  
  212.  
  213. class Piece:  # Creates a class which stores each "Piece"
  214.     def __init__(self, frame, x, y, goal_x, goal_y):
  215.         # Each piece stores the frame, goal for x, goal for y, current x, current y and if the piece is selected
  216.         self.frame = frame
  217.         self.goal_x = goal_x
  218.         self.goal_y = goal_y
  219.         self.x = x
  220.         self.y = y
  221.         self.selected = False
  222.  
  223.     def draw(self, screen, mode):
  224.         # On Each pygame tick it will check if the item is selected or completed, if the user is on
  225.         # EASY mode then it will not show it as green when goal_x = x and goal_y = y (In the correct position)
  226.         screen.blit(self.frame, (self.x, self.y))
  227.         width, height = self.frame.get_size()
  228.         if self.completed():
  229.             if mode == "Easy":  # Checks the MODE/Difficulty
  230.                 pygame.draw.rect(screen, (0, 255, 0, 50), (self.x, self.y, width, height), 1)
  231.                 # If Easy, Draw a Green Box Around the frame. (0, 255, 0) (RGB)
  232.             else:
  233.                 pass  # If It isn't easy mode, continue.
  234.         elif self.selected:  #If the item is selected it will draw a red box around the frame.
  235.             pygame.draw.rect(screen, (255, 0, 0, 50), (self.x, self.y, width, height), 2)
  236.         else:
  237.             # If the piece isn't selected or in the correct location, draw  a black box around it.
  238.             pygame.draw.rect(screen, (0, 0, 0, 50), (self.x, self.y, width, height), 1)
  239.  
  240.     def swap(self, other):
  241.         # When Two pieces become selected, it swaps there location and stores the new locations.
  242.         self.x, other.x = other.x, self.x
  243.         self.y, other.y = other.y, self.y
  244.  
  245.     def collision(self, x, y):  # Checks if the location you clicked on has a frame/piece and if so returns it.
  246.         rect = self.frame.get_rect()
  247.         rect = rect.move(self.x, self.y)
  248.         return rect.collidepoint(x, y)
  249.  
  250.     def completed(self):  # If the piece is in the correct/completed location it shall return True
  251.         return (self.x == self.goal_x) and (self.y == self.goal_y)
  252.  
  253.  
  254. def game_over(screen):
  255.     exit_button = pygame.image.load("ExitB.png")
  256.     play_again = pygame.image.load("PlayAgain.png")
  257.     you_win = pygame.image.load("YouWin.png")
  258.  
  259.     while True:
  260.         for event in pygame.event.get():
  261.             if event.type == pygame.MOUSEBUTTONDOWN:
  262.                 mx, my = event.pos
  263.                 if mx > size_info.current_w - 115 and my < 32:
  264.                     pygame.quit()
  265.                     quit()
  266.                 elif mx < 128 and my < 32:
  267.                     loading = pygame.image.load("loading.jpg")
  268.                     loading2 = pygame.image.load("loading2.jpg")
  269.                     loading3 = pygame.image.load("loading3.jpg")
  270.                     screen.fill((255, 255, 255))
  271.                     loading = pygame.transform.scale(loading, (size_info.current_w, size_info.current_h))
  272.                     screen.blit(loading, (0, 0))
  273.                     pygame.display.update()
  274.                     time.sleep(1)
  275.                     loading2 = pygame.transform.scale(loading2, (size_info.current_w, size_info.current_h))
  276.                     screen.blit(loading2, (0, 0))
  277.                     pygame.display.update()
  278.                     time.sleep(1)
  279.                     loading3 = pygame.transform.scale(loading3, (size_info.current_w, size_info.current_h))
  280.                     screen.blit(loading3, (0, 0))
  281.                     pygame.display.update()
  282.                     time.sleep(1)
  283.                     menu()
  284.  
  285.             screen.fill((255, 255, 255))
  286.             screen.blit(you_win, (size_info.current_w // 3, size_info.current_w // 3))
  287.             screen.blit(exit_button, (size_info.current_w - 115, 0))
  288.             screen.blit(play_again, (0, 0))
  289.  
  290.             pygame.display.update()
  291.  
  292.  
  293. def get_dog_image():
  294.     found = False
  295.     while not found:
  296.         photo_id = requests.get("https://random.dog/woof").text.lower()
  297.         photo_link = "https://random.dog/" + photo_id
  298.  
  299.         if photo_id.split(".")[1].lower().endswith("mp4") or photo_id.split(".")[1].lower().endswith("gif"):
  300.             pass
  301.         else:
  302.             photo_id = photo_id.split(".")[0]
  303.             request = requests.get(photo_link)
  304.  
  305.             if request.status_code == 200:
  306.                 with open(photo_id, "wb") as photo:
  307.                     photo.write(request.content)
  308.             return str(photo_id)
  309.  
  310.  
  311. def get_cat_image():
  312.     found = False
  313.     while not found:
  314.         photo_id = requests.get("http://aws.random.cat/meow").text.lower()
  315.         photo_link = json.loads(photo_id)["file"]
  316.  
  317.         if photo_link.endswith('.gif'):
  318.             pass
  319.         else:
  320.             request = requests.get(photo_link)
  321.             name = photo_link.split("dream.io/i/")[1]
  322.             if request.status_code == 200:
  323.                 with open(name, "wb") as photo:
  324.                     photo.write(request.content)
  325.                     return str(name)
  326.  
  327.  
  328. def strip_from_sheet(sheet, start, size, columns, rows=1):
  329.     frames = []
  330.     for j in range(rows):
  331.         for i in range(columns):
  332.             location = (start[0] + size[0] * i, start[1] + size[1] * j)
  333.             frames.append(sheet.subsurface(pygame.Rect(location, size)))
  334.     return frames
  335.  
  336.  
  337. def factors(size, mode):
  338.     if mode == "Easy":
  339.         max_num = 5
  340.     elif mode == "Medium":
  341.         max_num = 15
  342.     elif mode == "Hard":
  343.         max_num = 25
  344.     else:
  345.         max_num = 5
  346.     numbers = [i for i in range(2, max_num)]
  347.     size_factors = []
  348.     for item in numbers:
  349.         if size[0] % item == 0 and size[1] % item == 0:
  350.             size_factors.append(item)
  351.         else:
  352.             pass
  353.     if len(size_factors) > 0:
  354.         return size_factors[-1]
  355.     else:
  356.         return None
  357.  
  358.  
  359. def counter(objects):
  360.     count = 0
  361.     for piece_object in objects:
  362.         if piece_object.completed():
  363.             count += 1
  364.         else:
  365.             pass
  366.     return count
  367.  
  368.  
  369. def main_game_loop(screen, objects, mode):
  370.     clock = pygame.time.Clock()
  371.     first = datetime.datetime.now()
  372.     first = first.strftime("%M%S")
  373.     game = True
  374.     while game:
  375.         second = datetime.datetime.now()
  376.         second = second.strftime("%M%S")
  377.  
  378.         total_time = int(second) - int(first)
  379.  
  380.         screen.fill((255, 255, 255))
  381.         for event in pygame.event.get():
  382.             if event.type == pygame.QUIT:
  383.                 pygame.quit()
  384.                 exit()
  385.  
  386.             if event.type == pygame.MOUSEBUTTONDOWN:
  387.                 mx, my = event.pos
  388.                 if mx > 1165 and my > 905:
  389.                     pygame.quit()
  390.                     quit()
  391.                 if event.button == 1:
  392.                     select_piece = None
  393.                     for item in objects:
  394.                         if item.selected:
  395.                             select_piece = item
  396.  
  397.                     for item in objects:
  398.                         if item.collision(mx, my):
  399.                             if select_piece:
  400.  
  401.                                 select_piece.swap(item)
  402.                                 select_piece.selected = False
  403.                             else:
  404.                                 item.selected = True
  405.  
  406.                 if event.button == 3:
  407.                     for item in objects:
  408.                         item.selected = False
  409.  
  410.         for item in objects:
  411.             item.draw(screen, mode)
  412.  
  413.         if counter(objects) == len(objects):
  414.             try:
  415.                 with sqlite3.connect("JigsawDB.db") as db:
  416.                     cursor = db.cursor()
  417.                     cursor.execute("UPDATE Users set StagesCompleted=StagesCompleted+1 where Username = ?", (username1,))
  418.             except:
  419.                 print("I cri")
  420.  
  421.             game_over(screen)
  422.             game = False
  423.         else:
  424.             my_font = pygame.font.SysFont('Arial Black', 18)
  425.  
  426.             hidden = my_font.render("Correct Pieces: HIDDEN", False, (0, 0, 0))
  427.             time_taken = my_font.render('Time: ' + str(total_time), False, (0, 0, 0))
  428.             exit_door = pygame.image.load("exit.png")
  429.             exit_door = pygame.transform.scale(exit_door, (75, 75))
  430.             screen.blit(exit_door, ((size_info.current_w // 30) * 28, size_info.current_h - 100))
  431.             if mode == "Easy" or mode == "Medium":
  432.                 scores = my_font.render(f'Correct Pieces: {counter(objects)} / {len(objects)}', False, (0, 0, 0))
  433.                 screen.blit(scores, ((size_info.current_w // 10) * 8, 0))
  434.             else:
  435.                 screen.blit(hidden, ((size_info.current_w // 10) * 8, 0))
  436.  
  437.             screen.blit(time_taken, ((size_info.current_w // 10) * 8, 20))
  438.  
  439.         pygame.display.update()
  440.         clock.tick(60)
  441.  
  442.  
  443. def shuffle(split, size, frames, screen, objects, mode):
  444.     random_indices = [i for i in range(split[0] * split[1])]
  445.     random.shuffle(random_indices)
  446.     width = size[0] / split[0]
  447.     height = size[1] / split[1]
  448.     for index, frame in enumerate(frames):
  449.         num = random_indices[index]
  450.         x = width * (num % split[0])
  451.         y = height * (num // split[0])
  452.         goal_x = width * (index % split[0])
  453.         goal_y = height * (index // split[0])
  454.         piece = Piece(frame, x, y, goal_x, goal_y)
  455.         objects.append(piece)
  456.  
  457.     main_game_loop(screen, objects, mode)
  458.  
  459.  
  460. def dog_img():
  461.     found = False
  462.     sheet = ""
  463.     while not found:
  464.         try:
  465.             sheet = pygame.image.load(get_dog_image())
  466.             found = True
  467.         except pygame.error:
  468.             pass
  469.     return sheet
  470.  
  471.  
  472. def custom_img():
  473.     import tkinter
  474.     from tkinter import filedialog
  475.     found = False
  476.     while not found:
  477.         try:
  478.             root = tkinter
  479.             root.filename = filedialog.askopenfilename(initialdir="C:\\Users\\186592\\Pictures", title="Select file",
  480.                                                        filetypes=(("png files", "*.png"), ("all files", "*.*")))
  481.             sheet = pygame.image.load(root.filename)
  482.             return sheet
  483.         except pygame.error:
  484.             pass
  485.  
  486.  
  487. def cat_img():
  488.     found = False
  489.     sheet = ""
  490.     while not found:
  491.         try:
  492.             sheet = pygame.image.load(get_cat_image())
  493.             found = True
  494.         except pygame.error:
  495.             pass
  496.     return sheet
  497.  
  498.  
  499. def adventure_img():
  500.     number = randint(1, 20)
  501.     sheet = pygame.image.load("Image" + str(number) + ".jfif")
  502.     return sheet
  503.  
  504.  
  505. def startup(dog=False, adventure=False, custom=False, cat=False, mode=""):
  506.     objects = []
  507.  
  508.     sheet = ""
  509.     split = ""
  510.  
  511.     if dog:
  512.         sheet = dog_img()
  513.     elif cat:
  514.         sheet = cat_img()
  515.     elif custom:
  516.         sheet = custom_img()
  517.     elif adventure:
  518.         sheet = adventure_img()
  519.  
  520.     sheet.set_alpha(255)
  521.  
  522.     sheet = pygame.transform.scale(sheet, ((size_info.current_w // 10) * 8, size_info.current_h))
  523.  
  524.     size = sheet.get_size()
  525.     screen = pygame.display.set_mode((size_info.current_w, size_info.current_h), pygame.FULLSCREEN)
  526.     screen.fill((255, 255, 255))
  527.     if factors(size, mode):
  528.         x = factors(size, mode)
  529.         divider = size[0] // x
  530.         split = [size[0] // divider, size[1] // divider]
  531.     frames = strip_from_sheet(sheet, (0, 0), (size[0] / split[0], size[1] / split[1]), split[0], split[1])
  532.     pygame.display.set_caption('Jigsaw Madness')
  533.  
  534.     shuffle(split, size, frames, screen, objects, mode)
  535.  
  536.  
  537. def menu():
  538.     screen = pygame.display.set_mode((size_info.current_w // 3, size_info.current_h // 2))
  539.  
  540.     easy = False
  541.     medium = False
  542.     hard = False
  543.  
  544.     mode = ""
  545.     while True:
  546.         for event in pygame.event.get():
  547.             difficulty = pygame.image.load("Difficulty.png")
  548.  
  549.             easy_photo = pygame.image.load("easy.png")
  550.             selected_easy = pygame.image.load("easyg.png")
  551.  
  552.             medium_photo = pygame.image.load("medium.png")
  553.             selected_medium = pygame.image.load("mediumg.png")
  554.  
  555.             hard_photo = pygame.image.load("hard.png")
  556.             selected_hard = pygame.image.load("hardg.png")
  557.  
  558.             exit_door = pygame.image.load("exit.png")
  559.  
  560.             dog_text = pygame.image.load("dog.png")
  561.             cat_text = pygame.image.load("cat.png")
  562.             custom_text = pygame.image.load("Custom.png")
  563.             adventure_text = pygame.image.load("adventure.png")
  564.  
  565.             exit_door = pygame.transform.scale(exit_door, (75, 75))
  566.  
  567.             my_font = pygame.font.SysFont('Arial Black', 20)
  568.             menu_text = my_font.render('MENU', False, (0, 0, 0))
  569.  
  570.             screen.fill((255, 255, 255))
  571.             try:
  572.                 username_text = my_font.render("Username: " + str(username1), False, (0, 0, 0))
  573.                 screen.blit(username_text, (5, 100))
  574.                 with sqlite3.connect("JigsawDB.db") as db:
  575.                     cursor = db.cursor()
  576.                     cursor.execute("SELECT StagesCompleted from Users where Username = ?", (username1,))
  577.                     data = cursor.fetchone()
  578.                     if data:
  579.                         Stages_Completed_text = my_font.render("Stages Completed: " + str(data[0]), False, (0, 0, 0))
  580.                         screen.blit(Stages_Completed_text, (5, 125))
  581.             except:
  582.                 print("user not logged in")
  583.                 pass
  584.  
  585.             screen.blit(dog_text, (size_info.current_w // 3 - 175, 100))
  586.             screen.blit(cat_text, (size_info.current_w // 3 - 175, 140))
  587.             screen.blit(custom_text, (size_info.current_w // 3 - 175, 180))
  588.             screen.blit(adventure_text, (size_info.current_w // 3 - 175, 220))
  589.  
  590.             screen.blit(difficulty, (0, size_info.current_h // 2 - size_info.current_h // 5))
  591.             if easy:
  592.                 screen.blit(selected_easy, (0, size_info.current_h // 2 - size_info.current_h // 8))
  593.             else:
  594.                 screen.blit(easy_photo, (0, size_info.current_h // 2 - size_info.current_h // 8))
  595.             if medium:
  596.                 screen.blit(selected_medium, (0, size_info.current_h // 2 - size_info.current_h // 11))
  597.             else:
  598.                 screen.blit(medium_photo, (0, size_info.current_h // 2 - size_info.current_h // 11))
  599.             if hard:
  600.                 screen.blit(selected_hard, (0, size_info.current_h // 2 - size_info.current_h // 18))
  601.             else:
  602.                 screen.blit(hard_photo, (0, size_info.current_h // 2 - size_info.current_h // 18))
  603.             screen.blit(exit_door, (size_info.current_w // 3 - 90, size_info.current_h // 2 - 80))
  604.             screen.blit(menu_text, (size_info.current_w // 7, 30))
  605.  
  606.             if event.type == pygame.QUIT:
  607.                 pygame.quit()
  608.                 exit()
  609.             if event.type == pygame.MOUSEBUTTONDOWN:
  610.                 mx, my = event.pos
  611.                 if 263 > my > 100 and mx > size_info.current_w // 3 - 175:
  612.                     if mode == "":
  613.                         mode = "Easy"
  614.                     if my < 140:
  615.                         startup(dog=True, mode=mode)
  616.                     elif my < 180:
  617.                         startup(cat=True, mode=mode)
  618.                     elif my < 220:
  619.                         startup(custom=True, mode=mode)
  620.                     elif my > 220:
  621.                         startup(adventure=True, mode=mode)
  622.                 elif mx < 171 and 385 < my < 498:
  623.                     easy, hard, medium = False, False, False
  624.                     if my < 417:
  625.                         easy = True
  626.                         mode = "Easy"
  627.                     elif my < 457:
  628.                         medium = True
  629.                         mode = "Medium"
  630.                     else:
  631.                         hard = True
  632.                         mode = "Hard"
  633.                 elif mx > size_info.current_w // 3 - 90 and my > size_info.current_h // 2 - 80:
  634.                     welcome_screen()
  635.         pygame.display.update()
  636.  
  637.  
  638. def welcome_screen():
  639.     screen = pygame.display.set_mode((size_info.current_w // 3, size_info.current_h // 2))
  640.     while True:
  641.         for event in pygame.event.get():
  642.             welcome = pygame.image.load("Welcome.png")
  643.             welcome = pygame.transform.scale(welcome, (size_info.current_w // 3, size_info.current_h // 2))
  644.             screen.fill((255, 255, 255))
  645.             screen.blit(welcome, (0, 0))
  646.             if event.type == pygame.QUIT:
  647.                 pygame.quit()
  648.                 exit()
  649.             if event.type == pygame.MOUSEBUTTONDOWN:
  650.                 mx, my = event.pos
  651.                 if 357 > mx > 71:  # Inbounds
  652.                     if my < 234:
  653.                         menu()
  654.                     elif 237 < my < 347:
  655.                         print("LOGIN")
  656.                         main_account_screen()
  657.                     elif 349 < my < 457:
  658.                         print("SETTINGS")
  659.                 elif mx > 357 and my > 448:
  660.                     pygame.quit()
  661.                     exit()
  662.         pygame.display.update()
  663.  
  664.  
  665. welcome_screen()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement