Хелпикс

Главная

Контакты

Случайная статья





game_stats.py. scoreboard.py



game_stats. py

 

 

class GameStats():

" " " Track statistics for Alien Invasion. " " "

 

def __init__(self, ai_settings):

   " " " Initialize statistics. " " "

self. ai_settings = ai_settings

self. reset_stats()

 

   # Start game in an inactive state.

self. game_active = False

 

   # High score should never be reset.

self. high_score = 0

 

def reset_stats(self):

   " " " Initialize statistics that can change during the game. " " "

self. ships_left = self. ai_settings. ship_limit

self. score = 0

self. level = 1

 

 

***********************************************************************

scoreboard. py

 

import pygame. font

from pygame. sprite import Group

 

from ship import Ship

 

class Scoreboard():

" " " A class to report scoring information. " " "

 

def __init__(self, ai_settings, screen, stats):

   " " " Initialize scorekeeping attributes. " " "

self. screen = screen

self. screen_rect = screen. get_rect()

self. ai_settings = ai_settings

self. stats = stats

 

   # Font settings for scoring information.

self. text_color = (30, 30, 30)

self. font = pygame. font. SysFont(None, 48)

 

   # Prepare the initial score images.

self. prep_score()

self. prep_high_score()

self. prep_level()

self. prep_ships()

 

def prep_score(self):

   " " " Turn the score into a rendered image. " " "

rounded_score = int(round(self. stats. score, -1))

score_str = " {:, }". format(rounded_score)

self. score_image = self. font. render(score_str, True, self. text_color,

self. ai_settings. bg_color)

 

   # Display the score at the top right of the screen.

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):

   " " " Turn the high score into a rendered image. " " "

high_score = int(round(self. stats. high_score, -1))

high_score_str = " {:, }". format(high_score)

self. high_score_image = self. font. render(high_score_str, True,

self. text_color, self. ai_settings. bg_color)

 

   # Center the high score at the top of the screen.

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):

   " " " Turn the level into a rendered image. " " "

self. level_image = self. font. render(str(self. stats. level), True,

self. text_color, self. ai_settings. bg_color)

 

   # Position the level below the score.

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):

   " " " Show how many ships are left. " " "

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

ship. rect. y = 10

self. ships. add(ship)

 

def show_score(self):

   " " " Draw score to the screen. " " "

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)

   # Draw ships.

self. ships. draw(self. screen)

 

*********************************************************************



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.