def __init__(self, screen): super(Fruit, self).__init__() self.screen = screen ss = SpriteSheet.spritesheet('images/Fruits.png') self.fruits = [ss.image_at((0,0,32,32)), ss.image_at((32,0,32,32)), ss.image_at((64,0,32,32)), ss.image_at((96,0,32,32)), ss.image_at((128,0,32,32))] self.values = [100, 300, 500, 700, 1000] index = random.randint(0,4) img, self.value = self.fruits[index], self.values[index] img = pygame.transform.scale(img, (25, 25)) self.rect = img.get_rect() self.image = img self.rect.x, self.rect.y = 1000,1000 # hide fruit offscreen self.font = SysFont(None, 32, italic=True) self.score_image = self.font.render(str(self.value), True, (255, 255, 255), (0,0,0)) self.randomint = 101 self.fruitspawned = False self.destroyed = False # how long to show score self.frames = 0
def __init__(self, ai_settings, screen, sound=True): super().__init__() self.screen = screen self.ai_settings = ai_settings self.possible_scores = ai_settings.ufo_point_values self.score = None self.image = pygame.image.load('resources/Images/UFO Alien-1.png') self.rect = self.image.get_rect() self.score_image = None self.font = SysFont(None, 32, italic=True) self.prep_score() self.death_frames = [] self.death_index = None self.death_frames.append(pygame.image.load('resources/Images/UFO Alien-3.png')) self.death_frames.append(self.score_image) self.last_frame = None self.wait_interval = 500 self.entrance_sound = pygame.mixer.Sound('resources/Sounds/ufo_lowpitch.wav') self.death_sound = pygame.mixer.Sound('resources/Sounds/invaderkilled.wav') self.entrance_sound.set_volume(0.6) self.channel = ai_settings.ufo_channel self.speed = ai_settings.ufo_speed * (choice([-1, 1])) self.rect.x = 0 if self.speed > 0 else ai_settings.screen_width self.rect.y = ai_settings.screen_height * 0.1 self.dead = False if sound: self.channel.play(self.entrance_sound, loops=-1)
class Scoreboard: def __init__(self, ai_settings, screen, stats): self.screen = screen self.screen_rect = screen.get_rect() self.ai_settings = ai_settings self.stats = stats self.text_color = (255, 255, 0) self.font = SysFont(None, 48) self.score_image = None self.score_rect = None self.high_score_image = None self.high_score_rect = None self.level_image = None self.level_rect = None self.ships = None self.prep_score() self.prep_high_score() self.prep_level() self.prep_ships() def prep_score(self): rounded_score = int(round(self.stats.score, -1)) score_str = 'Score: {:,}'.format(rounded_score) self.score_image = self.font.render(score_str, True, self.text_color, self.ai_settings.bg_color) self.score_rect = self.score_image.get_rect() self.score_rect.right = self.screen_rect.right - 20 self.score_rect.top = 20 def prep_high_score(self): high_score = int(round(self.stats.high_score, -1)) high_score_str = 'High Score: {:,}'.format(high_score) self.high_score_image = self.font.render(high_score_str, True, self.text_color, self.ai_settings.bg_color) self.high_score_rect = self.high_score_image.get_rect() self.high_score_rect.centerx = self.screen_rect.centerx self.high_score_rect.top = self.score_rect.top def prep_level(self): self.level_image = self.font.render('Level: ' + str(self.stats.level), True, self.text_color, self.ai_settings.bg_color) self.level_rect = self.level_image.get_rect() self.level_rect.right = self.score_rect.right self.level_rect.top = self.score_rect.bottom + 10 def prep_ships(self): self.ships = Group() for ship_number in range(self.stats.ships_left): ship = Ship(self.ai_settings, self.screen) ship.rect.x = 10 + ship_number * (ship.rect.width + 5) ship.rect.y = 10 self.ships.add(ship) def show_score(self): self.screen.blit(self.score_image, self.score_rect) self.screen.blit(self.high_score_image, self.high_score_rect) self.screen.blit(self.level_image, self.level_rect) self.ships.draw(self.screen)
def __init__(self, ai_settings, screen, stats): # creates the scoreboard self.screen = screen self.screen_rect = screen.get_rect() self.ai_settings = ai_settings self.stats = stats # Font settings for score information self.text_color = (255, 255, 0) self.font = SysFont(None, 48) # initial score image self.score_image = None self.score_rect = None # high score image self.high_score_image = None self.high_score_rect = None # level image self.level_image = None self.level_rect = None # ships left self.ships = None # initialize score, high score, level, ships self.prep_score() self.prep_high_score() self.prep_level() self.prep_ships()
def __init__(self, ai_settings, screen, stats): self.screen = screen self.screen_rect = screen.get_rect() self.ai_settings = ai_settings self.stats = stats # Font self.text_color = (238, 232, 170) self.font = SysFont(None, 48) # set score image self.score_image = None self.score_rect = None # set hs image self.hs_image = None self.hs_rect = None # level image self.level_image = None self.level_rect = None # ships left self.ships = None # initialize score, high score, level, ships self.prep_score() self.prep_hs() self.prep_level() self.prep_ships()
def __init__(self, bg_color, screen): self.bg_color = bg_color self.screen = screen self.text = 'Pong' self.text_color = (255, 255, 255) self.font = SysFont(None, 48) self.image = None self.image_rect = None
def __init__(self, bg_color, screen): self.bg_color = bg_color self.screen = screen self.text = 'AI -- No Walls' self.text_color = (0, 255, 0) self.font = SysFont(None, 36) self.image = None self.image_rect = None
def __init__(self, bot: 'Bot'): self.bot = bot self.bot.add_callback(self.run) pygame.init() self.win_size = (bot.game.map.width * CELL_SIZE, bot.game.map.height * CELL_SIZE) self.update_display_size() pygame.mouse.set_cursor(*pygame.cursors.tri_right) self.font = SysFont("vcrosdmono", 16) self.clock = pygame.time.Clock() self.speed_up = DEFAULT_SPEEDUP self.pause = False self.selected = None
def __init__(self, bg_color, screen, text, text_size=48, text_color=(0, 0, 0)): self.bg_color = bg_color self.screen = screen self.text = text self.text_color = text_color self.font = SysFont(None, text_size) self.image = None self.image_rect = None
def __init__(self, bg_color, screen, text, text_size=56, text_color=(255, 255, 255)): self.bg_color = bg_color self.screen = screen self.text = text self.text_color = text_color self.font = SysFont("Broadway", text_size) self.image = None self.image_rect = None
def __init__(self, ai_settings: Settings, screen: SurfaceType, msg: str): self._screen = screen self._screen_rect = screen.get_rect() self._width, self._height = 200, 50 self._button_color = (0, 255, 0) self._text_color = (255, 255, 255) self._font = SysFont(None, 48) self.rect = pygame.Rect(0, 0, self._width, self._height) self.rect.center = self._screen_rect.center self._prep_msg(msg)
def __init__(self, settings, screen, msg, y_factor=0.65): self.settings = settings self.screen = screen self.screen_rect = screen.get_rect() self.button_color = (0, 255, 0) self.text_color = (255, 255, 255) self.alt_color = (0, 255, 0) self.font = SysFont(None, 48) self.y_factor = y_factor self.msg = msg self.msg_image, self.msg_image_rect = None, None self.prep_msg(self.text_color)
def __init__(self, ai_settings: Settings, screen: SurfaceType, stats: GameStats): self._screen = screen self._screen_rect = screen.get_rect() self._ai_settings = ai_settings self._stats = stats self._text_color = 90, 200, 50 self._font = SysFont(None, 48) self.prep_score() self.prep_high_score() self.prep_level() self.prep_ships()
def __init__(self, location=(0, 0), size=(0, 0), caption="", font=None, fontColor=(255, 255, 255), fixedToCaption=True): super(Label, self).__init__(location=location, size=size) self.__font = SysFont('arial', 20) if (font == None) else font self.fixedToCaption = fixedToCaption self.caption = caption self.fontColor = fontColor Label.graphicInit(self)
def __init__(self): self.width = 0 self.height = 0 self.full_screen = True self.fps = 0 self.caption = 'Adventure' self.active_game = True self.statistics = False self.background_path = 'Gamedata/Backgrounds/fon.png' self.max_distance = 0 self.total_distance = 0 self.sound = True self.font = SysFont(None, 45) self._screen = None self._camera = None
def __init__(self, ai_settings, screen, msg): self.ai_settings = ai_settings self.screen = screen self.screen_rect = screen.get_rect() # Dimensions and properties of the button self.width, self.height = 200, 50 self.button_color = (0, 255, 0) self.text_color = (255, 255, 255) self.font = SysFont(None, 48) # Build button rect and center it self.rect = Rect(0, 0, self.width, self.height) self.rect.center = self.screen_rect.center # Prep button message only once self.msg_image, self.msg_image_rect = None, None self.prep_msg(msg)
class Button: def __init__(self, ai_settings, screen, msg): self.ai_settings = ai_settings self.screen = screen self.screen_rect = screen.get_rect() # Dimensions and properties of the button self.width, self.height = 200, 50 self.button_color = (0, 255, 0) self.text_color = (255, 255, 255) self.font = SysFont(None, 48) # Build button rect and center it self.rect = Rect(0, 0, self.width, self.height) self.rect.center = self.screen_rect.center # Prep button message only once self.msg_image, self.msg_image_rect = None, None self.prep_msg(msg) def prep_msg(self, msg): """Turn msg into a rendered image and center it on the button""" self.msg_image = self.font.render(msg, True, self.text_color, self.button_color) self.msg_image_rect = self.msg_image.get_rect() self.msg_image_rect.center = self.rect.center def draw_button(self): """Draw button and then draw message""" self.screen.fill(self.button_color, self.rect) self.screen.blit(self.msg_image, self.msg_image_rect)
class Board: """Generic board class for displaying score type information""" def __init__(self, config, screen, text, text_color, border_color): # display info and config self.screen = screen self.screen_rect = screen.get_rect() self.config = config # font, text, image settings self.text = str(text) self.text_color = text_color self.font = SysFont(None, 48) self.border = True self.width, self.height = self.font.size(text) self.width, self.height = (self.width * 2), (self.height + self.height / 6) self.rect = Rect(0, 0, self.width, self.height) self.border_color = border_color self.image = None self.image_rect = None def prep_board(self): """Render text as a displayable image""" raise NotImplementedError('Objects inheriting from Board must implement a prep_board method') def place_board(self): """Place the board on the screen""" raise NotImplementedError('Objects inheriting from Board must implement a place_board method') def show(self): """Draw the board to the screen""" if self.border: draw.rect(self.screen, self.border_color, self.rect, 3) self.screen.blit(self.image, self.image_rect)
class Button: def __init__(self, ai_settings: Settings, screen: SurfaceType, msg: str): self._screen = screen self._screen_rect = screen.get_rect() self._width, self._height = 200, 50 self._button_color = (0, 255, 0) self._text_color = (255, 255, 255) self._font = SysFont(None, 48) self.rect = pygame.Rect(0, 0, self._width, self._height) self.rect.center = self._screen_rect.center self._prep_msg(msg) def _prep_msg(self, message: str): # print(self._text_color, self._button_color, sep=" -> ") self._msg_image = self._font.render(message, True, self._text_color, self._button_color) self._msg_image_rect = self._msg_image.get_rect() self._msg_image_rect.center = self.rect.center def draw_button(self): self._screen.fill(self._button_color, self.rect) self._screen.blit(self._msg_image, self._msg_image_rect)
def __init__(self, settings, screen, msg, y_factor=0.65): self.settings = settings self.screen = screen self.screen_rect = screen.get_rect() # Dimensions and properties of the button self.button_color = (0, 0, 0) self.text_color = (0, 0, 0) self.alt_color = (0, 0, 255) self.font = SysFont(None, 48) self.y_factor = y_factor # Prep button message self.msg = msg self.msg_image, self.msg_image_rect = None, None self.prep_msg(self.text_color)
class Titletext: # Text def __init__(self, bg_color, screen, text, text_size=56, text_color=(0, 0, 0)): self.bg_color = bg_color self.screen = screen self.text = text self.text_color = text_color self.font = SysFont(None, text_size) self.image = None self.image_rect = None def prep_image(self): self.image = self.font.render(self.text, True, self.text_color, self.bg_color) self.image_rect = self.image.get_rect() def blitme(self): self.screen.blit(self.image, self.image_rect)
class Title: """Represents the title text to be displayed on screen""" def __init__(self, bg_color, screen, text, text_size=50, text_color=(255, 0, 0)): self.bg_color = bg_color self.screen = screen self.text = text self.text_color = text_color self.font = SysFont(None, text_size) self.image = None self.image_rect = None def prep_image(self): """Render the subtitle text as an image""" self.image = self.font.render(self.text, True, self.text_color, self.bg_color) self.image_rect = self.image.get_rect() def blitme(self): """Draw the subtitle's image to the screen""" self.screen.blit(self.image, self.image_rect)
def __init__(self, settings, screen, msg, y_factor=0.60): self.settings = settings self.screen = screen self.screen_rect = screen.get_rect() # set button self.button_color = (51, 161, 201) self.text_color = (255, 255, 255) self.alt_color = (187, 255, 255) self.font = SysFont(None, 48) self.y_factor = y_factor # set message self.msg = msg self.msg_image, self.msg_image_rect = None, None self.prep_msg(self.text_color)
def __init__(self, config, screen, text, text_color, border_color): # display info and config self.screen = screen self.screen_rect = screen.get_rect() self.config = config # font, text, image settings self.text = str(text) self.text_color = text_color self.font = SysFont(None, 48) self.border = True self.width, self.height = self.font.size(text) self.width, self.height = (self.width * 2), (self.height + self.height / 6) self.rect = Rect(0, 0, self.width, self.height) self.border_color = border_color self.image = None self.image_rect = None
def __init__(self, ai_settings, screen, stats): self.screen = screen self.screen_rect = screen.get_rect() self.ai_settings = ai_settings self.stats = stats self.text_color = (255, 255, 0) self.font = SysFont(None, 48) self.score_image = None self.score_rect = None self.high_score_image = None self.high_score_rect = None self.level_image = None self.level_rect = None self.ships = None self.prep_score() self.prep_high_score() self.prep_level() self.prep_ships()
def __init__(self, ai_settings, screen, sound=True): super().__init__() self.screen = screen self.ai_settings = ai_settings self.possible_scores = ai_settings.UFO_pts self.score = None self.image = [pygame.image.load('images/face.png'), pygame.image.load('images/face1.png'), pygame.image.load('images/face2.png'), pygame.image.load('images/face3.png')] self.image_index = 0 self.image = self.image[self.image_index] self.rect = self.image.get_rect() self.score_image = None self.font = SysFont(None, 32, bold=True) self.prep_score() self.death_frames = [pygame.image.load('images/deaths/deadface.png'), pygame.image.load('images/deaths/deadface1.png'), pygame.image.load('images/deaths/deadface2.png'), pygame.image.load('images/deaths/deadface3.png'), pygame.image.load('images/deaths/deadface4.png'), pygame.image.load('images/deaths/deadface5.png')] self.death_index = None # self.death_frames.append(pygame.image.load('images/deaths/deadface.png')) self.death_frames.append(self.score_image) self.last_frame = None self.wait_interval = 500 self.entrance_sound = pygame.mixer.Sound('sound/UFO_entrance.wav') self.death_sound = pygame.mixer.Sound('sound/UFO_death.wav') self.entrance_sound.set_volume(0.6) self.channel = ai_settings.ufo_channel self.speed = ai_settings.ufo_spd * (choice([-1, 1])) self.rect.x = 0 if self.speed > 0 else ai_settings.screen_width self.rect.y = ai_settings.screen_height * 0.1 self.dead = False if sound: self.channel.play(self.entrance_sound, loops=-1)
def __init__(self, name, size, bold=0, italic=0): val = name, size if FontPool.has_key(val): font = FontPool[val] else: font = SysFont(name, size, bold, italic) FontPool[val] = font self.font = font if size >= 20: self.text = self.textshadowed
def __init__(self, ai_settings, screen): """Initialize ufo settings.""" super().__init__() # screen, settings, score values self.screen = screen self.ai_settings = ai_settings self.possible_scores = ai_settings.ufo_points self.score = None # images, score text self.image = pygame.image.load('images/ufo.png') self.rect = self.image.get_rect() self.score_image = None self.font = SysFont(None, 32, italic=True) self.prep_score() # death frames self.death_frames = [] self.death_index = None self.death_frames.append( pygame.image.load('images/ufo_death/ufo_death.png')) self.death_frames.append(self.score_image) self.last_frame = None self.wait_interval = 500 # sound self.entrance_sound = pygame.mixer.Sound('sounds/ufo_sound.wav') self.death_sound = pygame.mixer.Sound('sounds/ufo_death.wav') self.entrance_sound.set_volume(0.6) self.channel = ai_settings.ufo_channel # initial position, speed/direction self.speed = ai_settings.ufo_speed_factor * (choice([-1, 1])) self.rect.x = 0 if self.speed > 0 else ai_settings.screen_width self.rect.y = ai_settings.screen_height * 0.1 # death flag self.dead = False # Play sound while its on screen self.channel.play(self.entrance_sound, loops=-1)
def __init__(self, config, screen, msg): self.config = config self.screen = screen self.screen_rect = screen.get_rect() # Dimensions and properties of the button self.button_color = (0, 255, 0) self.text_color = (255, 255, 255) self.font = SysFont(None, 48) # Build button rect and center it self.width, self.height = self.font.size(msg) self.width, self.height = (self.width + self.width / 4), (self.height + self.height / 4) self.rect = Rect(0, 0, self.width, self.height) self.rect.centerx = (self.config.screen_width // 2) self.rect.centery = int(self.config.screen_height * 0.75) # Prep button message only once self.msg_image, self.msg_image_rect = None, None self.prep_msg(msg)
class Button: """Represents a click-able button""" def __init__(self, config, screen, msg): self.config = config self.screen = screen self.screen_rect = screen.get_rect() # Dimensions and properties of the button self.button_color = (0, 255, 0) self.text_color = (255, 255, 255) self.font = SysFont(None, 48) # Build button rect and center it self.width, self.height = self.font.size(msg) self.width, self.height = (self.width + self.width / 4), (self.height + self.height / 4) self.rect = Rect(0, 0, self.width, self.height) self.rect.centerx = (self.config.screen_width // 2) self.rect.centery = int(self.config.screen_height * 0.75) # Prep button message only once self.msg_image, self.msg_image_rect = None, None self.prep_msg(msg) def check_button(self, mouse_x, mouse_y): """Check if the given button has been pressed""" if self.rect.collidepoint(mouse_x, mouse_y): return True else: return False def prep_msg(self, msg): """Turn msg into a rendered image and center it on the button""" self.msg_image = self.font.render(msg, True, self.text_color, self.config.bg_color) self.msg_image_rect = self.msg_image.get_rect() self.msg_image_rect.center = self.rect.center def draw_button(self): """Draw button and then draw message""" draw.rect(self.screen, self.button_color, self.rect, 3) self.screen.blit(self.msg_image, self.msg_image_rect)