class WinScreen(Screen): def __init__(self, gm): super().__init__() self.mainmenu_button = Button(50, 100, 200, 50, "Main Menu", gm) self.quit_button = Button(300, 100, 200, 50, 'Quit Game', gm) def run(self, gm): click = False running = True pygame.mixer.Channel(0).play(pygame.mixer.Sound("sounds/Win.ogg")) while running: gm.clock.tick(60) gm.fake_screen.blit(gm.game_screen.background, gm.game_screen.background.get_rect()) gm.game_screen.hero.draw(gm) self.draw_text('You win', gm.font_big, (255, 255, 255), gm.fake_screen, (960, 350)) self.draw_text('Score: {}'.format(int(gm.game_screen.score)), gm.font_med, (255, 255, 255), gm.fake_screen, (960, 550)) mx, my = gm.mousepos #Avalia botão quit if self.quit_button.contour.collidepoint((mx, my)): self.quit_button.draw(True, gm) if click: gm.actual_screen = gm.quit_confirmation_screen running = False else: self.quit_button.draw(False, gm) #Avalia botão menu if self.mainmenu_button.contour.collidepoint((mx, my)): self.mainmenu_button.draw(True, gm) if click: gm.game_screen.new_game(gm) gm.actual_screen = gm.menu_screen running = False else: self.mainmenu_button.draw(False, gm) click = False for event in pygame.event.get(): if event.type == pygame.QUIT: gm.game_screen.onCleanup(gm) if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: gm.actual_screen = gm.quit_confirmation_screen running = False if event.type == pygame.MOUSEBUTTONDOWN: if event.button == 1: click = True self.run_screen(gm)
class QuitConfirmationScreen(Screen): def __init__(self, gm): super().__init__() self.button_1 = Button(50, 100, 200, 50, "Cancel", gm) self.button_2 = Button(350, 100, 200, 50, "Quit", gm) def run(self, gm): running = True click = False while running: gm.clock.tick(60) gm.fake_screen.fill((0, 0, 0)) self.draw_text('Do you really want to quit?', gm.font, (255, 255, 255), gm.fake_screen, (960, 20)) mx, my = gm.mousepos if self.button_1.contour.collidepoint((mx, my)): self.button_1.draw(True, gm) if click: running = False gm.game_screen.endGame(gm) gm.actual_screen = gm.menu_screen else: self.button_1.draw(False, gm) if self.button_2.contour.collidepoint((mx, my)): self.button_2.draw(True, gm) if click: gm.game_screen.endGame(gm) gm.game_screen.onCleanup(gm) else: self.button_2.draw(False, gm) click = False for event in pygame.event.get(): if event.type == pygame.QUIT: gm.game_screen.endGame(gm) gm.game_screen.onCleanup(gm) if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: running = False gm.actual_screen = gm.menu_screen if event.type == pygame.MOUSEBUTTONDOWN: if event.button == 1: click = True self.run_screen(gm)
class PauseScreen(Screen): def __init__(self, gm): super().__init__() self.resume_button = Button(50, 100, 200, 50, "Resume", gm) self.mainmenu_button = Button(50, 200, 200, 50, "Main Menu", gm) def run(self, gm): click=False running = True while running: gm.clock.tick(60) gm.fake_screen.fill((0,0,0)) self.draw_text('Pause Menu', gm.font, (255, 255, 255), gm.fake_screen, (960,20)) mx, my = gm.mousepos #Seleciona botões if self.resume_button.contour.collidepoint((mx, my)): self.resume_button.draw(True, gm) if click: gm.actual_screen = gm.game_screen running = False else: self.resume_button.draw(False, gm) if self.mainmenu_button.contour.collidepoint((mx, my)): self.mainmenu_button.draw(True, gm) if click: gm.game_screen.new_game(gm) gm.actual_screen = gm.menu_screen running = False else: self.mainmenu_button.draw(False, gm) click = False for event in pygame.event.get(): if event.type == pygame.QUIT: gm.game_screen.onCleanup() if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: running = False if event.type == pygame.MOUSEBUTTONDOWN: if event.button == 1: click = True self.run_screen(gm)
if event.type == pygame.QUIT: run = False mouse = pygame.mouse.get_pos() # mouse hovered over button newGameButton.hover(mouse) easyButton.hover(mouse) mediumButton.hover(mouse) hardButton.hover(mouse) checkBoardButton.hover(mouse) checkMoveButton.hover(mouse) solveButton.hover(mouse) clearButton.hover(mouse) newGameButton.draw(newGameButton.clicked) easyButton.draw(easyButton.clicked) mediumButton.draw(mediumButton.clicked) hardButton.draw(hardButton.clicked) checkBoardButton.draw(checkBoardButton.clicked) checkMoveButton.draw(checkMoveButton.clicked) solveButton.draw(solveButton.clicked) clearButton.draw(clearButton.clicked) if event.type == pygame.MOUSEBUTTONDOWN: pos = pygame.mouse.get_pos() tile = grid.clicked(pos) # tile clicked if tile: grid.click(tile[0], tile[1]) else:
class InstructionsScreen(Screen): def __init__(self, gm): super().__init__() self.mainmenu_button = Button(50, 900, 200, 50, "Main Menu", gm) self.keys_image = pygame.image.load('imgs/teclas.png') self.mouse_image = pygame.image.load('imgs/mouse_click.png') self.esc_image = pygame.image.load('imgs/esc.png') def run(self, gm): running = True click = False while running: gm.clock.tick(60) gm.fake_screen.fill((0, 0, 0)) self.draw_text('Instructions', gm.font, (255, 255, 255), gm.fake_screen, ((960, 20))) gm.fake_screen.blit(self.keys_image, [100, 150]) self.draw_text('Movimentar jogador', gm.font_p, (255, 255, 255), gm.fake_screen, ((1100, 200))) gm.fake_screen.blit(self.mouse_image, [200, 380]) self.draw_text('Atirar', gm.font_p, (255, 255, 255), gm.fake_screen, ((1100, 480))) gm.fake_screen.blit(self.esc_image, [200, 650]) self.draw_text('Pausar', gm.font_p, (255, 255, 255), gm.fake_screen, ((1100, 750))) mx, my = gm.mousepos #Selecionar botão if self.mainmenu_button.contour.collidepoint((mx, my)): self.mainmenu_button.draw(True, gm) if click: gm.actual_screen = gm.menu_screen running = False else: self.mainmenu_button.draw(False, gm) click = False for event in pygame.event.get(): if event.type == pygame.QUIT: gm.game_screen.onCleanup(gm) if event.type == pygame.MOUSEBUTTONDOWN: if event.button == 1: click = True if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: running = False if event.type == pygame.VIDEORESIZE: if gm.window_resolution != event.size: gm.fullscreen = False gm.window_resolution = event.size gm.screen = pygame.display.set_mode(event.size) gm.screen.blit( pygame.transform.scale(gm.fake_screen, gm.window_resolution), (0, 0)) pygame.display.flip() if event.type == pygame.USEREVENT + 1: if not gm.fullscreen: gm.fullscreen = True gm.window_resolution = gm.monitor_resolution gm.screen = pygame.display.set_mode( gm.window_resolution, pygame.FULLSCREEN) gm.screen.blit( pygame.transform.scale(gm.fake_screen, gm.window_resolution), (0, 0)) pygame.display.flip() self.run_screen(gm)
def main(): pg.init() screen = display("Drawing", size(), Color('white'), fullscreen=True) width, height = size() playing = True #Color buttons black = Button(Color('black'), 10, 10, 50, 50) black.draw(screen, outline=Color('black')) white = Button(Color('white'), 10, 60, 50, 50) white.draw(screen, outline=Color('black')) red = Button(Color('red'), 10, 110, 50, 50) red.draw(screen, outline=Color('black')) blue = Button(Color('blue'), 10, 160, 50, 50) blue.draw(screen, outline=Color('black')) green = Button(Color('green'), 10, 210, 50, 50) green.draw(screen, outline=Color('black')) yellow = Button(Color('yellow'), 10, 260, 50, 50) yellow.draw(screen, outline=Color('black')) magenta = Button(Color('magenta'), 10, 310, 50, 50) magenta.draw(screen, outline=Color('black')) cyan = Button(Color('cyan'), 10, 360, 50, 50) cyan.draw(screen, outline=Color('black')) quit_button = Button(Color('red'), (width - 300), (height - 150), 200, 75, text='Quit') quit_button.draw(screen) pg.display.flip() color = 'black' while playing: left_pressed, middle_pressed, right_pressed = pg.mouse.get_pressed() events = pg.event.get() for event in events: if event.type == pg.QUIT: exit(0) if event.type == pg.KEYDOWN: if event.key == pg.K_g: playing = False if event.type == pg.MOUSEBUTTONDOWN: pos = pg.mouse.get_pos() if black.is_over(pos): color = 'black' if white.is_over(pos): color = 'white' if red.is_over(pos): color = 'red' if green.is_over(pos): color = 'green' if blue.is_over(pos): color = 'blue' if yellow.is_over(pos): color = 'yellow' if magenta.is_over(pos): color = 'magenta' if cyan.is_over(pos): color = 'cyan' if quit_button.is_over(pos): playing = False if left_pressed: pg.draw.circle(screen, Color(color), (pg.mouse.get_pos()), 5) pg.display.flip()
name_change = True if ev.type == pygame.KEYDOWN: if name_change: if ev.key == pygame.K_RETURN: name_change = False elif ev.key == pygame.K_BACKSPACE: player.name = player.name[:-1] elif player.name.__len__() < 10: player.name += ev.unicode else: name_change = False if menu: pygame.draw.rect(win, GREEN1, (0, 0, screen_width, screen_height)) act = start_but.draw(win, screen_width / 2 - start_but.width / 2, 0, "Start", click, m_pos, int(screen_width / 50), BLACK, BLACK) if act == 1: menu = False lvlstart_time = time.time() before_lvlstart = True if act == 1 or act == -1: onbutton = True else: onbutton = False can_lvlup, onbutton, money, m = draw_updates(can_lvlup, onbutton, money) if name_change: pygame.draw.rect( win, SILVER,
class OptionsScreen(Screen): def __init__(self, gm): super().__init__() self.button_1 = Button(50, 100, 200, 50, "960 x 540", gm) self.button_2 = Button(50, 200, 200, 50, "1280 x 720", gm) self.button_3 = Button(50, 300, 200, 50, "1920 x 1080", gm) self.button_4 = Button(50, 400, 200, 50, "Fullscreen", gm) self.mainmenu_button = Button(50, 500, 200, 50, "Main Menu", gm) def run(self, gm): running = True click = False while running: gm.clock.tick(60) gm.fake_screen.fill((0, 0, 0)) self.draw_text('Options', gm.font, (255, 255, 255), gm.fake_screen, ((960, 20))) mx, my = gm.mousepos #Selecionar botão if self.button_1.contour.collidepoint((mx, my)): self.button_1.draw(True, gm) if click: self.post_resize_event((960, 540)) else: self.button_1.draw(False, gm) if self.button_2.contour.collidepoint((mx, my)): self.button_2.draw(True, gm) if click: self.post_resize_event((1280, 720)) else: self.button_2.draw(False, gm) if self.button_3.contour.collidepoint((mx, my)): self.button_3.draw(True, gm) if click: self.post_resize_event((1920, 1080)) else: self.button_3.draw(False, gm) if self.button_4.contour.collidepoint((mx, my)): self.button_4.draw(True, gm) if click: self.post_fullscreen() else: self.button_4.draw(False, gm) if self.mainmenu_button.contour.collidepoint((mx, my)): self.mainmenu_button.draw(True, gm) if click: gm.actual_screen = gm.menu_screen running = False else: self.mainmenu_button.draw(False, gm) click = False for event in pygame.event.get(): if event.type == pygame.QUIT: gm.game_screen.onCleanup(gm) if event.type == pygame.MOUSEBUTTONDOWN: if event.button == 1: click = True if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: running = False if event.type == pygame.VIDEORESIZE: if gm.window_resolution != event.size: gm.fullscreen = False gm.window_resolution = event.size gm.screen = pygame.display.set_mode(event.size) gm.screen.blit( pygame.transform.scale(gm.fake_screen, gm.window_resolution), (0, 0)) pygame.display.flip() if event.type == pygame.USEREVENT + 1: if not gm.fullscreen: gm.fullscreen = True gm.window_resolution = gm.monitor_resolution gm.screen = pygame.display.set_mode( gm.window_resolution, pygame.FULLSCREEN) gm.screen.blit( pygame.transform.scale(gm.fake_screen, gm.window_resolution), (0, 0)) pygame.display.flip() self.run_screen(gm)
def main(): pg.init() bgcolor = color['white'] screen = display("Relationship To Person", size(), bgcolor, fullscreen=True) width, height = size() clock = pg.time.Clock() data = get_database('family.db', 'family_info', ('rowid', 'name', 'gender', 'relation', 'image')) relations = [ 'aunt', 'uncle', 'cousin', 'grandma', 'grandpa', 'sister', 'mom', 'dad' ] lastans = 'Filler' quit_button = Button(color['red'], (width - 300), (height - 150), 200, 75, text='Quit') playing = True while playing: correct = False spoken = False shuffle(data) person = data[0] while person['relation'] == lastans: shuffle(data) person = data[0] image = pg.image.load(f'img/{person["image"]}') ans = person['relation'] guesses = [person['relation']] for i in range(2): select = choice(relations) while select in guesses: select = choice(relations) guesses.append(select) shuffle(guesses) height_div = [4, 2, 1.3] font = pg.font.SysFont('quicksandmedium', 80) while not correct and playing: events = pg.event.get() for event in events: if event.type == pg.QUIT: exit() if event.type == pg.MOUSEBUTTONDOWN: pos = pg.mouse.get_pos() if locals()[ans].is_over(pos): speak(f'{locals()[ans].text} is the correct answer') correct = True if event.type == pg.KEYDOWN: if event.key == pg.K_g: playing = False if event.type == pg.MOUSEBUTTONDOWN: pos = pg.mouse.get_pos() if quit_button.is_over(pos): playing = False screen.fill(bgcolor) font = pg.font.SysFont('quicksandmedium', 60) text = font.render( f'This is {person["name"].capitalize()}. {"He" if person["gender"]=="boy" else "She"} is your... ', 1, color['black']) screen.blit(text, (width // 10, height // 10)) show_img(screen, image, width // 4, height // 2) quit_button.draw(screen) for x, guess in enumerate(guesses): locals()[guess] = Button(color['magenta'], (width // 1.3), (height // height_div[x]), 300, 75, text=guess) locals()[guess].draw(screen) pg.display.flip() while not spoken: speak( f'This is {person["name"].capitalize()}. {"He" if person["gender"]=="boy" else "She"} is your... ' ) spoken = True lastans = ans
class MenuScreen(Screen): def __init__(self,gm, background = "imgs/menu_background.png"): super().__init__(background) self.play_button = Button(860, 100, 200, 50, 'Play Game', gm) self.options_button = Button(860, 200, 200, 50, 'Settings', gm) self.instructions_button = Button(860, 300, 200, 50, 'Instructions', gm) self.quit_button = Button(860, 400, 200, 50, 'Quit Game', gm) def run(self, gm): click = False can_play_sound=True running = True while running: gm.clock.tick(60) gm.fake_screen.blit(self.background,self.background.get_rect()) self.draw_text('Main Menu', gm.font, (255, 255, 255), gm.fake_screen, (960,20)) mx, my = gm.mousepos #Seleção dos botões if self.play_button.contour.collidepoint((mx, my)): self.play_button.draw(True, gm) if can_play_sound: can_play_sound = False self.play_button.sound(True, False) if click: self.play_button.sound(False, True) gm.actual_screen = gm.game_screen running = False else: self.play_button.draw(False, gm) can_play_sound = True if self.options_button.contour.collidepoint((mx, my)): self.options_button.draw(True, gm) if click: gm.actual_screen = gm.options_screen running = False else: self.options_button.draw(False, gm) if self.instructions_button.contour.collidepoint((mx, my)): self.instructions_button.draw(True,gm) if click: gm.actual_screen = gm.instructions_screen running = False else: self.instructions_button.draw(False,gm) if self.quit_button.contour.collidepoint((mx, my)): self.quit_button.draw(True,gm) if click: gm.actual_screen = gm.quit_confirmation_screen running = False else: self.quit_button.draw(False,gm) click = False for event in pygame.event.get(): if event.type == pygame.QUIT: gm.game_screen.onCleanup(gm) if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: running = False gm.actual_screen = gm.quit_confirmation_screen if event.type == pygame.MOUSEBUTTONDOWN: if event.button == 1: click = True self.run_screen(gm)
def main(): pg.init() bgcolor = color['white'] screen = display("Name To Person", size(), bgcolor, fullscreen=True) width, height = size() clock = pg.time.Clock() quit_button = Button(color['red'], (width - 300), (height - 150), 200, 75, text='Quit') data = get_database('family.db', 'family_info', ('rowid', 'name', 'gender', 'relation', 'image')) lastans = 0 var_dict = {} var_dict = copy.deepcopy(name_var_dict) playing = True while playing: events = pg.event.get() for event in events: if event.type == pg.QUIT: exit() if event.type == pg.MOUSEBUTTONDOWN: x, y = event.pos if picture.get_rect(center=location).collidepoint(x, y): speak('That is the correct answer') var_dict = copy.deepcopy(name_var_dict) if event.type == pg.KEYDOWN: if event.key == pg.K_g: playing = False if event.type == pg.MOUSEBUTTONDOWN: pos = pg.mouse.get_pos() if quit_button.is_over(pos): playing = False screen.fill(bgcolor) while len(var_dict['person']) < 3: rowid = randrange(len(data)) + 1 if rowid == lastans: var_dict['picked'].append(rowid) while rowid in var_dict['picked']: rowid = randrange(len(data)) + 1 var_dict['picked'].append(rowid) for entry in data: if entry['rowid'] == rowid: var_dict['person'].append(entry) mem = var_dict['person'][int(len(var_dict['person']) - 1)] image = pg.image.load(f'img/{mem["image"]}') img_w, img_h = image.get_size() image = pg.transform.scale( image, (int(img_w * .5), int(img_h * .5))) var_dict['images'].append( show_img(screen, image, (len(var_dict['person']) * width) // 4, height // 4)) var_dict['center'].append( (len(var_dict['person']) * width // 4, height // 4)) for x, img in enumerate(var_dict['images']): show_img(screen, img, ((x + 1) * width) // 4, height // 4) quit_button.draw(screen) pg.display.flip() while not var_dict['selected']: ans = randrange(3) answer = var_dict['person'][ans] pg.display.flip() picture = var_dict['images'][ans] location = var_dict['center'][ans] print(answer) speak(f'which one is {answer["name"]}') lastans = answer['rowid'] var_dict['selected'] = True clock.tick(30)
class Game: def __init__(self): self.onlinePvPrun = False self.localPvErun = False self.screen = pygame.display.set_mode(SIZE) self.running = True self.localPvPrun = False self.clock = pygame.time.Clock() self.button = Button self.load_data() def draw_text(self, text, font_name, size, color, x, y, align="nw"): font = pygame.font.Font(font_name, size) text_surface = font.render(text, True, color) text_rect = text_surface.get_rect() if align == "nw": text_rect.topleft = (x, y) if align == "ne": text_rect.topright = (x, y) if align == "sw": text_rect.bottomleft = (x, y) if align == "se": text_rect.bottomright = (x, y) if align == "n": text_rect.midtop = (x, y) if align == "s": text_rect.midbottom = (x, y) if align == "e": text_rect.midright = (x, y) if align == "w": text_rect.midleft = (x, y) if align == "center": text_rect.center = (x, y) self.screen.blit(text_surface, text_rect) def load_data(self): self.font = pygame.font.Font(None, 34) self.yes1 = pygame.image.load("rec/yes.png") self.yes2 = pygame.image.load("rec/yes2.png") self.no1 = pygame.image.load("rec/no.png") self.no2 = pygame.image.load("rec/no2.png") self.localPvP_button = Button("LocalPvP", 10, 10, RED) self.localPvE_button = Button("LocalPvE", 170, 10, RED) self.onlinePvP_button = Button("OnlinePvP", 330, 10, RED) def events(self): for event in pygame.event.get(): if event.type == pygame.QUIT: self.running = False if event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE: self.localPvErun = True self.mouse = pygame.mouse.get_pos() self.click = pygame.mouse.get_pressed() self.test = self.localPvP_button.click((self.mouse[0], self.mouse[1])) self.test2 = self.localPvE_button.click((self.mouse[0], self.mouse[1])) self.test3 = self.onlinePvP_button.click( (self.mouse[0], self.mouse[1])) def update(self): if self.test and self.click[0] >= 1: print(self.click) self.localPvPrun = True if self.test2 and self.click[0] >= 1: print(self.click) self.localPvErun = True if self.test3 and self.click[0] >= 1: print(self.click) self.onlinePvPrun = True def draw(self): # Filling the Background self.screen.fill(DARKBLUE) self.localPvP_button.draw(self.screen) self.localPvE_button.draw(self.screen) self.onlinePvP_button.draw(self.screen) self.draw_text(f"{int(self.dt*1000.0)}", None, 25, RED, 0, 0) pygame.display.flip() def run(self): while self.running: self.dt = self.clock.tick(FPS) / 1000.0 if self.localPvPrun: self.game = PvP(self.screen) self.game.load_data() self.game.run() if not self.game.running: self.localPvPrun = False if self.localPvErun: self.game = PvE(self.screen) self.game.load_data() self.game.run() if not self.game.running: self.localPvErun = False if self.onlinePvPrun: self.game = oPvP(self.screen) self.game.load_data() self.game.run() if not self.game.running: self.onlinePvPrun = False self.events() self.update() self.draw()