def start_screen2(): intro_text = [ "Вы выбрались из котла!", "", "Теперь вам нужно пробежать мимо чертовых руин!", "Для начала игры нажмите 1" ] fon = pygame.transform.scale(load_image('fon2.jpg'), (WIDTH, HEIGHT)) screen.blit(fon, (0, 0)) font = pygame.font.Font(None, 30) text_coord = 50 for line in intro_text: string_rendered = font.render(line, 1, pygame.Color('white')) intro_rect = string_rendered.get_rect() text_coord += 10 intro_rect.top = text_coord intro_rect.x = 100 text_coord += intro_rect.height screen.blit(string_rendered, intro_rect) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: terminate() elif event.type == pygame.KEYDOWN and event.key == pygame.K_1: pygame.mixer.Sound('data/level_audio.wav').play() level() # начинаем игру pygame.display.flip() clock.tick(fps)
def render_state(self): # the current state of the current player player_message = "Player: %s " % (self.current_player_id + 1, ) # there is a gap when we're not allowed to launch # in this period we show a different message deltaTime = (pygame.time.get_ticks() - self.prepare_for_launch) if deltaTime < 3000 and not self.ship.is_launched: activity_message = "ready to launch in: %s" % ( 3 - int(deltaTime / 1000.0)) else: self.is_launch_allowed = True activity_message = self.ship.get_render_message() # now, render the full message message = "%s - %s" % (player_message, activity_message) basicfont = pygame.font.SysFont(None, 20) text = basicfont.render(message, True, (255, 0, 0), (0, 0, 0)) textrect = text.get_rect() screen.blit(text, textrect) # render the remaining fuel (if we're launched) if self.ship.is_launched: draw_gauge(100, 0, 100, self.ship.fuel) for p in self.players: p.render_details(basicfont) if self.current_player() == p: p.celestial.identify(get_gauge_colour(p.life / p.total_life))
def draw(self, screen): #Background pg.sprite.Sprite.__init__(self) self.image = pg.image.load('Images/Screen_bgs/menu_bg.jpg').convert() self.rect = self.image.get_rect() self.rect.left, self.rect.top = (0, 0) screen.blit(self.image, self.rect)
def draw(self, screen): if not self.spawn and not self.onPlatform: ran = random.randrange(0, 2) if ran < 1: self.x = self.path[1] - 1 self.spawn = True self.move(self.option) if self.walk_count + 1 >= 39: self.walk_count = 0 if self.vel > 0: if self.x > self.path[1]: self.x = self.path[1] - 1 screen.blit(self.walkRight[self.walk_count // 3], (self.x, self.y)) self.walk_count += 1 else: if self.x > self.path[1]: self.x = self.path[1] - 1 screen.blit(self.walkLeft[self.walk_count // 3], (self.x, self.y)) self.walk_count += 1 self.hitbox = (self.x, self.y - 10, 45, 65) if self.afterSpawn and not self.onPlatform: self.x = 64 self.afterSpawn = False
def background_scroll(x1, x2, speed=5): x1 -= speed x2 -= speed screen.blit(background, (x1, y_first_image)) screen.blit(background, (x2, y_second_image)) if x1 < -WIDTH: x1 = WIDTH if x2 < -WIDTH: x2 = WIDTH return x1, x2
def render_game_over(self): screen.fill(black) basicfont = pygame.font.SysFont(None, 50) text = basicfont.render("Player %s wins!" % (self.winner().id), True, (255, 0, 0), (0, 0, 0)) textrect = text.get_rect() textrect.center = (width / 2, height / 2) screen.blit(text, textrect) pygame.display.flip() time.sleep(3)
def main(): pygame.init() pygame.display.set_caption(GAME_NAME) hero = HeroPlane( 240, 550, screen) # import module 与 from module import 的区别, 前者调用要先加模块名 enemy = Enemy(screen) while True: screen.blit(bg, (0., 0.)) hero.display() enemy.display() pygame.display.update() Control.key_control(hero)
def victory(): victory_image = load_image('victory.png') x_pos = -800 v = 400 running = True screen.blit(victory, (x_pos, 0)) while running: for event in pygame.event.get(): if event.type == pygame.QUIT: terminate() screen.fill((255, 255, 255)) if x_pos < 0: x_pos += v * clock.tick() / 1000 screen.blit(victory_image, (int(x_pos), 0)) pygame.display.flip()
def game_over(): image = load_image('game_over.png') x_pos = -800 v = 400 running = True screen.blit(image, (x_pos, 0)) while running: for event in pygame.event.get(): if event.type == pygame.QUIT: terminate() screen.fill((0, 0, 0)) if x_pos < 0: x_pos += v * clock.tick() / 1000 screen.blit(image, (int(x_pos), 0)) pygame.display.flip()
def render_details(self, basicfont): # write some text about the player pid = self.id p_message = "Player: %s " % (pid) p_text = basicfont.render(p_message, True, (255, 0, 0), (0, 0, 0)) p_textrect = p_text.get_rect() p_textrect.x = 30 p_textrect.y = 20 * pid screen.blit(p_text, p_textrect) # draw the icon for the planet self.icon_rect.y = 20 * (pid) - 3 screen.blit(self.icon, self.icon_rect) draw_gauge(100, pid * 20, self.total_life, self.life)
def move(self): # this gets called all the time after the ship is launched # so we use this to record when we've finally taken-off deltaTime = (pygame.time.get_ticks() - self.launch_time) if deltaTime > 1000: self.is_launching = False # move the ship accordingto the acceleration # we use this to check collisions, but we don't render with this self.speed += self.acceleration self.pos += self.speed # move the sprite to the position self.rect.centerx = self.pos[0] self.rect.centery = self.pos[1] # copy the sprite, and point in the direction we're moving angle = atan2(self.speed[0], self.speed[1]) * 180 / pi rotated = pygame.transform.rotate(self.sprite, angle) rotated_rect = rotated.get_rect() # move the rotated sprite to where it belongs, and draw it rotated_rect.centerx = self.pos[0] rotated_rect.centery = self.pos[1] screen.blit(rotated, rotated_rect)
def engine(): global FPS, clock, activity, cameray, generation start_generate_platform() Sceleton(platforms[1][0], platforms[1][-1] - 45) Mist() pause = False image_fon = load_image('fon.png') y_pos = -1200 # начальная позиция image_pause = load_image('pause.png') arrow_image = load_image('bone1.png') pos = 0, 0 while True: for event in pygame.event.get(): pygame.mouse.set_visible(False) if event.type == pygame.QUIT: terminate() if event.type == pygame.MOUSEMOTION: pos = event.pos if activity: sceleton_sprite.update(pos[0]) if activity and event.type == pygame.MOUSEBUTTONDOWN: sceleton_sprite.update(0, True) if not activity and event.type == pygame.MOUSEBUTTONDOWN and generation: activity = True pause = False if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE: pause = True screen.fill((0, 0, 0)) screen.blit(image_fon, (0, y_pos)) platform_sprites.draw(screen) sceleton_sprite.draw(screen) enemy_sprites.draw(screen) shell_sprites.draw(screen) screen.blit(arrow_image, (pos)) if activity: sceleton_sprite.update() platform_sprites.update() enemy_sprites.update() shell_sprites.update() if y_pos < 0: y_pos += cameray mist_sprite.draw(screen) mist_sprite.update() else: victory() generation = False activity = False clock.tick(FPS) if pause and generation: activity = False screen.blit(image_pause, (0, 0)) pygame.display.flip()
def blit(self, screen): screen.blit(self.sprite, self.rect)
def draw(self, screen): screen.blit(self.orange, (self.x, self.y)) self.hitbox = (self.x + 35, self.y + 20, 70, 70)
def draw(self, screen): screen.blit(self.flex_bucks, (self.x, self.y)) self.hitbox = (self.x + 10, self.y, 30, 40)
def level(): global x_first_image, x_second_image, speed_score, progress, x_last_obstacle, speed_koef, multiple_speed, count_obstacles_onlevel, pause pygame.mouse.set_visible(False) intro_text = ['PAUSE'] pause_fon = pygame.Surface((WIDTH, HEIGHT)) pause_fon.convert_alpha(pause_fon) pause_fon.set_alpha(2) font = pygame.font.Font(None, 80) while running: for event in pygame.event.get(): if event.type == pygame.QUIT: terminate() if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE: pause = not pause if pause: for line in intro_text: string_rendered = font.render(line, 1, pygame.Color(255, 255, 255)) intro_rect = string_rendered.get_rect() intro_rect.x = WIDTH // 2 - 40 intro_rect.top = HEIGHT // 2 screen.blit(string_rendered, intro_rect) screen.blit(pause_fon, (0, 0)) pygame.display.flip() if not pause: if not (x_first_image > 0 and x_second_image > 0): while len(objects_sprites) < count_obstacles_onlevel: y = random.randint(0, player_y) x = WIDTH + random.randint(0, 5) * speed_koef progress += 1 choose_obj(x, y) pygame.display.update() if pygame.key.get_pressed()[273]: player.jump = True player.speed = 3 x_first_image, x_second_image = background_scroll( x_first_image, x_second_image, speed_score.speed) objects_sprites.update() if not (x_first_image > player_x and x_second_image > player_x): player_sprite.update() player_sprite.draw(screen) objects_sprites.draw(screen) font = pygame.font.Font(None, 30) text_coord = 50 string_rendered = font.render(str(speed_score.score), 1, pygame.Color('red')) intro_rect = string_rendered.get_rect() text_coord += 10 intro_rect.top = text_coord intro_rect.x = 10 text_coord += intro_rect.height screen.blit(string_rendered, intro_rect) pygame.display.flip() clock.tick(fps) progress_counter()
def draw(self, screen): screen.blit(self.heart, (self.x, self.y))
def Menu_Background(): background = pg.image.load('background.png') screen.blit(background, (0, 0)) pg.display.update()
def redrawGameWindow(screen, background, chars, terr, background_x, haduk, items, steps, enemiesCount): relative_background_x = background_x[0] % background.get_rect().width screen_width = background.get_rect().width screen.blit(background, (relative_background_x - screen_width, 0)) if relative_background_x < screen_width: screen.blit(background, (relative_background_x, 0)) for dog in chars['bulldog']: dog.option = 1 for knight in chars['knight']: knight.option = 1 if chars['player'].walkCount + 1 >= 59: chars['player'].walkCount = 0 if chars['player'].left: screen.blit(chars['player'].walkLeft[chars['player'].walkCount // 10], (chars['player'].x, chars['player'].y)) chars['player'].walkCount += 1 elif chars['player'].right: screen.blit(chars['player'].walkRight[chars['player'].walkCount // 10], (chars['player'].x, chars['player'].y)) chars['player'].walkCount += 1 if chars['player'].x >= screen_width * 4 / 5 - chars[ 'player'].width * 3 - chars['player'].vel: background_x[0] -= 5 steps[0] += 5 chars['player'].platform_end -= 5 chars['player'].platform_beg -= 5 for buck in items['cash']: buck.x -= 5 for orange in items['oranges']: orange.x -= 5 if terr['platforms']: for x in terr['platforms']: x.x -= 5 if x.x < -(x.width * 3): terr['platforms'].pop(0) for dog in chars['bulldog']: if dog.onPlatform: dog.path[0] -= 5 dog.path[1] -= 5 if dog.path[1] < 0: chars['bulldog'].pop(chars['bulldog'].index(dog)) enemiesCount[0] -= 1 if dog.isRight: dog.option = 2 for knight in chars['knight']: if knight.onPlatform: knight.path[0] -= 5 knight.path[1] -= 5 if knight.path[1] < 0: chars['knight'].pop(chars['knight'].index(knight)) enemiesCount[0] -= 1 if knight.isRight: knight.option = 2 else: if chars['player'].wasLeft: screen.blit(chars['player'].player_standL, (chars['player'].x, chars['player'].y)) else: screen.blit(chars['player'].player_standR, (chars['player'].x, chars['player'].y)) chars['player'].hitbox = (chars['player'].x, chars['player'].y, 24, 36) #pg.draw.rect(screen, (255,0,0), chars['player'].hitbox, 2) for had in haduk: had.draw(screen) for x in terr['platforms']: x.draw(screen) for bull in chars['bulldog']: bull.draw(screen) for kni in chars['knight']: kni.draw(screen) for buck in items['cash']: buck.draw(screen) for citrus in items['oranges']: citrus.draw(screen) items['hud_cash'].clear() for hc in range(chars['player'].coins): items['hud_cash'].append(characters.Bucks(hc * 25, 48)) for money in items['hud_cash']: money.draw(screen) items['heart'].clear() for ht in range(chars['player'].health): items['heart'].append(characters.Heart(ht * 48, 0)) for love in items['heart']: love.draw(screen) items['oranges_s'].clear() for ora in range(chars['player'].oranges): items['oranges_s'].append(characters.Orange_Small(ora * 28, 84)) for small_citrus in items['oranges_s']: small_citrus.draw(screen) for y in range(24, 18, -1): for x in range(33): terr['dirt'].draw(screen, x * terr['dirt'].width, y * terr['dirt'].height) for x in range(33): terr['grass'].draw(screen, x * terr['grass'].width, 570) #take screen_height and - dirt layers pg.display.update()
def draw(self, screen): screen.blit(self.orange_small, (self.x, self.y))
def draw(self): screen.blit(self.image, self.rect)
def draw(self, screen): if self.facing == 1: screen.blit(self.haduken, (self.x, self.y)) else: screen.blit(self.hadukenL, (self.x, self.y)) self.hitbox = (self.x + 8, self.y + 6, 26, 22)
isWinner.start() players.clear() balls.clear() random_start = currentXPos = randrange(0, size[0]) for i in range(NUMBER_PLAYERS - 1): players.append( Player(weights=isWinner.weights, bias=isWinner.bias, start=False)) balls.append(Ball(currentXPos=random_start)) players.append(isWinner) balls.append(Ball(currentXPos=random_start)) font = pygame.font.SysFont('ComicSans', FONT_SIZE, False, False) screen.blit(font.render("Score: " + str(bestScore), True, BLACK), START_POINT_DESC) screen.blit(font.render("Alive: " + str(isAlive), True, BLACK), [START_POINT_DESC[0], START_POINT_DESC[1] + 20]) screen.blit(font.render("Generation: " + str(generation), True, BLACK), [START_POINT_DESC[0], START_POINT_DESC[1] + 2 * 20]) screen.blit( font.render( "Best score in game: " + str(highestScoreAllTime) + " in Generation: " + str(generationFromHighestScore), True, BLACK), [START_POINT_DESC[0], START_POINT_DESC[1] + 3 * 20]) pygame.display.flip() clock.tick(200) pygame.quit()
def draw_text(self, text, size, color, x, y): self.font = loadCustomFont('Fonts/Amatic_SC/amatic_sc.ttf', 72) text_surface = self.font.render(text, True, color) text_rect = text_surface.get_rect() text_rect.midtop = (x, y) screen.blit(text_surface, text_rect)
if e.key == pygame.K_DOWN: down = False if e.type == pygame.K_ESCAPE: pygame.display.quit() exit() """Отрисовка объектов""" info_string.fill((150, 150, 150)) """отображение героя""" hero.update(left, right, up, down) camera.update(hero) for e in sprite_group: screen.blit(e.image, camera.apply(e)) """отрисовка строений""" for e in city_group: screen.blit(e.image, camera.apply(e)) """отрисовка шрифтов""" ind = 0 for e in city_group: screen.blit(e.image, camera.apply(e)) screen.blit(city_font.render(city_name_list[ind], 1, (50, 50, 150)), camera.apply(e)) ind += 1 screen.blit(hero.image, camera.apply(hero))