def test_level(fn): level = Level() level.read(fn) solutions = level.solve() assert len(solutions) > 0 assert level.par == len(solutions[0])
def start_game(): appium = webdriver.Remote(config.APPIUM_HOST, config.DESIRED_CAPABILITIES) unity = AltrunUnityDriver(appium, config.PLATFORM) main_menu = MainMenu(unity) main_menu.play_button.tap() return { "Appium": appium, "Unity": unity, "Game": Game(unity), "MainMenu": main_menu, "Level": Level(unity), "Player": Player(unity), "LevelCompleteMenu": LevelComplete(unity), }
def __init__(self): pg.init() self.maze = Maze() pg.display.set_mode((WIDTH, HEIGHT)) pg.image.load(FL).convert() pg.image.load(WA).convert() pg.image.load(E).convert_alpha() pg.image.load(T).convert_alpha() pg.image.load(S).convert_alpha() pg.image.load(BG).convert_alpha() pg.image.load(PL).convert_alpha() pg.display.set_caption('The Maze') self.clock = pg.time.Clock() self.is_running = True self.SCREEN = pg.display.set_mode((WIDTH, HEIGHT)) self.fond = pg.image.load("./images/floor-tiles-20x20.png").convert() self.level = Level() self.run()
def setup (self): keyboard = mixin (KeyboardTask, AutoSender) ( DEFAULT_KEYMAP) base.setBackgroundColor (Vec4 (.4, .6, .9, 1)) self.events.connect (keyboard) self.events.event ('panda-escape').connect (self.kill) physics = Physics () boy = Boy (physics = physics, render = render) boy.set_position ((0, 70, 20)) level = Level (physics = physics, render = render) level.set_position ((0, 0, -100)) self.tasks.add (keyboard) self.tasks.add (boy) self.tasks.add (level) self.tasks.add (physics) boy.connect (SlowEntityFollower (base.camera)) keyboard.connect ( mixin (DelegatePlayerEntity, AutoReceiver) (delegate = boy)) plightnode = PointLight("point light") plightnode.setAttenuation (Vec3(1,0.0000005,0.0000001)) plight = render.attachNewNode (plightnode) plight.setPos (100, -100, 1000) alightnode = AmbientLight("ambient light") alightnode.setColor (Vec4(0.4,0.4,0.4,1)) alight = render.attachNewNode (alightnode) #render.setLight (alight) render.setLight (plight)
import pygame as pg from pygame.locals import KEYDOWN as Kd from game.settings import E, T, S, FL, WA, BG, PL, WIDTH, HEIGHT, SIZE_SPRITE from game.level import Level from game.the_maze import Maze clock = pg.time.Clock() pg.display.set_caption('The Maze') level = Level() SCREEN = pg.display.set_mode((WIDTH, HEIGHT)) class Game: def __init__(self): pg.init() self.maze = Maze() pg.display.set_mode((WIDTH, HEIGHT)) pg.image.load(FL).convert() pg.image.load(WA).convert() pg.image.load(E).convert_alpha() pg.image.load(T).convert_alpha() pg.image.load(S).convert_alpha() pg.image.load(BG).convert_alpha() pg.image.load(PL).convert_alpha() pg.display.set_caption('The Maze') self.clock = pg.time.Clock() self.is_running = True self.SCREEN = pg.display.set_mode((WIDTH, HEIGHT)) self.fond = pg.image.load("./images/floor-tiles-20x20.png").convert() self.level = Level()
def __game(self): print("entering __game") levels = Level(self.graphics, "home") bobby = Bobby(self.graphics) finalrender = pygame.Surface( (levels.get_map_size()[0], levels.get_map_size()[1])) in_dial = False pnj_name = "null" dial_count = 1 state_to_return = "EXIT" goon = True while goon: #print(self.clock.get_fps()) deltatime = self.clock.tick(30) / 100.0 #events for event in pygame.event.get(): if event.type == QUIT: goon = False if in_dial: if event.type == pygame.KEYUP: if event.key == pygame.K_ESCAPE: in_dial = False pnj_name = "null" dial_count = 1 if event.key == pygame.K_RETURN: dial_count += 1 if dial_count > len( levels.chars[pnj_name]["dials"]): in_dial = False pnj_name = "null" dial_count = 1 else: levels.event(event) bobby.event(event) # updates bob_value = bobby.update(deltatime, levels.get_map_size(), levels) if bobby.get_state_to_return() == "MENU": state_to_return = "MENU" goon = False levels.update(bob_value, bobby) if levels.currentmap == "credits": goon = False state_to_return = "CREDITS" break if finalrender.get_width() != levels.get_map_size( )[0] or finalrender.get_height() != levels.get_map_size()[1]: finalrender = pygame.Surface( (levels.get_map_size()[0], levels.get_map_size()[1])) # draws finalrender.blit(levels.draw(), (0, 0)) b_x, b_y = bobby.get_pos() finalrender.blit(bobby.draw(), (b_x, b_y)) self.screen.blit( pygame.transform.scale(finalrender, (c.WINDOW_WIDTH, c.WINDOW_HEIGHT)), (0, 0)) if bob_value.split(' ')[0] == "pnj" and not in_dial: # or in_dial in_dial = True pnj_name = bob_value.split(' ')[1] elif in_dial: bobby_talk = False my_font = pygame.font.Font("res/ubuntumono-r.ttf", 22) my_string = levels.chars[pnj_name]["dials"][str(dial_count)] if my_string[0] == "*": bobby_talk = True my_string = "<Bobby> " + my_string[1:] else: my_string = "<" + pnj_name[0].upper( ) + pnj_name[1:] + "> " + my_string my_rect = pygame.Rect( (0, 0, c.WINDOW_WIDTH, c.WINDOW_HEIGHT / 4)) rendered_text = Dialog().render_textrect( my_string, my_font, my_rect, (216, 216, 216), (0, 0, 20, 225), 0) self.screen.blit( rendered_text, (0, c.WINDOW_HEIGHT - rendered_text.get_height())) # TODO: Change head if ":" or "*" if bobby_talk: head = pygame.transform.scale( self.graphics["bobby_head.png"], (175, rendered_text.get_height() + 50)) else: head = pygame.transform.scale( self.graphics[pnj_name + "_head.png"], (175, rendered_text.get_height() + 50)) self.screen.blit( head, (0, c.WINDOW_HEIGHT - rendered_text.get_height())) continue_font = my_font continue_font.set_italic(True) dial_left = "(" + str(dial_count) + "/" + str( len(levels.chars[pnj_name]["dials"])) + ")" continue_font_rendered = continue_font.render( "Press Enter to continue... " + dial_left, 1, (150, 150, 150)) self.screen.blit( continue_font_rendered, (c.WINDOW_WIDTH - continue_font_rendered.get_width(), c.WINDOW_HEIGHT - continue_font_rendered.get_height())) pygame.display.flip() print("exiting __game") return state_to_return
Level( pygame.image.load("./assets/bgs/hometown.png"), "./assets/sounds/music/pallet_town.mp3", [ Entity([0, 0], [430, 75]), # level walls Entity([0, 0], [220, 720]), Entity([0, 560], [1080, 720]), Entity([1080 - 224, 0], [224, 720]), Entity([1080 - 434, 0], [434, 75]), Entity([315, 90], [140, 80]), # topleft house Entity([315, 90], [35, 110]), Entity([400, 90], [55, 110]), Entity([620, 90], [140, 80]), # topright house Entity([620, 90], [35, 110]), Entity([705, 90], [55, 110]), Entity([620, 310], [140, 80]), # bottomright house Entity([620, 310], [35, 110]), Entity([705, 310], [55, 110]), Entity([300, 310], [180, 80]), # oakslab Entity([300, 310], [65, 110]), Entity([415, 310], [65, 110]), ], [ ExitZone([430, 0], [220, 5], (0, 670), "route1", True, doMusicChange=True), # hometown to route 1 # ExitZone([360, 180], [35, 5], (527,570) , "oakslab", False), # hometown to topleft house ExitZone([375, 400], [35, 5], (527, 570), "oakslab", False, doMusicChange=True), # hometown to oakslab ], PokeZone()),
def __init__(self, filepath): super(Play, self).__init__() self.filepath = filepath tileset = Tileset('resources/tileset/default.tset') self.level = Level(tileset, filepath)
def level(unity): return Level(unity)