def __init__(self): pygame.display.set_icon(pygame.image.load('robot.png')) pygame.display.set_caption('MiniBrains') # --- level --- self.level_now = 1 # --- screen --- self.screen = pygame.display.set_mode(config.size) self.screen_rect = self.screen.get_rect() self.clock = pygame.time.Clock() self.is_running = True self.ui = ui.Ui(self.screen) # --- objects --- self.all_objects = pygame.sprite.Group() self.platforms_group = pygame.sprite.Group() self.spikes = pygame.sprite.Group() # --- add objects --- self.renderer = helperspygame.RendererPygame() # --- text --- self.font_obj = pygame.font.Font(None, 25) self.total_x = 0 self.total_y = 0
def __init__(self): pygame.init() # init pygame pygame.mixer.init() # init pygame module that plays sounds icon = pygame.image.load(os.path.join(GAME_FOLDER, 'images', 'icon.png')) # load window icon pygame.display.set_icon(icon) # set window icon self.screen = display.set_mode((WIN_WIDTH, WIN_HEIGHT), pygame.RESIZABLE) # create a window display.set_caption(GAME_NAME) # set a window caption self.timer = pygame.time.Clock() # create main game timer self.renderer = helperspygame.RendererPygame() # create level renderer self.ui = UserInput() # create user input struct self.current_level = None # Set up game levels self.level_0 = Level( "level_0", "Vodka.mp3" )
def run(self): renderer = helperspygame.RendererPygame() self.load_level() while self.is_running: self.handler() self.player.move(self.platforms_group, self.spikes) self.move() self.check_player_collide() self.chek_lose() self.check_win() self.camera.update(self.player) self.draw() pygame.display.flip() self.clock.tick(60)
def demo_pygame(file_name): """ Example showing how to use the paralax scrolling feature. """ # parser the map (it is done here to initialize the # window the same size as the map if it is small enough) world_map = tmxreader.TileMapParser().parse_decode(file_name) # init pygame and set up a screen pygame.init() pygame.display.set_caption("tiledtmxloader - " + file_name + " - keys: arrows, 0-9") screen_width = min(1024, world_map.pixel_width) screen_height = min(768, world_map.pixel_height) screen = pygame.display.set_mode((screen_width, screen_height)) # load the images using pygame resources = helperspygame.ResourceLoaderPygame() resources.load(world_map) # prepare map rendering assert world_map.orientation == "orthogonal" # renderer renderer = helperspygame.RendererPygame() # create hero sprite # use floats for hero position hero_pos_x = screen_width hero_pos_y = screen_height hero = create_hero(hero_pos_x, hero_pos_y) # cam_offset is for scrolling cam_world_pos_x = hero.rect.centerx cam_world_pos_y = hero.rect.centery # set initial cam position and size renderer.set_camera_position_and_size(cam_world_pos_x, cam_world_pos_y, screen_width, screen_height) # retrieve the layers sprite_layers = helperspygame.get_layers_from_map(resources) # filter layers sprite_layers = [ layer for layer in sprite_layers if not layer.is_object_group ] # add the hero the the right layer, it can be changed using 0-9 keys layer = get_sprite_layer(1, sprite_layers, world_map.layers) if layer is not None: layer.add_sprite(hero) # layer add/remove hero keys num_keys = [pygame.K_0, pygame.K_1, pygame.K_2, pygame.K_3, pygame.K_4, \ pygame.K_5, pygame.K_6, pygame.K_7, pygame.K_8, pygame.K_9] # variables for the main loop clock = pygame.time.Clock() running = True speed = 0.075 * 10 # set up timer for fps printing pygame.time.set_timer(pygame.USEREVENT, 1000) # mainloop while running: dt = clock.tick() # event handling for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.USEREVENT: print("fps: ", clock.get_fps()) elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: running = False elif event.key in num_keys: # find out which layer to manipulate idx = num_keys.index(event.key) # make sure this layer exists if idx < len(world_map.layers): layer = get_sprite_layer(idx, sprite_layers, world_map.layers) if layer is not None: if layer.contains_sprite(hero): layer.remove_sprite(hero) print("removed hero sprite from layer", idx) else: layer.add_sprite(hero) print("added hero sprite to layer", idx) else: print("no such layer or more than 10 layers: " + str(idx)) # find directions pressed = pygame.key.get_pressed() direction_x = pressed[pygame.K_RIGHT] - \ pressed[pygame.K_LEFT] direction_y = pressed[pygame.K_DOWN] - \ pressed[pygame.K_UP] # make sure the hero moves with same speed in all directions (diagonal!) dir_len = math.hypot(direction_x, direction_y) dir_len = dir_len if dir_len else 1.0 # update position hero_pos_x += speed * dt * direction_x / dir_len hero_pos_y += speed * dt * direction_y / dir_len hero.rect.midbottom = (hero_pos_x, hero_pos_y) # adjust camera according to the hero's position, follow him renderer.set_camera_position(hero.rect.centerx, hero.rect.centery) # clear screen, might be left out if every pixel is redrawn anyway screen.fill((255, 0, 255)) # render the map for sprite_layer in sprite_layers: if sprite_layer.is_object_group: # we dont draw the object group layers # you should filter them out if not needed continue else: renderer.render_layer(screen, sprite_layer) pygame.display.flip()
def main(): pygame.font.init() dis = Display() # you have to call this at the start, # if you want to use this module. myfont = pygame.font.SysFont('Broadway', 20) with open("levels/names.txt", "r") as file: first_line = file.readline() name = myfont.render(first_line, False, (255, 255, 255)) game = Game() pygame.init() # Инициация PyGame, обязательная строчка screen = pygame.display.set_mode(DISPLAY) # Создаем око bg = Surface((WIN_WIDTH, WIN_HEIGHT)) # шко pygame.display.set_caption("Super p_move Boy") renderer = helperspygame.RendererPygame() for lvl in range(1, 4): loadLevel("levels/map_1", game) bg.fill( Color(BACKGROUND_COLOR)) # Заливаем поверхность сплошным цветом left = right = False up = down = False space = False try: hero = Player(playerX, playerY, game) # создаем героя по (x,y) координатам game.entities.add(hero) except: print( u"Не удалось на карте найти героя, взяты координаты по-умолчанию" ) hero = Player(65, 65, game) game.entities.add(hero) timer = pygame.time.Clock() camera = Camera(camera_configure, total_level_width, total_level_height) bg = Entity() # Пишем в шапку bg.image = pygame.image.load("blocks/gif.gif") bg.rect = Rect(0, 0, total_level_width, total_level_height) bg.image = pygame.transform.scale( bg.image, (total_level_width, total_level_height)) game.backentity.add(bg) mixer.music.load('AREKE.ogg') pygame.mixer.music.set_volume(0.05) mixer.music.play(-1) while 1: # Основной цикл программы timer.tick(70) if game.screenfocus == "Game Over": for e in game.titlegroup: screen.blit(e.image, (0, 0)) for e in game.menugroup: screen.blit(e.image, (e.rect.x, e.rect.y)) game.gameover.update() if game.screenfocus == "Title": for e in game.titlegroup: screen.blit(e.image, (0, 0)) for e in game.menugroup: screen.blit(e.image, (e.rect.x, e.rect.y)) game.title.update() if game.screenfocus == "Pause Menu": for e in game.titlegroup: screen.blit(e.image, (0, 0)) for e in game.menugroup: screen.blit(e.image, (e.rect.x, e.rect.y)) game.pausemenu.update() if game.screenfocus == 'Game': for e in pygame.event.get(): # Обрабатываем события if e.type == QUIT: raise SystemExit if e.type == KEYDOWN and e.key == K_LEFT: left = True if e.type == KEYDOWN and e.key == K_RIGHT: right = True if e.type == KEYUP and e.key == K_RIGHT: right = False if e.type == KEYUP and e.key == K_LEFT: left = False if e.type == KEYDOWN and e.key == K_UP: up = True if e.type == KEYUP and e.key == K_UP: up = False if e.type == KEYDOWN and e.key == K_DOWN: down = True if e.type == KEYUP and e.key == K_DOWN: down = False if e.type == KEYDOWN and e.key == K_SPACE: space = True if e.type == KEYUP and e.key == K_SPACE: space = False if e.type == KEYDOWN and e.key == K_ESCAPE: game.pausemenu.createpausemenu() game.screenfocus = "Pause Menu" for sprite_layer in sprite_layers: # перебираем все слои if not sprite_layer.is_object_group: # и если это не слой объектов renderer.render_layer(screen, sprite_layer) # отображаем его for e in game.backentity: screen.blit(e.image, camera.apply(e)) #Каждую итерацию необходимо всё перерисовывать hero.update(left, right, up, down, space, game.platforms) # передвижение camera.update(hero) for e in game.monsters: e.update(game.platforms, game.projectilegroup) screen.blit(e.image, camera.apply(e)) for e in game.dieskeletgroup: e.update(game.projectilegroup) screen.blit(e.image, camera.apply(e)) for e in game.teleport: e.update() screen.blit(e.image, camera.apply(e)) # центризируем камеру относительно персонажа for e in game.entities: screen.blit(e.image, camera.apply(e)) for e in game.projectilegroup: e.update(game.platforms) screen.blit(e.image, camera.apply(e)) for e in game.cupgroup: screen.blit(e.image, camera.apply(e)) screen.blit(name, (110, 0)) dis.update(hero.lifetotal[hero.currentlifetotal]) screen.blit(dis.image, (0, 0)) if game.screenfocus == "Level Complete": for e in game.titlegroup: screen.blit(e.image, (0, 0)) for e in game.menugroup: screen.blit(e.image, (e.rect.x, e.rect.y)) game.levelcomplete.update() pygame.display.update() # ж
def main(): print("Enter position: ") x = int(input()) print("Enter boost: ") boost = int(input()) screen = pygame.display.set_mode((DISPLAY)) pygame.display.set_caption("GAME") bg = Surface((WIN_WIDTH, WIN_HEIGHT)) renderer = helperspygame.RendererPygame() sprite_layers, items_for_show, colliders = loadLevel("level.tmx") control = {'right': False, 'up': False, 'down': False} hero = Player(x, 80, boost) items_for_show.add(hero) timer = pygame.time.Clock() camera = Camera(camera_configure, 3500, 320) white = pygame.Color('white') while not hero.win: timer.tick(60) for e in pygame.event.get(): if e.type == QUIT: raise (SystemExit, "QUIT") if e.type == KEYDOWN and e.key == K_RIGHT: control['right'] = True if e.type == KEYDOWN and e.key == K_UP: control['up'] = True if e.type == KEYDOWN and e.key == K_DOWN: control['down'] = True if e.type == KEYUP and e.key == K_RIGHT: control['right'] = False if e.type == KEYUP and e.key == K_UP: control['up'] = False if e.type == KEYUP and e.key == K_DOWN: control['down'] = False for sprite_layer in sprite_layers: if not sprite_layer.is_object_group: renderer.render_layer(screen, sprite_layer) for e in items_for_show: screen.blit(e.image, camera.apply(e)) camera.update(hero) center_offset = camera.reverse(CENTER_OF_SCREEN) renderer.set_camera_position_and_size(center_offset[0], center_offset[1], WIN_WIDTH, WIN_HEIGHT, "center") hero.update(control, colliders) score_text = FONT.render("Score = " + str(hero.SCORE), 1, white) screen.blit(score_text, (5, 30)) pygame.display.update() screen.blit(bg, (0, 0)) final_text = FONT.render("FINISH! Your score is " + str(hero.SCORE), 1, white) screen.blit(final_text, (175, 30)) pygame.display.update() time.wait(5000)
def main(): pygame.init() screen = pygame.display.set_mode(DISPLAY) pygame.display.set_caption("Super Mario Boy") bg = Surface((WIN_WIDTH, WIN_HEIGHT)) renderer = helperspygame.RendererPygame() # визуализатор playerX, playerY, total_level_height, total_level_width, sprite_layers = loadLevel( "levels/map_1") bg.fill(Color("#000000")) # Заливаем поверхность сплошным цветом left = right = up = running = False hero = Player(playerX, playerY) # создаем героя по (x,y) координатам entities.add(hero) timer = pygame.time.Clock() camera = Camera(camera_configure, total_level_width, total_level_height) while not hero.winner: timer.tick(60) for e in pygame.event.get(): if e.type == QUIT: return elif e.type == KEYDOWN: if e.key == K_UP: up = True if e.key == K_LEFT: left = True if e.key == K_RIGHT: right = True if e.key == K_LSHIFT: running = True elif e.type == KEYUP: if e.key == K_UP: up = False if e.key == K_LEFT: left = False if e.key == K_RIGHT: right = False if e.key == K_LSHIFT: running = False for sprite_layer in sprite_layers: # перебираем все слои if not sprite_layer.is_object_group: # и если это не слой объектов renderer.render_layer(screen, sprite_layer) # отображаем его for e in entities: screen.blit(e.image, camera.apply(e)) animatedEntities.update() # показываеaм анимацию monsters.update(platforms) # передвигаем всех монстров camera.update(hero) # центризируем камеру относительно персонаж center_offset = camera.reverse( CENTER_OF_SCREEN) # получаем координаты внутри длинного уровня renderer.set_camera_position_and_size(center_offset[0], center_offset[1], WIN_WIDTH, WIN_HEIGHT, "center") hero.update(left, right, up, running, platforms) # передвижение pygame.display.update() # обновление и вывод всех изменений на экран screen.blit(bg, (0, 0)) # Каждую итерацию необходимо всё перерисовывать for sprite_layer in sprite_layers: if not sprite_layer.is_object_group: renderer.render_layer(screen, sprite_layer) for e in entities: screen.blit(e.image, camera.apply(e)) font = pygame.font.Font(None, 38) text = font.render( ("Thank you MarioBoy! but our princess is in another level!"), 1, (255, 255, 255)) # выводим надпись screen.blit(text, (10, 100)) pygame.display.update()
def main(): pygame.init() # Инициация PyGame, обязательная строчка screen = pygame.display.set_mode(DISPLAY) # Создаем окошко pygame.display.set_caption("Super Mario Boy") # Пишем в шапку bg = Surface((WIN_WIDTH, WIN_HEIGHT)) # Создание видимой поверхности # будем использовать как фон renderer = helperspygame.RendererPygame() # визуализатор for lvl in range(1, 4): loadLevel("levels/map_%s" % lvl) bg.fill( Color(BACKGROUND_COLOR)) # Заливаем поверхность сплошным цветом left = right = False # по умолчанию - стоим up = False running = False try: hero = Player(playerX, playerY) # создаем героя по (x,y) координатам entities.add(hero) except: print( u"Не удалось на карте найти героя, взяты координаты по-умолчанию" ) hero = Player(65, 65) entities.add(hero) timer = pygame.time.Clock() camera = Camera(camera_configure, total_level_width, total_level_height) while not hero.winner: # Основной цикл программы timer.tick(60) for e in pygame.event.get(): # Обрабатываем события if e.type == QUIT: raise SystemExit, "QUIT" if e.type == KEYDOWN and e.key == K_UP: up = True if e.type == KEYDOWN and e.key == K_LEFT: left = True if e.type == KEYDOWN and e.key == K_RIGHT: right = True if e.type == KEYDOWN and e.key == K_LSHIFT: running = True if e.type == KEYUP and e.key == K_UP: up = False if e.type == KEYUP and e.key == K_RIGHT: right = False if e.type == KEYUP and e.key == K_LEFT: left = False if e.type == KEYUP and e.key == K_LSHIFT: running = False for sprite_layer in sprite_layers: # перебираем все слои if not sprite_layer.is_object_group: # и если это не слой объектов renderer.render_layer(screen, sprite_layer) # отображаем его for e in entities: screen.blit(e.image, camera.apply(e)) animatedEntities.update() # показываеaм анимацию monsters.update(platforms) # передвигаем всех монстров camera.update(hero) # центризируем камеру относительно персонаж center_offset = camera.reverse( CENTER_OF_SCREEN) # получаем координаты внутри длинного уровня renderer.set_camera_position_and_size(center_offset[0], center_offset[1], \ WIN_WIDTH, WIN_HEIGHT, "center") hero.update(left, right, up, running, platforms) # передвижение pygame.display.update( ) # обновление и вывод всех изменений на экран screen.blit( bg, (0, 0)) # Каждую итерацию необходимо всё перерисовывать for sprite_layer in sprite_layers: if not sprite_layer.is_object_group: renderer.render_layer(screen, sprite_layer) # когда заканчиваем уровень for e in entities: screen.blit(e.image, camera.apply(e)) # еще раз все перерисовываем font = pygame.font.Font(None, 38) text = font.render( ("Thank you MarioBoy! but our princess is in another level!"), 1, (255, 255, 255)) # выводим надпись screen.blit(text, (10, 100)) pygame.display.update() time.wait( 10000) # ждем 10 секунд и после - переходим на следующий уровень